关于 frida-troubleshooting
面向 Frida 使用者的故障排查技能,在修改 Hook 逻辑前检查环境、运行时、Hook 和崩溃问题。它提供有序诊断流程,并覆盖 Android、iOS 与原生目标。
主要功能
- 01按顺序诊断 Frida 故障
- 02检查主机与设备版本
- 03检查 Android 和 iOS 运行时
- 04排查 Hook 与崩溃问题
- 05参考常见错误手册
适用场景
- 01调查未触发的 Hook
- 02诊断安装 Hook 后的崩溃
- 03检查设备连接或版本不匹配
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rudra-ravi/ frida-skills --skill frida-troubleshooting安装后在 Claude Code 中输入/frida-troubleshooting确认已加载。
附带文件agents/openai.yamlreferences/error-playbook.md
详细介绍
Frida 故障排查
当 Frida 本身可能无法正常工作时,请先使用此技能,再更改 Hook 逻辑。
初步证据
收集准确的命令和输出:
frida --version
frida-ls-devices
frida-ps -Uai
对于 Android:
adb devices
adb shell getprop ro.product.cpu.abi
adb shell /data/local/tmp/frida-server --version
对于 iOS:
frida-ps -Uai
诊断顺序
- 版本不匹配:主机上的
frida-tools/Python 软件包与frida-server/Gadget 不一致。 - 设备连接:USB、远程连接、模拟器、越狱/Root 状态、权限。
- 模式不匹配:需要尽早运行代码时使用 spawn;目标加载后才 attach 就足够。
- 运行时是否可用:
Java.available、Java.perform()、ObjC.available。 - 加载器/模块时机:类、符号或模块尚未加载。
- 重载/签名/地址错误。
- 应用保护或反插桩导致应用提前退出。
实践者排查
- 使用仅记录平台/运行时可用性的最小脚本复现问题。最小脚本正常运行后,再加载实际 Agent。
- 如果 CodeShare 或通用绕过方案“部分有效”,在添加更多绕过方案之前,先确认触发了哪个 Hook,以及哪些端点/行为发生了变化。
- 如果绕过证书绑定后仍看不到流量,请检查代理信任存储、证书透明度、原生 TLS、HTTP/3/QUIC、备用端点、后端设备完整性检查以及非 HTTP 协议。
- 如果 Hook 在混淆应用中没有触发,请改为 Hook 数据边界并查看调用栈,而不是追踪重命名后的类。
- 如果应用退出且没有日志,请使用 spawn 模式检查原生反插桩机制和早期生命周期 Hook。
Hook 未触发
- 不使用 Frida,确认代码路径确实会执行。
- 安装 Hook 前,记录模块/类的加载情况。
- 对于 Android,枚举重载和类加载器。
- 对于 iOS/Swift,枚举符号/模块,并优先 Hook Objective-C 可见的接口。
- 对于原生代码,确认签名和架构,然后附加到调用方/被调用方边界。
Hook 后崩溃
- 移除修改操作,仅保留日志记录。
- 对空指针和无效的 ObjC/Java 对象进行保护。
- 在回调中复制值;不要存储会被回收复用的
retval。 - 替换指针参数时,检查字符串的生命周期。
- 缩小触发频率过高或导致递归的宽泛 Hook 范围。
参考资料
阅读 references/error-playbook.md,了解常见错误、可能原因和后续检查项。
评论
支持 Markdown