关于 frida-workflow
用于规划和执行 Frida 插桩的编排技能,涵盖授权、环境盘点、附加或启动模式选择,以及精简 Hook 的验证,并将任务分流至专用 Frida 技能。
主要功能
- 01检查授权与目标范围
- 02盘点 Frida 运行环境
- 03选择附加、启动或 Gadget 模式
- 04验证精简 Hook 的行为
- 05分流至专用 Frida 技能
适用场景
- 01规划一次插桩操作
- 02为目标选择 Frida 模式
- 03验证 Hook 并记录可复现流程
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rudra-ravi/ frida-skills --skill frida-workflow安装后在 Claude Code 中输入/frida-workflow确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/frida-sources.mdscripts/frida-env-check.sh详细介绍
Frida 工作流
在编写或运行 Frida 插桩代码前,使用此工作流技能进行编排。
操作规则
- 对第三方软件进行插桩前,确认已获授权并明确目标范围。
- 如果行为取决于版本、设备模式、Java bridge、Gadget 或 CLI 标志,请查阅最新的 Frida 文档。
- 记录确切的 Frida 客户端、服务端、Gadget、操作系统、架构、软件包/捆绑包/进程 ID,以及附加/启动模式。
- 从观察型 Hook 开始,确认目标和调用形式后再进行修改。
- 保持 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。
工作流
- 定义目标:说明要观察或更改的行为、预期证据和回滚条件。
- 盘点环境:
frida --version frida-ps -Uai frida-ls-devices - 选择模式:
- 对于应用早期初始化 Hook,使用启动模式。
- 对于已运行的进程,使用附加模式。
- 如果附加受阻、无法通过 root/越狱实现,或必须从应用内部加载插桩代码,请使用 Gadget。
- 先发现,再 Hook:
- 原生:枚举模块、导出、导入、符号和可读字符串。
- Android:枚举已加载的类/方法,并确认正确的类加载器。
- iOS:确认
ObjC.available,枚举类/模块,并在需要时解析 Swift 符号。
- 尽可能精简地 Hook:记录入口、参数、返回值,以及有用时的线程/回溯信息,然后进一步缩小范围。
- 验证:证明 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