mirror of
https://github.com/qtmleap/revkit.git
synced 2026-09-28 22:11:50 +02:00
2.9 KiB
2.9 KiB
applyTo
| applyTo |
|---|
| ipa_extracted/** |
MSL 解析手順 (LLM 向け)
静的解析
- IPA を展開:
unzip -o Netflix-15.48.1.ipa -d ipa_extracted/ - MSL バイナリ:
ipa_extracted/Payload/Argo.app/Frameworks/MslClient.framework/MslClient(arm64 Mach-O) - ObjC クラス抽出:
strings MslClient | grep -E '^\+\[|^\-\[' | sed 's/\[//;s/ .*//' | sort -u - C++ シンボル抽出:
nm --demangle MslClient | grep 'netflix.*msl' - JSON フィールド名・定数:
strings MslClient | grep -E '^(mastertoken|headerdata|payloadchunk|scheme|...)$'
動的解析 (Frida)
hook_netflix.js を Frida Gadget 注入済み IPA で実行。run.py が @@LOG@@{json} をパースし logs/{date}/{domain}/ に保存。
Hook 関数と目的:
| 関数 | Hook 対象 | 取得データ |
|---|---|---|
hookSSLPinning() |
-[* URLSession:didReceiveChallenge:completionHandler:] (NF/Netflix/Osprey) |
SSL pinning 回避 |
hookSSL() (無効) |
SSL_write / SSL_read (libboringssl) |
TLS 平文 (MSL 暗号文のまま) |
hookMSL() |
IosMslClient -sendAPIRequest:extraHeaders:params:userAuthData:requestOptions:callback: |
暗号化前の API パス (args[2]) とパラメータ (args[4]) |
hookMSL() |
IosMdxCryptoContext -encrypt: / -decrypt: |
MDX 暗号化前後のデータ |
hookObjCTrace() |
+[NSURL URLWithString:] / -[NSMutableURLRequest setHTTPBody:] |
URL と HTTP ボディ |
hookCrypto() (無効) |
CCCrypt / SecKeyEncrypt / SecKeyRawSign |
CommonCrypto/Security 暗号処理 |
hookMslCrypto() |
aesCbcEncrypt / aesCbcDecrypt (MslClient) |
AES-CBC 鍵・IV・平文・暗号文 |
hookMslCrypto() |
signHmacSha256 (MslClient) |
HMAC 鍵・署名対象・署名値 |
hookMslCrypto() |
aesKwUnwrap (MslClient) |
KEK・ラップ鍵 → セッション鍵 |
hookMslCrypto() |
dhComputeSharedSecret (MslClient) |
DH 秘密鍵・公開鍵・素数 → 共有鍵 |
hookMslCrypto() |
rsaEncrypt / rsaDecrypt (MslClient) |
RSA 入出力 |
C++ 引数の読み方: std::vector<uint8_t> は +0x00: __begin_ (ptr), +0x08: __end_ (ptr)。size = end - begin。
ObjC args オフセット: args[0]=self, args[1]=_cmd, args[2]~ が実引数。
ログイベント種別
| event | 内容 |
|---|---|
msl.api |
MSL API リクエスト (domain, url, params) |
msl.encrypt.input / msl.decrypt.output |
MDX 暗号化/復号データ |
msl.aesCbcEncrypt.* / msl.aesCbcDecrypt.* |
AES-CBC の key, iv, plaintext, ciphertext |
msl.hmacSha256.* |
HMAC の key, data, signature |
msl.aesKwUnwrap.* |
AES-KW の kek, wrappedKey, unwrappedKey |
msl.dh.* |
DH の privKey, pubKey, prime, sharedSecret |
url |
URL アクセス |
http.request |
HTTP リクエスト (method, url, content_type, body) |
詳細ドキュメント
MSL プロトコルの構造・暗号スタック・クラス構成の詳細は docs/msl.md を参照。