tkgstratorandClaude Opus 4.6 1b3e4d1fe2 feat(tools): MSLクライアント実装と解析ツールを追加
- src/netflix_msl/: Python MSLクライアント (鍵交換, 暗号化/復号, マニフェスト取得)
- tools/run.py: Fridaフックランナー (@@LOG@@パース, JSONL保存, crypto表示改善)
- tools/find_appboot.js: appboot関連シンボル検索
- tools/check_tweak.js: Tweakロード状態確認
- tools/dump_rsa_key.py, verify_key.py 等の解析ユーティリティ

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 02:07:22 +00:00

Mobile RE Toolkit

Frida, Chrome 拡張機能, mitmproxy を使ったモバイルアプリのリバースエンジニアリング環境。

iOS, Android, Chrome の各プラットフォームにおけるアプリの通信プロトコル・認証フロー・DRM を動的解析するためのツールキット。解析対象ごとのフックスクリプトや解析結果は targets/ 以下にサブモジュールとして管理し、本リポジトリは汎用ツール基盤として公開可能な構成になっている。

構成

.
├── packages/
│   ├── frida/                          # Frida フックスクリプト (TypeScript → JS)
│   │   ├── src/
│   │   │   ├── ios/                    #   iOS 用フック (ObjC/C++)
│   │   │   ├── android/                #   Android 用フック (Java/JNI)
│   │   │   ├── chrome/                 #   Chrome 用フック (CDM vtable 等)
│   │   │   └── common/                 #   共通ユーティリティ
│   │   └── package.json
│   ├── chrome-extension/               # Chrome 拡張 (Web Crypto/EME/HTTP キャプチャ)
│   │   ├── src/
│   │   └── manifest.json
│   └── proxyman/                       # Proxyman アドオン
│
├── tools/                              # Python ユーティリティ
│   ├── run.py                          #   Frida フック実行ランナー (iOS/Android)
│   ├── transformers/                   #   ログ変換 (Frida → 統一フォーマット)
│   │   ├── base.py                     #     共通 Transformer 基底クラス
│   │   ├── ios.py                      #     iOS 固有マッピング
│   │   └── android.py                  #     Android 固有マッピング
│   └── ...
│
├── handlers/                           # Objection ハンドラ (CommonCrypto, Security 等)
│
├── targets/                            # 解析対象 (サブモジュール, .gitignore)
│   └── <target-name>/                  #   対象固有のスクリプト・ドキュメント・ログ
│
├── docs/                               # 解析結果・仕様書
├── assets/                             # IPA/APK バイナリ (.gitignore)
├── raws/                               # Frida 生キャプチャログ (.gitignore)
└── logs/                               # 変換済みログ (.gitignore)

開発環境

DevContainer で構築済み。Rebuild Container で全ツールが揃う。

ランタイム

ツール 用途
Python 3.12 (uv) ユーティリティ、ログ変換、解析スクリプト
Node.js Frida スクリプトのビルド (frida-compile)
Bun Chrome 拡張のビルド
Frida 17.x 動的インストルメンテーション
mitmproxy プログラマブル HTTPS プロキシ (コンテナ内で完結)

リバースエンジニアリング

ツール 用途
radare2 ARM64 逆アセンブル・バイナリ解析
Ghidra (headless) 擬似コード生成・関数解析
jadx Android APK → Java 逆コンパイル
apktool Android APK リソース展開・smali
ipsw iOS Mach-O 解析・ObjC/Swift クラスダンプ
lief (Python) Mach-O/ELF バイナリパーサー
capstone (Python) ARM64 ディスアセンブラ

使い方

ビルド

# Frida フックスクリプト
cd packages/frida
npm run build:ios       # → hook_netflix.js
npm run build:android   # → hook_netflix_android.js
npm run build:chrome    # → hook_chrome_cdm.js

# Chrome 拡張
cd packages/chrome-extension
bun run build

キャプチャ実行

# iOS (起動中のアプリにアタッチ、未起動なら自動で spawn)
uv run python tools/run.py packages/frida/hook_netflix.js

# Android (spawn モード)
uv run python tools/run.py --android packages/frida/hook_netflix_android.js

.env にデバイスの IP を設定:

IOS_HOST=192.168.x.x
ANDROID_HOST=192.168.x.x

ログ変換

Frida の生ログを統一フォーマット (Chrome 拡張互換) に変換:

python -m tools.transformers.ios raws/ios/20260404/capture.jsonl
python -m tools.transformers.android raws/android/20260404/capture.jsonl

バイナリ解析

# iOS: ObjC/Swift クラスダンプ
ipsw macho info <binary> --class-dump

# iOS: 逆アセンブル (Python)
uv run python -c "import lief, capstone; ..."

# Android: APK 逆コンパイル
jadx -d /tmp/out <apk>

# Ghidra ヘッドレス解析
analyzeHeadless /tmp/project name -import <binary>

HTTPS プロキシ

# コンテナ内でプロキシ起動
uv run mitmdump -p 8080 -s tools/mitmproxy_addon.py

# デバイス側: Wi-Fi プロキシを <コンテナIP>:8080 に設定
# Frida の SSL pinning bypass と併用

解析対象の追加

新しい解析対象を追加するには:

# targets/ 以下にサブモジュールとして追加
git submodule add <repo-url> targets/<target-name>

各 target リポジトリには対象固有の以下を含める:

  • フックスクリプト (TypeScript)
  • 解析結果ドキュメント
  • プロトコル仕様書
  • キャプチャログ・バイナリ等の秘匿データ
S
Description
No description provided
Readme MIT
6.8 MiB
Languages
Python 50.2%
TypeScript 30.1%
JavaScript 11.9%
Objective-C 6.6%
Dockerfile 0.5%
Other 0.5%