Frida是否具有支持跟踪内存修改的功能



我在iOS上使用frida的javascript绑定,我想跟踪线程所做的所有内存修改。我的意思不是说在特定的位置,比如内存访问监视器通常被用来。我有一个使用dispach_once和pthread_once的线程,我希望这些线程中的所有修改也能被跟踪。我所说的修改是指对堆或代码页中的内存的任何写入,而不是读取代码页、写入regs或诸如此类的内容。只是对内存的显式更改,我认为它是一个静态的C变量或结构。非常感谢您的帮助。附带说明:该应用程序对lldb有防御措施,对frida跟踪程序也有一些防御措施:(所以idk什么会起作用……我也不介意切换到C而不是js,但我需要在iOS a12+上工作

您可以使用内存权限来构建满足您需求的

拦截&日志谁通过删除权限w/mprotect读取/写入x2。

Process.setExceptionHandler(exp => {
console.warn(JSON.stringify(Object.assign(exp, { _lr: DebugSymbol.fromAddress(exp.context.lr), _pc: DebugSymbol.fromAddress(exp.context.pc) }), null, 2));
Memory.protect(exp.memory.address, Process.pointerSize, 'rw-');
return true; // goto PC 
});
Interceptor.attach(funcPtr, {
onEnter(args) {
console.log('onEnter', JSON.stringify({
x2: this.context.x2,
mprotect_ret: Memory.protect(this.context.x2, 2, '---'),
errno: this.errno
}, null, 2));
}
});

最新更新