
Androidアプリケーションのパッカー、プロテクター、難読化ツール、および変種を識別する - Android向けPEiD
APKiD は APK がどのように作られたかの情報を提供します。多くのコンパイラ、パッカー、難読化ツール、その他奇妙なものを識別します。Android 向けの PEiD です。

このツールの使用方法の詳細については、以下を参照してください:
pip install apkid
APKiD は Docker でも実行できます!もちろん、git と Docker がインストールされている必要があります。
Docker の使用方法は次のとおりです:
git clone https://github.com/rednaga/APKiD
cd APKiD/
docker build . -t rednaga:apkid
docker/apkid.sh ~/reverse/targets/android/example/example.apk
[+] APKiD 2.1.0 :: from RedNaga :: rednaga.io
[*] example.apk!classes.dex
|-> compiler : dx
usage: apkid [-h] [-v] [-t TIMEOUT] [-r] [--scan-depth SCAN_DEPTH]
[--entry-max-scan-size ENTRY_MAX_SCAN_SIZE] [--typing {magic,filename,none}] [-j]
[-o DIR]
[FILE [FILE ...]]
APKiD - Android アプリケーション識別子 v2.1.2
位置引数:
FILE apk、dex、またはディレクトリ
オプション引数:
-h, --help このヘルプメッセージを表示して終了
-v, --verbose デバッグメッセージを出力
スキャン:
-t TIMEOUT, --timeout TIMEOUT Yara スキャンのタイムアウト (秒)
-r, --recursive サブディレクトリを再帰的に処理
--scan-depth SCAN_DEPTH ネストされた zip をスキャンする深さ
--entry-max-scan-size ENTRY_MAX_SCAN_SIZE スキャンする zip エントリの最大サイズ (バイト)、0 = 制限なし
--typing {magic,filename,none} スキャンするファイルを決定する方法
出力:
-j, --json スキャン結果を JSON 形式で出力
-o DIR, --output-dir DIR 個別の結果をここに書き込み (--json を暗示)
APKiD が認識しない APK または DEX を見つけた場合は、GitHub の issue を開いて以下の情報をお知らせください:
検出する「何か面白いもの」についてのどのようなアイデアでも歓迎しますので、パッカー、コンパイラ、難読化ツールだけに限定しないでください。興味深い逆アセンブル対策、VM対策、その他の対策トリックがあれば、issue を作成してください。
プルリクエストも歓迎します。新しいルールを提出する場合は、ルールを確認できるよう APK/DEX のファイルハッシュを必ず含めてください。
このツールはデュアルライセンスで利用できます: クローズドソースプロジェクトに適した商用ライセンスと、オープンソースソフトウェアで使用できる GPL ライセンスです。
ニーズに応じて、いずれかを選択し、そのポリシーに従う必要があります。各ライセンスタイプのポリシーと契約の詳細は、LICENSE.COMMERCIAL および LICENSE.GPL ファイルに記載されています。
変更を加えたり、独自のルールを開発したりするために最新バージョンをインストールするには、このリポジトリをクローンし、ルールをコンパイルして、パッケージを編集可能モードでインストールしてください:
git clone https://github.com/rednaga/APKiD
cd APKiD
python prep-release.py
pip install -e .[dev,test]
上記が動作しない場合、ローカルマシンや Python のインストール場所によって権限エラーが発生することがあります。--user フラグを指定してみてください。これは仮想環境を使用していない場合に必要になる可能性があります:
pip install -e .[dev,test] --user
ルールを更新した場合は、必ず prep-release.py を実行して再コンパイルしてください。
Windows を使用している場合は、コンパイル前に Yara 3.11.0 と yara-python-dex をインストールしてください:
pip install yara-python==3.11.0
pip install wheel
pip wheel --wheel-dir=yara-python-dex git+https://github.com/MobSF/yara-python-dex.git
pip install --no-index --find-links=yara-python-dex yara-python-dex
新しいバージョンをリリースする際は、apkid/init.py のバージョンが更新されていることを確認してください。
テストの実行については、.travis.yml を参照して、開発環境とテスト環境の設定方法とテストの実行方法を確認してください。
コンパイル済みルール、Readme を更新し、パッケージをビルドして PyPI にアップロードします:
./prep-release.py readme
rm -f dist/*
python setup.py sdist bdist_wheel
twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
詳細は Packaging Projects を参照してください。