0

我有这个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();
        });
    },

任何人都可以告诉我如何解决这个问题。非常感谢。

4

2 回答 2

0

定义导出时,不必重载该方法。例如,在您的情况下:

rpc.exports = {
  testfunction: function () {
    Java.perform(function() {
      var es_class = Java.use("es");
      return es_class.b();
    });
  }
}

此外,检查您的函数(testfunction)是否在 rpc.export 部分内。

让我知道这是否能解决您的问题。

于 2019-02-09T20:54:22.887 回答
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;
    };
});

查看文档和此备忘单以获取更常见的示例。

于 2019-02-15T06:39:18.343 回答