1

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

“[对象对象]”

4

2 回答 2

8

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

于 2018-09-13T11:34:36.730 回答
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我认为您的原始代码有问题,因为您在访问班级成员时不写。

于 2018-02-13T22:54:55.780 回答