使用Frida打印类数据成员

时间:2018-02-13 17:55:14

标签: frida

我可以成功挂钩这个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,以下内容被打印

“[object Object]”

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我会尝试以下方法:

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