查看: 53|回复: 52

[相关教程] Frida hook Java层常用操作:六个实战模板

[复制链接]

96

主题

5

回帖

951

积分

UID
2
贡献
9 点
钻石
7 个
C币
993 个
发表于 2026-7-4 09:23:41 | 显示全部楼层 |阅读模式
Frida 是安卓逆向最常用的工具。这篇讲 Java 层 hook 的常用操作。

一、环境准备

  • 手机装 frida-server,版本要跟 PC 端 frida-tools 一致
  • PC 装 frida-tools:pip install frida-tools
  • 确认连接:frida-ps -U 能列出手机进程


二、hook 普通方法
  1. Java.perform(function() {
  2.     var cls = Java.use("com.target.Util");
  3.     cls.encrypt.implementation = function(input) {
  4.         console.log("encrypt input: " + input);
  5.         var ret = this.encrypt(input);
  6.         console.log("encrypt output: " + ret);
  7.         return ret;
  8.     };
  9. });
复制代码

三、hook 重载方法
方法有多个重载时,要指定参数类型:
  1. cls.login.overload('java.lang.String', 'java.lang.String').implementation = function(u, p) {
  2.     console.log("login: " + u + ", " + p);
  3.     return this.login(u, p);
  4. };
复制代码

四、hook 构造函数
  1. cls.$init.overload('java.lang.String').implementation = function(arg) {
  2.     console.log("构造函数参数: " + arg);
  3.     this.$init(arg);
  4. };
复制代码

五、hook 动态加载的类
用 ClassLoader 等类加载后再 hook:
  1. Java.enumerateClassLoaders({
  2.     onMatch: function(loader) {
  3.         try {
  4.             var factory = Java.ClassFactory.get(loader);
  5.             var cls = factory.use("com.target.Dynamic");
  6.             cls.secret.implementation = function() {
  7.                 console.log("hooked dynamic class");
  8.                 return this.secret();
  9.             };
  10.         } catch(e) {}
  11.     },
  12.     onComplete: function() {}
  13. });
复制代码

六、主动调用方法
不 hook,直接调目标方法:
  1. Java.perform(function() {
  2.     var cls = Java.use("com.target.Util");
  3.     var instance = cls.$new();
  4.     var result = instance.encrypt("test");
  5.     console.log("主动调用结果: " + result);
  6. });
复制代码

七、常见技巧

  • frida-trace 自动追踪所有方法:frida-trace -U -f com.target.app -j '*'
  • 用 spawn 模式启动 App:frida -U -f com.target.app --no-pause,能在 App 启动前就 hook
  • hook native 层用 Interceptor.attach,跟 Java 层语法不同


温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
回复

使用道具 举报

0

主题

379

回帖

0

积分

UID
871168
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-7-5 06:37:36 | 显示全部楼层
感谢分享,之前一直卡在这个点,看完豁然开朗。
回复

使用道具 举报

0

主题

347

回帖

39

积分

UID
269140
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-7-5 07:55:24 | 显示全部楼层
楼主的排版可以再优化下,代码块用起来会更清楚。
回复

使用道具 举报

0

主题

350

回帖

350

积分

UID
799658
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-7-5 10:31:01 | 显示全部楼层
这个流程我在真机上验证过,确实可行,注意备份就行。
回复

使用道具 举报

0

主题

364

回帖

0

积分

UID
473702
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-7-5 14:24:27 | 显示全部楼层
这篇干货,比那些只有命令没有解释的强太多了。
回复

使用道具 举报

0

主题

374

回帖

61

积分

UID
506266
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-7-5 19:35:42 | 显示全部楼层
这个方法我用过,确实可行,不过新一点的版本已经加了检测。
回复

使用道具 举报

0

主题

390

回帖

45

积分

UID
481551
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-7-6 02:04:46 | 显示全部楼层
这个思路让我想到另一个场景,回头试试能不能套用。
回复

使用道具 举报

0

主题

382

回帖

46

积分

UID
798830
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-7-6 09:51:39 | 显示全部楼层
同意楼主的判断,现在加固手段越来越多,纯手工成本太高了。
回复

使用道具 举报

0

主题

375

回帖

375

积分

UID
391067
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-7-6 18:56:20 | 显示全部楼层
照着试了一下,第一遍没成功,发现是权限问题,建议楼主补充个提示。
回复

使用道具 举报

0

主题

363

回帖

0

积分

UID
478699
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-7-7 05:18:50 | 显示全部楼层
想请教一下,你用的这个版本是哪个?我这边跑起来报错。
回复

使用道具 举报

温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ客服返回顶部