【问题标题】:Frida hook final nativeFrida hook final 原生
【发布时间】:2019-02-15 14:46:36
【问题描述】:

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

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

【问题讨论】:

    标签: javascript java frida


    【解决方案1】:

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

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

    另外,检查你的函数(testfunction)是否在 rpc.export 部分中。

    如果这能解决您的问题,请告诉我。

    【讨论】:

      【解决方案2】:

      目前您的代码没有挂钩任何东西。要钩住一个函数,你需要重写它的实现,如下所示:

      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;
          };
      });
      

      查看documentationcheat sheet 了解更多常见示例。

      【讨论】:

        猜你喜欢
        • 2021-09-20
        • 2020-07-27
        • 1970-01-01
        • 2021-06-18
        • 2020-02-17
        • 1970-01-01
        • 2023-02-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多