【问题标题】:Print class data member with Frida使用 Frida 打印类数据成员
【发布时间】:2018-09-13 19:34:36
【问题描述】:

我可以成功挂钩到这个 getAuthToken 方法

public class AuthResponse2 extends DataResponse<Data> {
    public static class Data {
        private String mAuthToken;

        public String getAuthToken() {
            return this.mAuthToken;
        }
    }
}

这是我的 Frida JS 脚本

setImmediate(function() {
    console.log("[*] Starting script");

        Java.perform(function () {
            var Activity = Java.use("com.app.network.AuthResponse2$Data");
            Activity.getAuthToken.overload().implementation = function () {
                console.log(mAuthToken);
                console.log(mAuthToken.toString());
            };
        });

})

但我无法打印 mAuthToken。不确定我需要使用哪种语法。

我试过了

this.mAuthToken 也是,然后打印以下内容

“[对象对象]”

【问题讨论】:

  • 使用setImmediate()的目的是什么?

标签: frida


【解决方案1】:

使用 .value 属性访问字段。我也经常忘记这一点。

【讨论】:

    【解决方案2】:

    我会尝试以下方法:

    setImmediate(function() {
        console.log("[*] Starting script");
    
            Java.perform(function () {
                var Activity = Java.use("com.app.network.AuthResponse2$Data");
                Activity.getAuthToken.overload().implementation = function () {
                    var mAuthToken = this.getAuthToken(); // use `call` if there are other overloads
                    console.log(mAuthToken);
                    return mAuthToken;
                };
            });
    
    })
    

    这会保持旧方法不变(返回一个值)并使用原始方法的返回值打印到控制台。

    我认为您的原始代码存在问题,因为您在访问类成员时没有写this.mAuthToken

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-08
      • 2020-03-17
      • 2018-07-06
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      相关资源
      最近更新 更多