web-dev-qa-db-ja.com

iOSアプリを逆コンパイルする方法は?

IOSアプリのコードを見たいのですが。

ダウンロードしたアプリは.debです。

最初の質問:iOSに.debファイルをインストールすることは可能ですか、それとも間違ったファイルをダウンロードしましたか?

.debファイルを解凍した後、.nib、.storyboard、その他のファイルを含むいくつかのファイルを取得しました。

私の主な質問は、これらの.nibファイルを逆コンパイルする方法は?

NibToXibConverterを使用してこれらのファイルを逆コンパイルしようとしましたが、成功しませんでした。

11
ahmadhhh

最初の質問への回答:

間違ったファイルをダウンロードしたと思います。 .deb iOS用のファイルはジェイルブレイクコミュニティでは一般的であり、アプリではありません。Cydiaのすべてのものが.debさん。アプリが脱獄シーン用に特別に作成されている場合は、脱獄したデバイスで Cydiaの自動インストール機能 を使用してインストールを試みることができます。

主な質問への回答:

これは、iOSアプリの逆コンパイルと変更に関する一般情報です(nibsに固有ではありませんが、それでも役立つ場合があります)。

iOSアプリは.ipaアーカイブ。これは通常のZipアーカイブです。これらには通常、Mach-Oファイル形式の1つの実行可能ファイルと、.plist、サウンド、画像-xcodeプロジェクトに含めるすべてのリソース。実行可能ファイルの逆コンパイルは、jailbroken iDeviceでのみ可能です。これは、現在のデバイスで特に暗号化されており、バイナリを復号化するためのマジックキーがデバイスのCPU内に焼き付けられているためです。ここでの暗号化システムは FairPlay と呼ばれます。

簡単に説明すると、そのバイナリを復号化する1つの方法は、ジェイルブレイクしたデバイスにアプリをインストールし、Cydiaからダウンロードできるデバッガー(gdb)を使用してコマンドラインから起動することです。どこかにブレークポイントを設定する必要があり、コードの実行がブレークポイントで一時停止すると、デバイスramのメモリダンプが実行されます。これが復号化されたビンです。

したがって、復号化されたバイナリがある場合、「class-dump」と呼ばれる1つのツールを実行し、アプリがObjective Cで記述されている場合は、宣言されたクラスとそのメソッドの情報を取得できます。この情報を知ったら、 「Cydia Subtstrate」または「Mobile Substrate」を使用してアプリで使用されるいくつかのクラスから指定されたメソッド。実際、これがジェイルブレイクされたiOSの微調整のすべての方法です。基本的には、メソッド呼び出しをフックし、そのメソッドが呼び出されると、実装を使用します。さらに、実装は元の実装を呼び出すことができます。これは、小さなコードを追加したい場合に非常に役立ちます。

Swiftでこれらのことが可能かどうかはわかりませんが、cordova、phonegapなどで実行されているようなハイブリッドアプリを扱っている場合は、JavaScriptのソースがすべて表示されます。 「ipa」ファイル。さらに、ジェイルブレイクしたデバイスがあり、アプリがファイルシステムのどこにインストールされているかを見つける場合は、そのjavascriptコードを直接変更できます(通常は/var/containers/Bundle/Application/uuid_for_your_app/)。ただし、パッチを適用したバージョンを入手して再配布する方法はないと思います(間違っている場合は修正してください)。

19
Stoyan