我可以成功挂钩这个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]”
答案 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
。