星期五问题。挂钩静态方法调用

时间:2020-05-10 18:30:54

标签: android security hook code-injection frida

我正在尝试学习Frida,并进行了一些尝试。事情大部分都进​​行了,幸运的是我可以找到足够的示例和教程来帮助我。但是,在这个时候,我手头上有一个非常具体的任务。

所以我们在下面说的是我指的Frida钩子:

Java.perform(() => {
      const TestClass = Java.use(
        'com.test.TestClass',
      );
      TestClass.testStaticMethod.overload('java.lang.String', 'java.util.Map').implementation = function (
        str,
        map,
      ) {


        console.log('intercept!');
        return this.b(str, map);
      };
      const testStr = Java.use('java.lang.String').$new('test');
      const testMap = Java.use('java.util.HashMap').$new();
 });
 //wait (sleep) 10-15 secs
 Java.perform(() => {
      // test it!   
      TestClass.testStaticMethod(testStr, testMap);
    });

它不输出“拦截!” 可能是什么原因?

1 个答案:

答案 0 :(得分:0)

在脚本中对TestClass.testStaticMethod(testStr, testMap);的调用不会执行该挂钩,而是执行原始的未挂钩方法。因此,在加载脚本时,您将永远不会看到输出intercept!

仅当钩子方法由应用程序执行时,才会生成输出intercept!