# frida_Hook_tools_Android **Repository Path**: wangbing69/frida_Hook_tools_Android ## Basic Information - **Project Name**: frida_Hook_tools_Android - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-08 - **Last Updated**: 2026-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # frida_Hook_tools_Android 基于 [Frida](https://frida.re/) 的 Android 应用安全分析工具集,运行时自动捕获加密/哈希参数,监控网络请求、WebView、动态加载等行为,并内置 Root/模拟器检测绕过。 ## ✨ 功能特性 | 模块 | 功能 | |------|------| | **加密自吐** | 自动输出 Cipher(AES/DES/RSA)、MessageDigest(MD5/SHA)、HMAC 的算法名、密钥、IV、明文、密文 | | **HTTP 拦截** | 拦截 OkHttp3 / HttpURLConnection / Apache HttpClient 的请求 URL、Headers、Body | | **WebView 监控** | 捕获 loadUrl / loadData / addJavascriptInterface,检测 XSS、JS Bridge RCE 等安全风险 | | **安全绕过** | Bypass Root 检测、模拟器检测、调试器检测、FLAG_DEBUGGABLE、签名校验 | | **行为监控** | DexClassLoader 动态加载、SharedPreferences、SQLite、Intent 跳转、剪贴板、Log 输出 | | **SSL Bypass** | 绕过 Android < 7 TrustManager + OkHTTPv3 CertificatePinner | | **防退出** | 拦截 Runtime.exit / Process.killProcess,防止 App 自杀退出 | | **Native 监控** | Hook SO 层导出函数、JNI RegisterNatives 注册监控 | ## 📋 环境要求 - **Frida**: Python 端 `pip install frida frida-tools` - **设备**: 已 root 的 Android 设备或模拟器(如雷电模拟器),已安装并运行 `frida-server` - **ADB**: 设备可通过 adb 连接 - **Python**: 3.6+ ## 🚀 快速开始 ### 方式一:Python 启动(推荐) ```bash # 1. 修改 Crypto.py 中的目标包名 TARGET_PACKAGE = "com.target.app" # 2. 运行 python Crypto.py ``` ### 方式二:Frida 命令行 ```bash # Attach 模式(附加到已运行进程) frida -U -n com.target.app -l main.js # Spawn 模式(启动时注入,适合 early hook) frida -U -f com.target.app -l main.js --no-pause ``` ## ⚙️ 配置 ### Crypto.py 配置 ```python # 修改顶部配置区域 ADB_PATH = r"D:\path\to\adb.exe" # adb 路径 TARGET_PACKAGE = "com.target.app" # 目标包名 MODE = "attach" # "attach" 或 "spawn" # 模块开关(按需开启/关闭) MODULES = { "Utils.js": True, # 工具函数(必须) "Hash.js": True, # 哈希算法 "Mac.js": True, # HMAC "Cipher.js": True, # 加密算法 "HttpMonitor.js": True, # HTTP 拦截 "WebViewMonitor.js": True, # WebView 安全检测 "RootBypass.js": True, # Root/模拟器绕过 "DexMonitor.js": True, # 动态加载 + 行为监控 "String.js": False, # String 监控(噪音较多) "Native.js": False, # Native SO 层监控 } ``` ### 查看目标包名 ```bash # 列出所有应用包名 adb shell pm list packages # 查看当前前台应用 adb shell "dumpsys activity | grep mFocusedActivity" ``` ## 📁 项目结构 ``` ├── Crypto.py # Python 启动器(模块管理 + 自动连接 + 输出记录) ├── main.js # Frida 命令行入口(精简版,含防退出) ├── Utils.js # 工具函数(Hex/Base64/UTF8 编解码、调用栈打印) │ ├── Cipher.js # javax.crypto.Cipher 加密算法自吐 ├── Cipher2.js # 增强版:更多 Cipher.init 重载 + SecretKeySpec ├── Hash.js # MessageDigest 哈希算法监控 ├── Mac.js # javax.crypto.Mac HMAC 监控 ├── String.js # java.lang.String 操作监控 ├── Native.js # Native SO 层函数 Hook │ ├── HttpMonitor.js # OkHttp / HttpURLConnection / Apache HTTP 拦截 ├── WebViewMonitor.js # WebView 安全检测(XSS/JS Bridge/跨域) ├── RootBypass.js # Root/模拟器/调试器检测绕过 ├── DexMonitor.js # 动态加载 + SP/SQLite/Intent/剪贴板/Log 监控 │ ├── ssl.js # SSL 证书校验绕过(TrustManager + OkHTTPv3) └── exit.js # 防应用自杀退出 ``` ## 📊 输出示例 ``` [Cipher] 加密模式:AES/CBC/PKCS5Padding [Cipher] 明文: Hello World [Cipher] 明文_hex: 48656c6c6f20576f726c64 [Cipher] 密文_hex: a1b2c3d4e5f6... [Cipher] 密文_base64: o... [SecretKey] 算法: AES | hex: 6d797365637265746b6579... [IV] hex: 30303030303030303030303030303030 [Hash] 算法: SHA-256 [Hash] 结果_hex: 5d41402abc4b2a76b9719d911017c592... [Mac] 算法: HmacSHA1 [Mac] 结果_hex: 3a2b1c... [OkHttp3] URL: https://api.example.com/v1/login [OkHttp3] Method: POST [OkHttp3] Body: {"username":"test","password":"***"} [Root-Bypass] 拦截文件检测: /system/bin/su [Emulator-Bypass] isEmulator() -> false [SP] putString: token = eyJhbGciOiJIUzI1NiJ9... [SQLite] rawQuery: SELECT * FROM users WHERE id=? ``` ## 🔧 使用技巧 ### 加固应用分析 目标 App 使用了加固壳(如梆梆、360、腾讯乐固等)时: ```python # 改用 spawn 模式,在加固壳解密前注入 MODE = "spawn" ``` ### 减少输出噪音 - `String.js` 会产生大量 String.toString/getBytes 输出,建议设为 `False` - `Native.js` 仅在需要分析 SO 层时开启 - `DexMonitor.js` 的 `BaseDexClassLoader.findClass` 可取消注释按需输出 ### 同时使用 Burp Suite 抓包 1. 将 Burp 证书导出为 DER 格式 2. 推送到设备:`adb push burp.crt /data/local/tmp/cacert.cer` 3. `ssl.js` 已自动注入 Burp 证书到 TrustManager ### 输出保存 Python 模式自动将输出保存到 `*_output.txt` 文件(文件名跟随目标包名)。 ## ⚠️ 注意事项 - 部分 App 使用了自定义加密实现(非标准 Java API),无法通过通用 Hook 捕获,需针对性分析 - OkHttp3 类名可能因混淆而不同,如找不到 `okhttp3.internal.connection.RealCall`,可尝试 `okhttp3.RealCall` - 加固应用的 SO 层函数需等待动态加载后才能 Hook,建议在 spawn 模式下使用 ## 📄 许可 仅供安全研究和授权测试使用。 ##测试用例 image