mcpField
F
frida-workflow

frida-workflow

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

关于 frida-workflow

用于规划和执行 Frida 插桩的编排技能,涵盖授权、环境盘点、附加或启动模式选择,以及精简 Hook 的验证,并将任务分流至专用 Frida 技能。

主要功能

  1. 01检查授权与目标范围
  2. 02盘点 Frida 运行环境
  3. 03选择附加、启动或 Gadget 模式
  4. 04验证精简 Hook 的行为
  5. 05分流至专用 Frida 技能

适用场景

  1. 01规划一次插桩操作
  2. 02为目标选择 Frida 模式
  3. 03验证 Hook 并记录可复现流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rudra-ravi/frida-skills --skill frida-workflow

安装后在 Claude Code 中输入/frida-workflow确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
frida-sources.md
scripts/
frida-env-check.sh

详细介绍

Frida 工作流

在编写或运行 Frida 插桩代码前,使用此工作流技能进行编排。

操作规则

  1. 对第三方软件进行插桩前,确认已获授权并明确目标范围。
  2. 如果行为取决于版本、设备模式、Java bridge、Gadget 或 CLI 标志,请查阅最新的 Frida 文档。
  3. 记录确切的 Frida 客户端、服务端、Gadget、操作系统、架构、软件包/捆绑包/进程 ID,以及附加/启动模式。
  4. 从观察型 Hook 开始,确认目标和调用形式后再进行修改。
  5. 保持 Hook 简短、可逆并记录日志。优先使用精确的类/函数 Hook,而不是宽泛的绕过脚本。

技能路由

  • 如果主机、设备、版本或传输状态未知,请在编写 Hook 前使用 frida-setup-checklist。
  • 选择使用 frida、frida-ps、frida-ls-devices、frida-trace、frida-discover、frida-kill 还是 frida-create 时,使用 frida-tools-reference。
  • 如果类、符号、模块、方法或调用路径未知,请使用 frida-tracing-discovery。
  • 对于 TypeScript Agent、可复用脚本项目、RPC 导出、打包和多脚本组织,请使用 frida-agent-builder。
  • 对于 Interceptor、NativeFunction、内存扫描、导出、导入、符号、CModule 和高频原生代码路径,请使用 frida-native-hooks。
  • 对于 Java.perform、类加载器、重载、JNI、Android 固定分析和基于 APK 的工作流,请使用 frida-android-hooks。
  • 对于 ObjC、Swift/Objective-C 方法、模块、iOS 固定分析和无 root 越狱限制,请使用 frida-ios-hooks。
  • 对于 Java、ObjC、Flutter、React Native、BoringSSL/OpenSSL、Conscrypt、OkHttp 和 SecTrust 路径中的 TLS/SSL 固定分析与绕过,请使用 frida-tls-pinning。
  • 对于反 Frida、root/越狱、模拟器、调试器、ptrace、端口扫描、线程名称和完整性检查,请使用 frida-anti-instrumentation。
  • 如果目标是观察运行时数据,例如 HTTP、标头、令牌、JSON、加密输入/输出、偏好设置、文件、SQLite 或内存缓冲区,请使用 frida-data-extraction。
  • 搜索 CodeShare、提取脚本、审查源代码,以及将公开代码片段转换为本地 Agent 或 --codeshare 命令时,请使用 frida-codeshare-search。
  • 运行公开、生成的、宽泛的、涉及大量原生指针的或大量修改内容的脚本前,请使用 frida-script-review。
  • 如果附加/启动失败、Hook 未触发、目标崩溃、ObjC/Java 不可用或版本不匹配,请使用 frida-troubleshooting。

工作流

  1. 定义目标:说明要观察或更改的行为、预期证据和回滚条件。
  2. 盘点环境:
    frida --version
    frida-ps -Uai
    frida-ls-devices
    
  3. 选择模式:
    • 对于应用早期初始化 Hook,使用启动模式。
    • 对于已运行的进程,使用附加模式。
    • 如果附加受阻、无法通过 root/越狱实现,或必须从应用内部加载插桩代码,请使用 Gadget。
  4. 先发现,再 Hook:
    • 原生:枚举模块、导出、导入、符号和可读字符串。
    • Android:枚举已加载的类/方法,并确认正确的类加载器。
    • iOS:确认 ObjC.available,枚举类/模块,并在需要时解析 Swift 符号。
  5. 尽可能精简地 Hook:记录入口、参数、返回值,以及有用时的线程/回溯信息,然后进一步缩小范围。
  6. 验证:证明 Hook 会随目标行为触发、没有崩溃且日志符合预期。保存所用命令和脚本版本。

从业者手册

  • 使用 Frida CodeShare 和公开代码片段进行侦察,并将其作为模式库。运行脚本前先阅读,然后只复制与应用实际使用的框架和版本相匹配的 hook。
  • 构建分层 hook 流程:从高层 API 入手,记录堆栈跟踪和调用方;只有在证据指向更底层时,才继续深入框架、JNI/原生、加密、TLS 或系统调用边界。
  • 确认目标路径后,优先使用有针对性的脚本,而不是“万能绕过”套件。宽泛的套件有助于发现可能的切入点,但会掩盖真正起作用的 hook。
  • 对于混淆应用,追踪数据而不是名称:URL、标头、字节数组、加密输入/输出、文件路径、反射调用、动态 DEX 加载和原生库加载。
  • 确保每次实验都可复现:记录准确的命令、目标版本、设备、Frida 版本、脚本哈希或文件名,以及观察到的行为证据。
  • 如果目标有反插桩机制,先确认其检测的是 root/jailbreak、Frida 痕迹、调试器/ptrace、模拟器/设备身份、软件包完整性,还是时序。

Frida 当前须知

  • Frida 17 将 Java 运行时桥接从 GumJS 中移出;使用 TypeScript/已编译 Agent 时,打包 Java API 可能需要将 frida-java-bridge 作为 npm 依赖。
  • 确保 Frida 工具与远程 frida-server/Gadget 版本一致。版本不匹配是附加和协议故障的常见原因。
  • Interceptor.onLeave() 中的 retval 会被回收;不要将其存储起来供之后使用。应在回调内转换或复制值。
  • 使用 Memory.allocUtf8String()/UTF-16 助手分配的字符串,必须在目标可能使用它们期间保持有效。

参考资料

如果任务需要最新文档、版本检查或来源归属信息,请阅读 references/frida-sources.md。

评论

支持 Markdown