1

task_for_pid() と mach_vm_write() を使用してプロセス メモリに書き込む例を作成しました。

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

アプリケーションのタスクで、一部のプロセスが指定したアドレスにデータを書き込む場合、メモリの変化を監視するにはどうすればよいですか?

4

1 に答える 1

2

それはいけません。mach_vm_write を使用すると (Windows で WriteProcessMemory を使用する場合や Linux で ptrace(2) を使用する場合と同様)、書き込まれたプロセスに関する通知は提供されません。あなたの唯一の選択肢は次のとおりです。

A) 書き込みタスクと犠牲タスクの間で IPC オブジェクトを使用する B) 犠牲タスクでスレッドを生成して、メモリのその領域の変更を監視する。これには、継続的なポーリングという明らかな欠点があります。より高度な解決策は、書き込み先のタスクにリモート スレッドを作成し (タスク ポートを既に取得しているため、これは可能です)、何かを実行させることです。

于 2013-04-25T21:04:50.297 に答える