SOファイルを逆コンパイルする(IDA_Pro)

目次

概要

ダウンロード

インストール

使用

終了 (デフォルトで十分です)


概要

  Android アプリケーションの開発言語は Java ですが、Java 層のコードは逆コンパイルしやすく、C/C++ プログラムの逆コンパイルはより難しいため、現在、多くの Android アプリケーションのコア部分は NDK を使用して開発されています。NDK 開発を使用すると、C/C++ プログラムをコンパイルし、最終的に so ファイルを生成できます。so ファイルはバイナリ ファイルなので、直接解析することはできないため、逆コンパイル ツール IDA Pro を使用する必要があります。IDA Pro は、SO ファイルを逆アセンブルしてバイナリ コードをアセンブリ言語に変換し、IDA Pro の魔法の F5 機能を使用してアセンブリ言語を C/C++ プログラムに逆コンパイルすることもできます。

ダウンロード

リンク:  Baidu Netdisk - リンクは存在しません パスワード: tvsn

代替リンク: Baidu ネットワーク ディスク、抽出コードの パスワードを入力してください: kljo

IDA_Pro_v7.0_Portable.zip をダウンロードするだけです。

インストール

直接解凍するだけです。

注: 緑色バージョンの解凍パスには中国語を含めることはできません。また、パスの長さは 72 文字を超えることはできません。(Pythonモジュール自体のバグ)

使用

ida64.exe をダブルクリックしてソフトウェア IDA Pro を開きます

私の理解によれば、逆コンパイルしたい so ファイルが arm64-v8a ディレクトリにある場合は、ida64.exe ファイルのみを開くことができ、逆コンパイルしたい so ファイルが armeabi ディレクトリにある場合は、ida しか開くことができません。 。EXE。しかし、ここでの私のテスト結果は次のとおりです。

ida64.exe : arm64-v8a ディレクトリにある so ファイルを開く (呼び出されたメソッド名が見つかる) のは正常ですが、armeabi ディレクトリにある so ファイルを開くのは正常ではありません (呼び出されるメソッド名が見つからない) );

ida.exe : arm64-v8a ディレクトリの so ファイルと armeabi ディレクトリの so ファイルを開くことは正常ではありません (呼び出されたメソッド名が見つかりません)。

したがって、私の現在の操作は、ダブルクリックして ida64.exe を開き、arm64-v8a ディレクトリ内の so ファイルを逆コンパイルすることです。

so ファイルを上の空の領域にドラッグし、「ELF64 for ARM64 (Shared object) [elf64.ldw]」オプションを選択して、「OK」ボタンをクリックします。

ダブルクリックして ida64.exe を開いたので、開く必要がある so ファイルは armeabi ディレクトリではなく arm64-v8a ディレクトリにあることに注意してください。(HelloWorld プロジェクトを例に挙げます)

しばらく待つと、soファイルを逆アセンブルしたアセンブリコードが表示されます。

表示する関数を見つけます (通常は、HelloWorld プロジェクトのstringFromJNI メソッドなど、プロジェクトで呼び出される最初の関数を見つけます)。

キーボードの F5 を押して、アセンブリ コードを C コードに変換します。

ソースコードは次のとおりです。

終了 (デフォルトで十分です)

おすすめ

転載: blog.csdn.net/s_nshine/article/details/132983436