【问题标题】:Memory Change on OSXOSX 上的内存更改
【发布时间】:2013-04-26 05:04:50
【问题描述】:

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

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

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

【问题讨论】:

    标签: macos memory mach


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多