cpholguera/frooky

GitHub: cpholguera/frooky

基于 Frida 的动态插桩工具,通过 JSON 配置文件快速对 Android/iOS 应用进行方法级 hook 与行为分析。

Stars: 10 | Forks: 4

# Frooky ``` ___ ____ / __\ / _ | _ _ _ _ _ _ / _\ | (_) | / _ \ / _ \ | / / | | | | / / / / | | | (_) | (_) || < | |_| | \/ /_/ |_| \___/ \___/ |_|\_\ \__, | |___/ ``` `frooky` 是一个基于 [Frida](https://www.frida.re/) 的动态分析工具,用于通过 JSON hook 文件分析 Android 和 iOS 应用。 ![PyPI - Version](https://img.shields.io/pypi/v/frooky?color=fuchsia) [![Test](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8e42dd1f9b093210.svg)](https://github.com/cpholguera/frooky/actions/workflows/test.yml) - Hook Java/Kotlin 方法和原生 C/C++ 函数 - 简单的 JSON hook 文件格式 - 支持方法重载和堆栈跟踪捕获 - 支持多种数据类型的参数捕获 - 根据参数值或堆栈跟踪模式过滤 Hook - 以 JSON Lines 格式输出事件,便于处理 更多信息请参阅 [docs/usage.md](docs/usage.md)。 ## 安装 只需通过 pip 安装即可获取 `frooky` CLI 工具: ``` pip3 install frooky ``` ## 使用方法 按照 [docs/usage.md](docs/usage.md) 中的说明创建一个 hook 文件(例如 `hooks.json`),然后使用所需的选项运行 `frooky`: ``` # 按 app name 附加 frooky -U -n "My App" --platform android hooks.json # Spawn 并添加多个 hook files(hooks 将被合并) frooky -U -f com.example.app --platform android storage.json crypto.json ``` 运行 `frooky -h` 查看更多选项。 ## 示例 我们将使用 OWASP MAS [MASTG-DEMO-0072](https://mas.owasp.org/MASTG/demos/android/MASVS-CRYPTO/MASTG-DEMO-0072/MASTG-DEMO-0072/) 应用程序来演示如何 Hook 加密密钥生成方法。 首先,你需要创建一个 hook 文件,例如 `crypto.json`: ``` { "category": "CRYPTO", "hooks": [ { "class": "android.security.keystore.KeyGenParameterSpec$Builder", "method": "$init", "maxFrames": 10 } ] } ``` 然后使用该 hook 文件针对你的目标应用运行 `frooky`: ``` frooky -U -n "MASTestApp" --platform android crypto.json ``` 输出(为了可读性进行了格式化): ``` { "id": "14535033-08ea-4063-897c-eacd4a885d8b", "type": "hook", "category": "CRYPTO", "time": "2026-01-14T16:02:21.782Z", "class": "android.security.keystore.KeyGenParameterSpec$Builder", "method": "$init", "instanceId": 35486102, "stackTrace": [ "android.security.keystore.KeyGenParameterSpec$Builder.(Native Method)", "org.owasp.mastestapp.MastgTest.generateKey(MastgTest.kt:97)", "org.owasp.mastestapp.MastgTest.mastgTest(MastgTest.kt:41)", "org.owasp.mastestapp.MainActivityKt.MainScreen$lambda$12$lambda$11(MainActivity.kt:101)", "org.owasp.mastestapp.MainActivityKt.$r8$lambda$Pm6AsbKBmypP53K-UABM21E_Xxk(Unknown Source:0)", "org.owasp.mastestapp.MainActivityKt$$ExternalSyntheticLambda3.run(D8$$SyntheticClass:0)", "java.lang.Thread.run(Thread.java:1012)" ], "inputParameters": [ { "declaredType": "java.lang.String", "value": "MultiPurposeKey" }, { "declaredType": "int", "value": 15 } ], "returnValue": [ { "declaredType": "void", "value": "void" } ] } ``` 更多信息请参阅 [docs/usage.md](docs/usage.md),完整示例请参阅 [docs/examples/example.md](docs/examples/example.md)。 有关此仓库的开发和本地测试说明,请参阅 [docs/develop.md](docs/develop.md)。
标签:Android安全, Docker支持, Frida, Homebrew安装, iOS安全, JSON配置, MASTG, URL抓取, 云资产清单, 参数捕获, 堆栈跟踪, 安全测试, 应用程序安全, 攻击性安全, 数据抓取, 目录枚举, 移动安全, 移动应用测试, 结构化查询, 自动化安全, 自动化攻击, 逆向工具, 逆向工程