咨询发布 发表于 2026-7-4 09:23:41

Frida hook Java层常用操作:六个实战模板

Frida 是安卓逆向最常用的工具。这篇讲 Java 层 hook 的常用操作。

一、环境准备

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


二、hook 普通方法
Java.perform(function() {
    var cls = Java.use("com.target.Util");
    cls.encrypt.implementation = function(input) {
      console.log("encrypt input: " + input);
      var ret = this.encrypt(input);
      console.log("encrypt output: " + ret);
      return ret;
    };
});

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

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

五、hook 动态加载的类
用 ClassLoader 等类加载后再 hook:
Java.enumerateClassLoaders({
    onMatch: function(loader) {
      try {
            var factory = Java.ClassFactory.get(loader);
            var cls = factory.use("com.target.Dynamic");
            cls.secret.implementation = function() {
                console.log("hooked dynamic class");
                return this.secret();
            };
      } catch(e) {}
    },
    onComplete: function() {}
});

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

七、常见技巧

[*]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 层语法不同


https://www.metk.cn/img/posts/frida_hook_java.jpg

踏雪80 发表于 2026-7-5 06:37:36

感谢分享,之前一直卡在这个点,看完豁然开朗。

寒山观星 发表于 2026-7-5 07:55:24

楼主的排版可以再优化下,代码块用起来会更清楚。

闻笛半盏 发表于 2026-7-5 10:31:01

这个流程我在真机上验证过,确实可行,注意备份就行。

一叶林间 发表于 2026-7-5 14:24:27

这篇干货,比那些只有命令没有解释的强太多了。

寒山记事 发表于 2026-7-5 19:35:42

这个方法我用过,确实可行,不过新一点的版本已经加了检测。

柚子阿澈 发表于 2026-7-6 02:04:46

这个思路让我想到另一个场景,回头试试能不能套用。

晚风随笔 发表于 2026-7-6 09:51:39

同意楼主的判断,现在加固手段越来越多,纯手工成本太高了。

青柠79 发表于 2026-7-6 18:56:20

照着试了一下,第一遍没成功,发现是权限问题,建议楼主补充个提示。

林间寒山 发表于 2026-7-7 05:18:50

想请教一下,你用的这个版本是哪个?我这边跑起来报错。
页: [1] 2 3 4 5 6
查看完整版本: Frida hook Java层常用操作:六个实战模板