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 应用。
 [](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抓取, 云资产清单, 参数捕获, 堆栈跟踪, 安全测试, 应用程序安全, 攻击性安全, 数据抓取, 目录枚举, 移动安全, 移动应用测试, 结构化查询, 自动化安全, 自动化攻击, 逆向工具, 逆向工程