OSX上的内存更改

时间:2013-04-16 08:01:23

标签: macos memory mach

我做了一个使用task_for_pid()和mach_vm_write()写入进程内存的示例。

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

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

1 个答案:

答案 0 :(得分:1)

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

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