0Pricing
Ethical Hacking Academy · 课时

使用 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.js

Objection

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. Android 应用结构
  2. APK 静态分析
  3. 使用 Frida 进行动态分析
  4. 不安全的存储与通信
← 返回 Ethical Hacking Academy