
AndroidアプリのSSL/TLS証明書ピンニングをバイパスするFridaツールキットで、Java TrustManager、OkHttp、Conscrypt、およびネイティブのOpenSSL/BoringSSLレイヤーをフックします。
Android向けユニバーサルSSL/TLS証明書ピンニングバイパス
作者: Danieldev (GitHub: @danieldev23 | Telegram: @zadevz)
あらゆるAndroidアプリのSSLピンニングを無効化する包括的なFridaツールキット — Javaレイヤーとネイティブレイヤーの両方をカバーし、標準的なOkHttpピンニングからFacebook独自のproxygenネイティブ実装まで対応します。
| 機能 | ステータス |
|---|---|
| Java TrustManager / SSLContext | ✅ |
| HostnameVerifier (すべてのホスト名を許可) | ✅ |
| OkHttp CertificatePinner (標準) | ✅ |
| 難読化されたOkHttp (FB、銀行アプリ) | ✅ |
| Conscrypt / Android TLSプロバイダ | ✅ |
| NetworkSecurityConfig (Android 7.0+) | ✅ |
| WebViewClient SSLエラーバイパス | ✅ |
| Apache HTTPクライアント (レガシーアプリ) | ✅ |
| TrustKitピンニングライブラリ | ✅ |
| ネイティブOpenSSL / BoringSSL | ✅ |
Flutter (ssl_verify_peer_cert) | ✅ |
Facebook Proxygen (verifyWithMetrics) | ✅ |
| ロード済みSSLモジュールの自動検出 | ✅ |
| CModuleネイティブ置換 (0msオーバーヘッド) | ✅ |
| スクリプト | 説明 |
|---|---|
scripts/universal_bypass.js | ユニバーサルスクリプト — あらゆるAndroidアプリで動作 |
scripts/fb4a_bypass.js | Facebook (FB4A) 専用に最適化されたスクリプト (Ghidraで確認済みのシンボルを使用) |
pip install frida-tools)/data/local/tmp/ で frida-server が実行中run.sh を使った簡単な使用方法# Clone the repository
git clone https://github.com/danieldev23/frida-ssl-bypass.git
cd frida-ssl-bypass
# Make the runner executable
chmod +x run.sh
# ── Universal bypass (Any app) ──
./run.sh -p com.example.app # Attach to running app
./run.sh -p com.example.app -m spawn # Spawn app and hook
# ── Facebook specific bypass ──
./run.sh -p com.facebook.katana -s fb4a # FB4A optimized mode
./run.sh # Default: Attach to Facebook
# ── Direct Frida CLI usage ──
frida -U -f com.instagram.android -l scripts/universal_bypass.js
frida -U -p 1234 -l scripts/universal_bypass.js
run.sh)./run.sh [options]
-p, --package <name> Target package name (default: com.facebook.katana)
-s, --script <name> Script to use: fb4a | universal (default: universal)
-m, --mode <mode> Mode: attach | spawn (default: attach)
-h, --help Show help message
SSLContext.init() → Injects TrustAllManager (trusts all certificates)
HostnameVerifier → Returns true for all domain names
CertificatePinner.check() → Noop (scans for standard and obfuscated classes)
Conscrypt → Bypasses certificate chain verification
NetworkSecurityConfig → Trusts user-added CA certificates
WebViewClient → Automatically proceeds on SSL errors
SSL_CTX_set_verify() → Forces SSL_VERIFY_NONE (0)
SSL_get_verify_result() → Always returns X509_V_OK (0)
SSL_set_custom_verify() → Disables custom verification callback
verifyWithMetrics() → CModule stub returns TRUE (Facebook Proxygen)
ssl_verify_peer_cert() → Returns 1 (Flutter / Dart Engine)
このツールキットは、2つの戦略を使用してメモリにロードされたSSLモジュールを自動検出します:
android_dlopen_ext / dlopen をフックして、ネイティブSSLライブラリがRAMにロードされる際にインターセプトします (バックオフポーリングのフォールバック付き)。frida-ssl-bypass/
├── README.md # Documentation (English)
├── LICENSE # MIT License
├── run.sh # Auto-runner script for frida-server & hooks
├── .gitignore
└── scripts/
├── universal_bypass.js # Universal bypass script for any app
└── fb4a_bypass.js # FB4A specific optimized bypass script
このプロジェクトは、セキュリティ研究および教育目的に厳密に限定して提供されています。所有しているアプリ、または監査の明示的な許可を得ているアプリにのみ、このツールを使用してください。作者は、いかなる誤用に対しても一切の責任を負いません。
MITライセンスの下で配布されています — 詳細は LICENSE を参照してください。
| アプリケーション | パッケージ名 | 推奨スクリプト | 備考 |
|---|
com.facebook.katana | fb4a / universal | C/C++ネイティブProxygenバイパス | |
com.instagram.android | universal | OkHttp + ネイティブOpenSSL | |
com.whatsapp | universal | Noise Protocol + ネイティブSSL | |
| Twitter / X | com.twitter.android | universal | OkHttpピンニング |
| TikTok | com.zhiliaoapp.musically | universal | BoringSSLカスタム検証 |
| 銀行アプリ | 各種 | universal | Conscrypt + TrustKit |
| Flutterアプリ | 各種 | universal | libflutter.so 内の検証チェーンをフック |
| React Native | 各種 | universal | 基盤となるOkHttpレイヤーをカバー |