我有以下Java代码:
final String b() throws Exception {}
.....
return v0;
public final void b(Application arg6) {}
如何获取第一个函数的返回值? 这是我的JavaScript代码,我将其与frida挂钩,但无法正常工作。
testfunction: function () {
Java.perform(function () {
var encrypter = Java.use("es");
return encrypter.b();
});
},
任何人都可以告诉我如何解决这个问题。非常感谢。
答案 0 :(得分:0)
定义导出时,不必重载该方法。例如,根据您的情况:
rpc.exports = {
testfunction: function () {
Java.perform(function() {
var es_class = Java.use("es");
return es_class.b();
});
}
}
另外,检查您的函数(testfunction)是否在rpc.export部分中。
让我知道这是否可以解决您的问题。
答案 1 :(得分:0)
当前,您的代码没有钩住任何东西。要挂钩函数,您需要按如下方法覆盖其实现:
Java.perform(function () {
var encrypter = Java.use("es");
// Overload needed because two 'b' functions exist:
var b = encrypter.b.overload();
b.implementation = function() {
const retVal = b.call(this);
console.log("hook succeeded! Return value: " + retVal);
return retVal;
};
});
检出documentation和此cheat sheet以获得更多常见示例。