
バージョン間でリネームされた関数を特定することによりAndroid APKの難読化を解除するためのファジー比較ツールで、マルウェアおよび脆弱性分析のためのマッピングファイルとインタラクティブなHTMLレポートを生成します。
🤖 Obfu[DE]scate:Android APKの難読化解除と比較ツール 📱
Obfu[DE]scate は、Android APK の2つのバージョンを難読化解除し比較するプロセスを簡素化するために設計された Python ツールです。難読化の一部として関数名が変更されていても、ファジー比較ロジックを使用して関数間の類似性を特定し、APK バージョン間の変更を明らかにすることができます。
Obfu[DE]scate の開始は簡単です!以下の手順に従ってください:
pip install -r REQUIREMENTS.txt
Obfu[DE]scate は Windows 11 でテストされていますが、他のシステムでも動作するはずです。
Obfu[DE]scate では、動作をカスタマイズするためのいくつかのコマンドラインオプションを提供しています:
2 つの APK ファイルを比較するには、以下のコマンドで Obfu[DE]scate を実行するだけです:
python ObfuDeScate.py -a1 "old_example.apk" -a2 "new_example.apk" -cp "com.example.path"
上記の例では、Obfu[DE]scate は old_example.apk APK 内のクラスパス com.example.path にあるすべての関数をレビューし、new_example.apk 内の同じクラスパスにあるすべての関数と比較します。
Obfu[DE]scate は 2 つの出力ファイルを生成します。改行区切りリスト形式のマッピングファイルと、インタラクティブな HTML ファイルです。これらの出力ファイルには以下が含まれます:
com.chess.play.ObserveGameHelperImpl.d -> com.chess.play.ObserveGameHelperImpl.a 。
Obfu[DE]scate はオープンソースプロジェクトであり、コミュニティからのコントリビューションを歓迎します。Obfu[DE]scate にコントリビュートする場合は、次のガイドラインに従ってください:
Obfu[DE]scate は Contributor Covenant の行動規範に従います。Obfu[DE]scate にコントリビュートする際は、こちらを確認し、この行動規範を遵守してください。
バグに遭遇した場合や新機能の提案がある場合は、GitHub リポジトリで Issue を開いてください。再現手順や提案機能の明確な説明など、できるだけ詳細な情報を提供してください。皆様のフィードバックは貴重であり、Obfu[DE]scate をより良いものにするのに役立ちます。
このツールは APKTool なしでは動作しません!また、この README の多くの例では Chess.com アプリをベースとして使用しています。詳細はこちらをご覧ください。
| 省略形 | パラメータ | 説明 | 必須 |
|---|
| -a1 | apk_file_path_1 | 元の APK へのパス。2 つ目の APK と比較される APK です(例:古いバージョンの APK)。 | はい |
| -a2 | apk_file_path_2 | 新しい方の APK へのパス。出力には、APK1 とこの APK の間の変更が表示されます。 | はい |
| -cp | class_path | レビュー対象の関数をフィルタリングするための逆ドメイン記法パス(例:このパス上の関数のみを比較するには com.example.class を指定)。 | いいえ |
| -o | output_dir | 出力マッピング、HTML、逆アセンブルされた APK を保存するディレクトリ。 | いいえ |
| -apktool | apk_tool_path | APKTool が PATH にない場合、このパラメータを使用して ObfuDeScate に APKTool の場所を指定します。 | いいえ |