Macos OSX上的内存更改

Macos OSX上的内存更改,macos,memory,mach,Macos,Memory,Mach,我举了一个例子,使用task_for_pid()和mach_vm_write()将数据写入进程内存 如果某些进程将数据写入应用程序任务中的指定地址,如何监视内存的更改?您不能。使用mach_vm_write(如在Windows中使用WriteProcessMemory或在Linux中使用ptrace(2))不会为写入的进程提供任何通知。你唯一的选择是: A) 在写入任务和受害者任务之间使用IPC对象 B) 在受害者任务中生成一个线程,以监视该内存区域的更改。这具有连续轮询的明显缺点。尽管更高级的

我举了一个例子,使用task_for_pid()和mach_vm_write()将数据写入进程内存


如果某些进程将数据写入应用程序任务中的指定地址,如何监视内存的更改?

您不能。使用mach_vm_write(如在Windows中使用WriteProcessMemory或在Linux中使用ptrace(2))不会为写入的进程提供任何通知。你唯一的选择是:

A) 在写入任务和受害者任务之间使用IPC对象
B) 在受害者任务中生成一个线程,以监视该内存区域的更改。这具有连续轮询的明显缺点。尽管更高级的解决方案是在您正在写入的任务中创建一个远程线程(您可以这样做,因为您现在已经获得了任务端口),并让它做一些事情

你不能。使用mach_vm_write(如在Windows中使用WriteProcessMemory或在Linux中使用ptrace(2))不会为写入的进程提供任何通知。你唯一的选择是:

A) 在写入任务和受害者任务之间使用IPC对象 B) 在受害者任务中生成一个线程,以监视该内存区域的更改。这具有连续轮询的明显缺点。尽管更高级的解决方案是在您正在写入的任务中创建一个远程线程(您可以这样做,因为您现在已经获得了任务端口),并让它做一些事情

task_for_pid(mach_task_self(), pid, &target_task);
mach_vm_write(target_task, address, '?', local_size);