投稿者:Andrey Batutin、シニアiOS開発者、DataArt。
1回または2回以上、仕事に来た(またはベッドから出たばかりの)ときに、メールに怒った手紙を見つけました。
時々、理由は私の浅瀬でした。 時々-私の同僚の。 そして時にはApple Inc自身でさえも。
しかし、最も致命的なシナリオは、アプリ/リリースビルドでのみ再現されるバグに関連していました。 デバッガを自分のアプリケーションに接続できず、そこで何が起こるかを見ることができないなど、MacBookの前で困惑することはありません。
同様の問題は、 APNSおよびリリース/アドホックアセンブリのトラブルシューティングによって作成されます。
実稼働APNS環境があるアセンブリでは、デバッガーを接続できません。
デバッガーが存在するアセンブリーには、APNS実動プッシュはありません。 しかし、通常は脱落します。
Appleは旧約聖書の神のように、片手でジェイルブレイクがすぐに歴史に残るプラットフォームを提供します(そしてApp Storeの著作権侵害は統計的エラーのレベルのままです)、もう一方は開発者を貧しい親relative、小さなオリバー・ツイストのように感じさせます。
吹き替え:「おじさん、別の配布証明書をください...」
平均的なプログラマーにとって、iOSアプリのリリース/アプリ構築で何かをすることはほとんど不可能でした。 リリース前に終了する方が簡単でした。
要するに:
リリースビルドは配布証明書によって署名され、配布プロビジョニングプロファイルを使用します。 資格により、デバッガーをアプリケーションプロセスにアタッチできません。 さらに、App Storeからipaをダウンロードすると、バイナリも暗号化されます。 App Extensionsは個別に署名されます。
つまり、アプリケーションの作成者は、プロビジョニングプロファイルを使用して証明書でApp Storeアセンブリを取得し、再署名できるようです。 しかし、あなたはまだそれをする方法を知る必要があります。 しかし、その後でも、デバッガーをアプリケーションプロセスに接続する方法についての疑問は未解決のままです。
したがって、開発段階でのセットアップを行わないことに専念する必要があります。 そして、アプリケーションがApp Storeを離れる前にすべてのバグをキャッチします。 そして、ログ、ログの神のためのより多くのログ!
しかし、最近、新たな希望が地平線上に迫ってきました。
前のパートでは、ダイナミックコードインジェクションのすばらしいフレームワークであるFridaに会いました。 そして、優れたプロジェクトFoodSnifferでSSLピン留めをバイパスしました 。
この記事では、Fridaに基づいて作成されたフレームワークに精通します。これにより、iOSアプリケーションのリリースビルドの操作が大幅に容易になります。
異議
異論により、 FridaGadgetをiOSビルドに挿入し、目的の証明書とプロビジョニングプロファイルで再署名することができます。
準備する
まず、FoodSnifferのリリースビルドが必要です。
重要な注意-ipaを作成するときは、「iOSコンテンツのビットコードを含める」をオフにします。
次に、ビルドビルド用のプロビジョニングプロファイルが必要です。
取得するには:
- Xcodeを介してデバイスにアプリケーションをインストールします。
- FinderでFoodSniffer.appを見つけます。
- FoodSnifferバンドルに移動します。
- embedded.mobileprovisionをそこからリリースipaのフォルダーにコピーします。
次のようなものが得られるはずです。
その後、 指示に従って異議をインストールします 。 virtualenvオプションの使用を強くお勧めします。
異議申し立てに加えて、パッチを適用したアプリケーションをデバイスで実行するには、 ios-deployが必要です。
アプリケーションに再署名してください!
ターミナルで、必要なコードサインIDのハッシュを見つけます。
セキュリティfind-identity -pコード署名-v
386XXX IDは、Xcodeを介したインストール中にアプリケーションが署名したバッチ証明書に対応しているため、プロビジョニングプロファイルを取得したため、386XXX IDに関心があります。
FridaGadgetを挿入し、アプリケーションに再署名します。
異論patchipa --source FoodSniffer / FoodSniffer.ipa --codesign-signature 386XXX --provision-file embedded.mobileprovision
その結果、 FoodSniffer-frida-codesigned.ipaを取得する必要があります。
FridaGadgetをインストールして接続するには、 ios-deployが必要です。 これは重要なステップです-iTunesまたはXcodeを介してデバイスにipaをインストールするだけでは、FridaGadgetへの接続は機能しません。
FoodSniffer-frida-codesigned.ipaを解凍した後 :
FoodSniffer-frida-codesigned.ipaを解凍します
デバイスでパッチを適用したアプリケーションを起動します。
ios-deploy --bundleペイロード/ FoodSniffer.app -W -d
すべてが順調に進んだ場合、アプリケーションはデバイス上で起動するはずです。ターミナルには次のように表示されます。
次に、別のターミナルタブで、異議をFridaGadgetに接続します。
異議申し立て
利益!
異議申し立てが提供するバンズ
SSLピンニングバイパス
ここではすべてが簡単です:
ios sslpinning disable
これで、 最初の部分で説明したように、プロキシサーバーを使用してアプリケーションのトラフィックを簡単に監視できます。
UserDefaultsのダンプ
ios nsuserdefaults get
ダンプの最後に、 「mood_state」=「I'm hungry」が表示されます。
アプリキーチェーンをダンプする
iOSキーチェーンダンプ
そして、これが私たちの極秘パスワードです。
SQLiteデータベースからデータを取得します。
アプリケーションでは、ここから sqliteデータベースchinook.dbを追加しました。
異論により、次のようにデータベースに対して直接クエリを実行できます。
- データベースへの接続:
sqlite接続chinook.db
- 彼女へのリクエスト:
sqliteは、アルバムからクエリ選択*を実行します
おわりに
ObjectionとFridaは、iOSアプリケーションのAd HocおよびDistributionビルドでの比較的通常の簡単な作業を最終的に許可します。 彼らは、AppleがiOSアプリケーションを慎重に包む保護層の背後に隠された、自身のアプリケーションに対する力をプログラマに返します。 さらに、ObjectionとFridaは、ジェイルブレイクされていないデバイスで動作します。 さらに、それらは比較的使いやすいです。
彼らと共に、iOSの開発が再び素晴らしいものになることを願っています。 Appleの新しい本社を内部から損なうことを安全に回避します。
ハイパー(有用な)リンク
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/
FoodSniffer iOSアプリのソースコード 。
フリーダテレグラム
@manishrhllに感謝します 。
ご注意 上記のすべては、アプリケーションにのみ適用され、「Tinder」または他の何かを壊そうとしないでください。 それでも機能しません!