выпуск фриды. перехват вызова статического метода

Я пытаюсь изучить Фриду и пока немного экспериментирую. В основном все работало, к счастью, я смог найти достаточно примеров и руководств, которые помогут мне в этом. Однако на данный момент я застрял с очень конкретной задачей.

Итак, скажем, ниже приведена зацепка 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);
    });

он НЕ выводит «перехват!» Что может быть причиной?


person Denzel Swango    schedule 10.05.2020    source источник
comment
У меня есть сомнения по поводу перегрузки. Вы используете HashMap, но перегружаете карту. Из того, что я вижу на docs.oracle.com/javase /8/docs/api/java/util/HashMap.html, HashMap реализует интерфейс карты, но не расширяет его, поэтому вместо этого вы можете ввести другую перегрузку. Вы должны попробовать TestClass.testStaticMethod.overload('java.lang.String', 'java.util.HashMap') или TestClass.testStaticMethod.overload('java.lang.String', 'java.util.AbstractMap').   -  person Jean-Baptiste Martin    schedule 11.05.2020
comment
Дензел, пожалуйста, никогда не публикуйте многострочный код в комментариях, потому что там он совершенно нечитаем! Вместо этого отредактируйте свой вопрос и добавьте туда код.   -  person Robert    schedule 12.05.2020


Ответы (1)


Вызов TestClass.testStaticMethod(testStr, testMap); в вашем скрипте выполняет не хук, а исходный метод без хука. Поэтому вы никогда не увидите вывод intercept! при загрузке скрипта.

Вывод intercept! будет сгенерирован только в том случае, если перехваченный метод будет выполнен приложением.

person Robert    schedule 11.05.2020