Diposting oleh Andrey Batutin, Pengembang iOS Senior, DataArt.Lebih dari sekali atau dua kali, ketika saya datang ke tempat kerja (atau baru saja bangun dari tempat tidur), saya menemukan surat yang marah di surat, intinya adalah bahwa tidak ada yang berfungsi di perakitan appstor aplikasi, dan semuanya perlu segera diperbaiki.
Terkadang alasannya adalah beting saya. Terkadang rekan saya. Dan terkadang bahkan
Apple Inc sendiri .
Tapi skenario paling mematikan terkait dengan bug yang direproduksi hanya pada aplikasi / rilis build. Tidak ada yang membingungkan dan membuat Anda melolong di depan macbook, seperti ketidakmampuan untuk menghubungkan debugger ke aplikasi Anda sendiri dan melihat apa yang terjadi di sana.
Kesulitan serupa dibuat oleh
APNS dan Pemecahan Masalahnya pada rilis / ad-hoc majelis.
Pada majelis yang terdapat lingkungan produksi APNS, Anda tidak bisa menghubungkan debugger.
Pada majelis yang memiliki debugger, tidak ada dorongan produksi APNS. Tapi mereka biasanya jatuh.
Apple, seperti dewa Perjanjian Lama, dengan satu tangan memberikan platform di mana jailbreak akan segera turun dalam
sejarah (dan pembajakan di App Store tetap pada tingkat kesalahan statistik), dan yang lainnya membuat pengembang merasa seperti kerabat yang miskin, Oliver Twist kecil, yang berani meminta lebih banyak bubur.
Sulih suara: "Paman Apple, tolong beri saya sertifikat distribusi lain ..."Bagi kebanyakan programmer, untuk melakukan sesuatu dengan rilis / appstore membangun aplikasi iOS hampir tidak mungkin. Lebih mudah untuk berhenti sebelum rilis.
Singkatnya:
Rilis rilis ditandatangani oleh Sertifikat Distribusi dan menggunakan Profil Penyediaan Distribusi. Hak melarang melampirkan debugger ke proses aplikasi. Plus, saat mengunduh ipa dari App Store, biner juga dienkripsi. Ekstensi Aplikasi ditandatangani secara terpisah.
Artinya, pembuat aplikasi tampaknya dapat mengambil dan menandatangani ulang perakitan App Store dengan sertifikat dengan menggunakan profil penyediaan. Tetapi Anda masih perlu tahu bagaimana melakukannya. Tetapi bahkan setelah itu, pertanyaan tentang bagaimana menghubungkan debugger ke proses aplikasi tetap terbuka.
Karena itu, kita harus fokus secara eksklusif untuk tidak menyesuaikan diri pada tahap pengembangan. Dan tangkap semua bug sebelum aplikasi meninggalkan App Store. Dan log, lebih banyak log untuk dewa log!

Namun baru-baru ini harapan baru telah muncul di cakrawala.

Pada bagian sebelumnya
, kami bertemu dengan Frida, kerangka kerja yang luar biasa untuk injeksi kode dinamis. Dan dilewati dengan itu menyematkan SSL dalam proyek
FoodSniffer yang sangat baik.
Dalam artikel ini, kita akan berkenalan dengan kerangka kerja yang dibuat berdasarkan Frida, yang sangat memudahkan manipulasi rilis rilis aplikasi iOS.
Keberatan memungkinkan
Anda untuk
menyuntikkan FridaGadget ke dalam iOS build dan menandatanganinya kembali dengan sertifikat dan profil penyediaan yang diinginkan.
Persiapan
Pertama, kita membutuhkan rilis FoodSniffer.
Catatan penting - saat membuat ipa, matikan “Sertakan bitcode untuk konten iOS”.

Maka kita membutuhkan profil bawaan untuk build build.
Untuk mendapatkannya:
- Instal aplikasi melalui Xcode pada perangkat.
- Temukan FoodSniffer.app di Finder.

- Buka bundel FoodSniffer.

- Salin embedded.mobileprovision dari sana ke folder dengan ipa rilis Anda.

Anda harus mendapatkan sesuatu seperti berikut:

Setelah ini, instal keberatan sesuai dengan
instruksi . Saya sangat merekomendasikan menggunakan opsi virtualenv.
Selain keberatan, kita perlu
menggunakan ios-deploy untuk menjalankan aplikasi yang ditambal pada perangkat.
Tanda tangani kembali aplikasi!
Di terminal, cari tahu hash identitas tanda kode yang kita butuhkan:
security find-identity -p codesigning -v
Kami tertarik pada identitas 386XXX, karena sesuai dengan sertifikat kumpulan yang digunakan saat aplikasi ditandatangani selama instalasi melalui Xcode, dari mana kami mendapatkan profil penyediaan.
Suntikkan FridaGadget dan tandatangani kembali aplikasi kami:
keberatan patchipa --source FoodSniffer / FoodSniffer.ipa --codesign-signature 386XXX --provision-file embedded.mobileprovision
Sebagai hasilnya, kita harus mendapatkan
FoodSniffer-frida-codesigned.ipa .
Sekarang kita membutuhkan
ios-deploy untuk menginstal dan terhubung ke FridaGadget. Ini adalah langkah penting - jika Anda hanya menginstal ipa di perangkat Anda melalui iTunes atau Xcode, itu tidak akan berfungsi untuk terhubung ke FridaGadget.
Setelah membongkar
FoodSniffer-frida-codesigned.ipa :
unzip FoodSniffer-frida-codesigned.ipaKami meluncurkan aplikasi yang ditambal pada perangkat:
ios-deploy --bundle Payload / FoodSniffer.app -W -dJika semuanya berjalan dengan baik, maka aplikasi harus dimulai pada perangkat, dan di terminal kita akan melihat:

Sekarang di tab terminal lain, sambungkan keberatan ke FridaGadget:
mengeksplorasi keberatan
Untung!
Roti yang disediakan keberatan
SSL Pinning Bypass
Semuanya sederhana di sini:
ios sslpinning nonaktifkan
Sekarang Anda dapat dengan mudah menggunakan Proxy Server untuk memantau lalu lintas aplikasi kami, seperti yang dijelaskan di bagian
pertama .
Dump UserDefaults
ios nsuserdefaults dapatkanDi akhir dump, kita akan melihat
“mood_state” = “Aku lapar”
Gantungan kunci aplikasi sampah
ios dump gantungan kunci
Dan ini kata sandi super rahasia kami.
Mengambil data dari database SQLite.Dalam aplikasi, saya menambahkan
chinook.db database sqlite
dari sini .
Keberatan memungkinkan Anda untuk membuat pertanyaan langsung ke database sebagai berikut.
- Koneksi ke database:
sqlite terhubung dengan chinook.db

- Minta padanya:
sqlite menjalankan kueri pilih * dari album

Kesimpulan
Keberatan dan Frida akhirnya memungkinkan pekerjaan yang relatif normal dan sederhana dengan build Ad Hoc dan Distribution aplikasi iOS. Mereka mengembalikan kepada programmer kekuatan atas aplikasi mereka sendiri, tersembunyi di balik lapisan perlindungan yang Apple dengan hati-hati menyelimuti aplikasi iOS. Plus, Keberatan dan Frida bekerja pada perangkat yang tidak dipenjara. Selain itu, mereka relatif mudah digunakan.
Dengan mereka, saya memiliki harapan untuk membuat pengembangan iOS lebih baik lagi. Aman menghindari merusak markas baru Apple dari dalam.

Tautan hiper (bermanfaat)
Seorang siswa Amsterdam tentang masalah Tanda Kode iOS .
https://labs.mwrinfosecurity.com/blog/repacking-and-resigning-ios-applications/https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2016/october/ios-instrumentation-without-jailbreak/ .
Kode sumber aplikasi iOS FoodSniffer .
Frida TelegramTerima kasih khusus kepada
@manishrhll .
Catatan Semua hal di atas harus diterapkan hanya untuk aplikasi mereka dan tidak mencoba untuk memecahkan "Tinder" atau yang lainnya. Itu masih tidak akan berhasil!