关于 frida-ios-hooks
用于检查和插桩 Objective-C、Swift 或原生代码 iOS 应用的 Frida 技能,为安全从业者提供运行时检查、Hook 发现及证书固定和越狱环境排查方法。
主要功能
- 01Objective-C 运行时 Hook
- 02Swift 与原生符号发现
- 03模块和类枚举
- 04网络证书固定调查
- 05无根越狱环境配置提示
适用场景
- 01检查 iOS 应用网络请求
- 02定位 Swift 或原生函数
- 03调查证书固定路径
- 04诊断 Frida 附加问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rudra-ravi/ frida-skills --skill frida-ios-hooks安装后在 Claude Code 中输入/frida-ios-hooks确认已加载。
附带文件agents/openai.yamlreferences/ios-patterns.md
详细介绍
Frida iOS 钩子
在对 iOS Objective-C、Swift 或原生行为进行插桩时使用此技能。
设置检查
frida --version
frida-ps -Uai
frida -U -f com.example.app -l agent.js --no-pause
确认运行时是否可用:
console.log("ObjC.available =", ObjC.available);
console.log(Process.platform, Process.arch);
如果 iOS 应用中的 ObjC.available 为 false,请先使用 frida-troubleshooting,不要直接认定脚本有问题。
Objective-C 钩子模式
if (ObjC.available) {
const cls = ObjC.classes.NSURLSession;
const method = cls["- dataTaskWithRequest:completionHandler:"];
Interceptor.attach(method.implementation, {
onEnter(args) {
const request = new ObjC.Object(args[2]);
console.log("[NSURLSession]", request.URL().toString());
}
});
}
Swift 和原生规则
- 先枚举模块和符号,再猜测 Swift 修饰名称。
- 尽可能通过 ObjC 类对 Objective-C 可见的 Swift 代码进行钩取。
- 对于纯 Swift/原生函数,解析符号并使用
frida-native-hooks。 - 如果钩子必须在应用代理、网络栈或防篡改初始化之前运行,请使用 Spawn。
- 对信任评估、加密、签名生成和请求构建,优先使用观察型钩子,再修改结果。
实践模式
- 如果运行时可用,先从 Objective-C 运行时接口入手:代理、URL 加载、钥匙串、剪贴板、文件 API、加密封装和越狱检测选择器。
- 对于 Swift 占比较高的应用,使用模块/符号枚举以及调用方堆栈跟踪;除非 Swift 将选择器暴露给 Objective-C,否则不要假定选择器存在。
- 对于证书固定,同时检查 Objective-C 框架和原生
Security/BoringSSL/CommonCrypto 路径。应用通常会混用这些路径。 - 使用 ObjC 方法观察器等 CodeShare 工具进行探查,然后在确认类/方法名称后将其替换为范围更窄的钩子。
- 在无根越狱环境中,将最小化的“运行时可用”脚本与实际 Agent 分开,以免把设置失败误认为钩子错误。
探查代码片段
if (ObjC.available) {
for (const name of Object.keys(ObjC.classes).filter(n => n.includes("Trust"))) {
console.log(name);
}
}
for (const m of Process.enumerateModules()) {
if (m.name.includes("Target")) console.log(m.name, m.base, m.path);
}
证书固定和无根环境说明
- 确认证书固定是在
NSURLSession、SecTrustEvaluate*、第三方框架还是原生自定义代码中实现的。 - 无根越狱环境可能需要匹配的 Frida 软件包、正确的引导程序路径以及更新的工具。版本不匹配往往表现为附加失败或缺少 ObjC 桥接。
- 如果正常附加受到阻止,但可以修改应用,请使用 Gadget。
参考资料
阅读 references/ios-patterns.md,了解 Objective-C、Swift 符号、SecTrust、模块和无根环境故障排查模式。
评论
支持 Markdown