用 Frida 打印 class 数据成员
Print class data member with 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 也打印了以下内容
“对象对象]”
我会尝试以下方法:
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;
};
});
})
这使旧方法保持不变(returning 一个值)并使用原始方法的 return 值打印到控制台。
我认为您的原始代码有问题,因为您在访问 class 成员时没有写 this.mAuthToken
。
使用.value 属性访问字段。我也经常忘记这个。
我可以成功连接到这个 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(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;
};
});
})
这使旧方法保持不变(returning 一个值)并使用原始方法的 return 值打印到控制台。
我认为您的原始代码有问题,因为您在访问 class 成员时没有写 this.mAuthToken
。
使用.value 属性访问字段。我也经常忘记这个。