Я использую Frida для анализа Android приложения и хотел бы отследить все сделанные системные вызовы, особенно ptrace. Я пытался использовать frida-trace или Interceptor, но оба не дали мне ожидаемых результатов. Далее я попытался использовать Сталкер. См. Следующий сценарий:
Process.enumerateThreadsSync().forEach(function (thread){
send("Stalking " + thread.id)
Stalker.follow(thread.id, {
transform: function(iterator){
var instruction = iterator.next();
do{
if(instruction.mnemonic === 'int'){
send(instruction.toString());
}
iterator.keep();
}while((instruction = iterator.next()) !== null);
}
});
});
Хотя с самого начала это работает нормально, вскоре происходит сбой:
03-28 10:39:18.787 1918 1935 I ActivityManager: Start proc 6934:com.android.settings/1000 for activity com.android.settings/.Settings
03-28 10:39:19.080 6934 6992 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 6992 (ndroid.settings), pid 6934 (ndroid.settings)
03-28 10:39:19.097 6995 6995 I crash_dump32: performing dump of process 6934 (target tid = 6992)
Проблема, связанная с GitHub: https://github.com/frida/frida/issues/1230
Есть ли другой способ отследить системные вызовы с использованием Frida, или я что-то упускаю из сценария? Я работаю с AVD Android 9, уровень API 28 x86