使用 Frida 进行动态分析
Frida 与挂钩
使用 Frida 进行动态分析 是 CoddyKit 上的免费 Ethical Hacking Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ethical Hacking Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ethical Hacking Academy 课程共包含 4 节课。
什么是 Frida
Frida 是一个动态插桩工具包。它会将 JavaScript 引擎注入正在运行的应用,让您无需重新编译即可在运行时检查和修改行为。
它是移动端动态渗透测试中最重要的工具。
Frida 的工作原理
Frida 会在设备上运行一个小型代理(即 frida-server),并在您的计算机上运行客户端。您编写 JavaScript,将钩子接入目标进程中的函数。
您的脚本可以读取参数、修改返回值,并直接调用方法。
设置
您需要将匹配的 frida-server 二进制文件推送到已获取 Root 权限的设备上(在未获取 Root 权限的设备上,也可以使用集成了 frida-gadget 的修补版 APK),然后运行它。
随后,桌面工具会通过 USB 连接。
adb push frida-server /data/local/tmp/
adb shell /data/local/tmp/frida-server &枚举应用
使用 Frida CLI 工具列出已安装的应用和正在运行的进程,以确认连接正常。
这可以验证 frida-server 是否可访问,并为您提供要定位的包名。
frida-ps -Uai什么是 Hook
Hook 是指拦截某个函数,使您的代码在该函数之前、之后或代替它运行。您可以记录输入、检查输出,或完全替换其行为。
在 Android 中,您可以在正在运行的应用内部 Hook Java 方法(以及原生函数)。
简单的 Java Hook
在 Java.perform 内部,您可以选择一个类,选择一个方法,并覆盖其 implementation。您可以记录参数,然后调用原始方法。
请注意,为确保 JSON 安全,示例使用单引号,而不是反引号。
Java.perform(function(){
var Login = Java.use('com.app.Login');
Login.check.implementation = function(pw){
console.log('pw=' + pw);
return this.check(pw);
};
});绕过检查
要绕过逻辑,可以覆盖某个方法,使其返回您想要的任何值。例如,强制 Root 或许可证检查返回 false(未检测到)或 true(已授权)。
这样就能击破信任设备状态的客户端安全机制。
RootCheck.isRooted.implementation = function(){ return false; };绕过 SSL 固定
应用使用 SSL 固定来拒绝代理。Frida 脚本(例如常用的 Objection 或通用固定绕过脚本)会 Hook 固定逻辑,使您能够拦截 HTTPS 流量。
要通过代理检查应用的 API 调用,这是必不可少的。
frida -U -f com.app -l ssl-bypass.jsObjection
Objection 构建于 Frida 之上,提供现成的命令:绕过 SSL 固定、导出密钥库、列出活动,以及读取应用存储,整个过程无需编写脚本。
它可以加快评估期间的常见任务。
objection -g com.app explore生成进程与附加进程
Frida 可以附加到正在运行的进程,也可以在应用启动时通过预先加载脚本来全新生成应用(-f)。
当您必须 Hook 在早期运行的代码(例如启动期间的反篡改检查)时,就需要使用生成模式。
frida -U -f com.app -l hook.js --no-pause使用 frida-trace 进行跟踪
frida-trace 会自动为匹配某个模式的函数生成并附加钩子,同时记录每次调用。它非常适合发现应用实际使用了哪些方法。
您可以定位 Java 方法或原生函数,然后细化自动生成的处理程序,以检查特定参数。
frida-trace -U -f com.app -j '*Crypto*!*'快速检查
回想一下 Frida 的核心功能。
回顾
现在您已经了解了使用 Frida 进行动态分析:
- Frida 会注入 JS 引擎,在运行中的应用中 Hook 函数。
- 设置 frida-server,使用
frida-ps枚举进程,并 Hook Java 方法。 - 覆盖方法以绕过检查和SSL 固定;Objection 可以自动完成这些操作。
- 使用生成模式捕获启动早期的代码。
接下来,您将检查不安全的存储和通信。
常见问题解答
「使用 Frida 进行动态分析」课时是免费的吗?
是的 — 「使用 Frida 进行动态分析」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ethical Hacking Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ethical Hacking Academy 课程共包含 4 节课。
「使用 Frida 进行动态分析」这节课中我会学到什么?
Frida 与挂钩 你通过在浏览器中直接运行的动手代码来练习 Ethical Hacking Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ethical Hacking Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ethical Hacking Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「使用 Frida 进行动态分析」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ethical Hacking Academy 课中编写并运行代码吗?
能。每节 Ethical Hacking Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Android 应用结构
- APK 静态分析
- 使用 Frida 进行动态分析
- 不安全的存储与通信