Frida-Gadget не работает с app_process AndroidJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Frida-Gadget не работает с app_process Android

Сообщение Anonymous »

Я хочу настроить Java-программу на своем устройстве Android с помощью Frida-Gadget, но мне не удается заставить ее работать. Вот шаги, которые я предпринял.
Прежде всего, вот код простой Java-программы:

Код: Выделить всё

import java.io.IOException;
import java.io.InputStreamReader;

public class Program{

public static void main(String[] args) {
System.load("/data/local/tmp/frida-gadget.so");
System.out.println("Hello World");
System.out.println("Press Enter to continue...");
try {
new BufferedReader(new InputStreamReader(System.in)).readLine();
} catch (IOException e) {
e.printStackTrace();
}
test();
}

public static void test() {
System.out.println("Hello World 2");
}
}
Я скомпилировал эту программу в файл Program.class, а затем в файл .dex с помощью d8 Android SDK Tools.
Я упаковал файл groups.dex в jar-архив и отправил его на свое устройство Android (Android 11).
Я также отправил файл frida-gadget.so (arm64 версии 16.1.3) в /data/local/tmp, а также файл frida-gadget.config и скрипт. Файл .js.
Вот мой файл frida-gadget.config:

Код: Выделить всё

  "interaction": {
"type": "script",
"path": "/data/local/tmp/script.js"
}
}
и мой файл сценария:

Код: Выделить всё

console.log("frida stared without issues!");
console.log(Java.available)
console.log(Process.id)
Java.perform(function() {
console.log("inside Java.perform()")
try {
var ProgramClass = Java.use('Program');

ProgramClass.test.implementation = function() {
console.log("Hooked Hello World 2");
this.test();  // Call the original function
};
} catch(e) {
console.error("Error during instrumentation: " + e.message);
}
});
Я начинаю свою программу со следующей строки:

Код: Выделить всё

adb shell CLASSPATH=/sdcard/program.jar exec app_process /system/bin/ Program
На выходе я вижу все строки из вызовов console.log() из сценария, за исключением тех, которые находятся внутри вызова Java.perform(). На самом деле не похоже, что что-либо внутри Java.perform() выполняется, поскольку инструментарий также не работает.
Что я пробовал до сих пор:
Я также поставил

Код: Выделить всё

"java":
{
"enabled":true
}
внутри моей конфигурации, без каких-либо результатов.
Я заметил, что как только я включаю System.load("/data/ local/tmp/frida-gadget.so") в моей программе, она завершает выполнение, но возвращается с кодом завершения -1.
Но в любом случае я не могу найти никакого значимого сообщения об ошибке ни в logcat, ни в консоли.
Я также пытался обернуть весь скрипт блоком try catch, но безрезультатно.
Мой вопрос теперь заключается в том, сталкивался ли кто-нибудь с подобными проблемами или знает ли кто-нибудь, существуют ли конкретные меры безопасности. на Android, которые не позволяют инструментировать код здесь. (У меня было намерение использовать Frida-Gadgets специально для устройств без рута).
Я вынужден использовать app_process по вполне конкретным причинам, это всего лишь тестовая программа.
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/768 ... pp-process
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»