mcpField
F
frida-troubleshooting

frida-troubleshooting

github.com/rudra-ravi开发7111 次安装25 周前更新
代码仓库

关于 frida-troubleshooting

面向 Frida 使用者的故障排查技能,在修改 Hook 逻辑前检查环境、运行时、Hook 和崩溃问题。它提供有序诊断流程,并覆盖 Android、iOS 与原生目标。

主要功能

  1. 01按顺序诊断 Frida 故障
  2. 02检查主机与设备版本
  3. 03检查 Android 和 iOS 运行时
  4. 04排查 Hook 与崩溃问题
  5. 05参考常见错误手册

适用场景

  1. 01调查未触发的 Hook
  2. 02诊断安装 Hook 后的崩溃
  3. 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

诊断顺序

  1. 版本不匹配:主机上的 frida-tools/Python 软件包与 frida-server/Gadget 不一致。
  2. 设备连接:USB、远程连接、模拟器、越狱/Root 状态、权限。
  3. 模式不匹配:需要尽早运行代码时使用 spawn;目标加载后才 attach 就足够。
  4. 运行时是否可用:Java.available、Java.perform()、ObjC.available。
  5. 加载器/模块时机:类、符号或模块尚未加载。
  6. 重载/签名/地址错误。
  7. 应用保护或反插桩导致应用提前退出。

实践者排查

  • 使用仅记录平台/运行时可用性的最小脚本复现问题。最小脚本正常运行后,再加载实际 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