You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Frida在运行时从方法中提取Token变量值?

Frida Hook 提取 Token 方案

首先你需要明确几个关键信息(如果代码里的com.xx.xx不是目标X类,替换成实际的X类全路径):

  • 目标final方法的具体名称(比如假设叫fetchAuthResult)
  • 该方法返回的result对象可调用getToken()方法获取token

以下是两种适配场景的补全代码:

场景1:直接Hook目标X类的final方法(推荐)

如果目标final方法是X类的成员方法,直接Hook该方法,在方法执行后提取token:

Java.perform(function () {
    // 替换成实际的X类全路径,比如com.example.app.XClass
    const TargetClass = Java.use("com.xx.xx");
    
    // 替换成目标final方法的真实名称
    TargetClass.目标方法名.implementation = function() {
        // 调用原方法获取result对象
        const result = this.目标方法名.apply(this, arguments);
        
        // 调用result的getToken()提取token
        const token = result.getToken();
        
        // 打印提取到的token
        console.log("提取到的Token:", token);
        
        // 返回原方法结果,不影响应用正常逻辑
        return result;
    };
    
    console.log("Hook 已加载,等待目标方法执行...");
});

场景2:基于Java.choose枚举实例后Hook(适配你提供的代码框架)

如果需要枚举内存中X类的实例,再Hook实例的目标方法:

Java.perform(function () {
    Java.choose("com.xx.xx", {
        onMatch: function (inst) {
            // 替换成目标final方法的真实名称
            const methodName = "目标方法名";
            
            // Hook该实例的目标方法
            inst[methodName].implementation = function() {
                const result = this[methodName].apply(this, arguments);
                const token = result.getToken();
                console.log("提取到的Token:", token);
                return result;
            };
            
            // 可选:找到实例后停止枚举,避免重复Hook
            return "stop";
        },
        onComplete: function () {
            console.log("实例枚举完成");
        }
    });
    console.log("Done");
});

注意事项

  • 替换代码中的com.xx.xx为实际的X类全限定名(比如com.example.app.XClass)
  • 替换目标方法名为该final方法的真实名称(比如getAuthResult)
  • 如果目标方法有参数,Hook时需要匹配参数类型,例如方法是getAuthResult(String, int),则代码需调整为:
    TargetClass.getAuthResult.implementation = function(username, age) {
        const result = this.getAuthResult(username, age);
        // ...后续提取token逻辑
    };
    
  • 执行你提供的命令即可:frida -U -f "xxx.apk" -l test.js;若应用已启动,可移除-f参数并指定应用包名(比如frida -U com.example.app -l test.js)

内容的提问来源于stack exchange,提问作者nora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:40:27