Hello there, ('ω')ノ
🧰 APKToolとは?
APKTool(apktool) は、APKファイルを“分解”して、
AndroidManifest.xmlres/フォルダ(リソース)smali/フォルダ(コード)
など、アプリの構造そのものを再現することができるツールです。
たとえるなら、「アプリをばらして部品ごとに分類してくれる分解キット」です。
🔧 APKToolのインストール方法
✅ 前提:
- Java(JDK)インストール済みであること(
java -versionで確認) - OSはWindows / macOS / Linux いずれも可
✅ インストール手順(例:Linux/mac)
# apktoolとその依存ファイルを取得 wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.9.3.jar # 実行権限を付けて配置 chmod +x apktool sudo mv apktool /usr/local/bin/ sudo mv apktool_2.9.3.jar /usr/local/bin/apktool.jar
※ apktool というコマンドで apktool.jar を呼び出す仕組みです。
📦 APKファイルを用意しよう
実際に調査したいアプリのAPKファイルを用意します。 自社アプリであれば、ビルド済みのAPKを使うのが一般的です。
もしくは実機から取得するには、次のADBコマンドを使います:
adb shell pm path com.example.app # 出力: package:/data/app/com.example.app-1/base.apk adb pull /data/app/com.example.app-1/base.apk
🛠 APKToolでデコンパイル!
APKファイルが手に入ったら、以下のコマンドでデコンパイル(分解)します。
apktool d base.apk -o extracted_app
✅ 結果(フォルダ構成):
extracted_app/ ├── AndroidManifest.xml ← アプリの設定ファイル(読める形式) ├── res/ ← UIや画像、文字列などのリソース ├── smali/ ← アプリのロジック部分(Smali言語) ├── assets/ ← 独自データ(DB、設定ファイルなど) ├── lib/ ← ネイティブライブラリ(.soファイル)
🕵️♀️ どこを見ればいい?診断の視点
🔍 AndroidManifest.xml
- アプリの権限(permission)
- 外部に公開されたコンポーネント(exported)
- 起動アクティビティやインテントフィルター
- デバッグ設定やバックアップ許可の有無
MobSFでも見れますが、apktoolで分解した方が編集しやすいです。
🔍 smali/ フォルダ(Smaliコード)
- Javaをバイトコードにしたもの(逆コンパイルされたコード)
LoginActivity.smaliなど、クラス単位で分割されている- 中には
getSharedPreferences()やBase64.decode()など、パスワード保存や暗号化処理のヒントが潜んでいることも
※ 初心者には少し読みにくいですが、Javaに慣れている人なら雰囲気で読めます。
🔍 res/values/strings.xml
- アプリ内で使用されている表示文字列(UIやエラーメッセージ)
- 中に「APIキー」「メールアドレス」「サーバーURL」などが含まれていることも多い!
🔍 assets/ や res/raw/
- SQLiteデータベース、設定ファイル、JSONファイルなど
- 開発者が検証用に残していた“お宝ファイル”が見つかることも
🧪 再構築(Recompile)もできる
APKToolの便利な点は、「分解」だけでなく「再パッケージ」もできることです。
修正後に以下のコマンドを実行すれば、再びAPKとしてまとめられます:
apktool b extracted_app -o modified.apk
※ ただし、このAPKはそのままではインストールできないため、署名が必要です(次回以降で解説予定)。
✅ まとめ
- APKToolは、APKを構造ごと分解して「設計図」「部品」に戻せる強力ツール
- AndroidManifest、リソース、コード(smali)などを人間が読める形で確認できる
- 静的解析やカスタム診断をしたいときに必須!
- MobSFと合わせて使えば、診断の幅が一気に広がる
Best regards, (^^ゞ