task_for_pid
/を使用してプロセスのメモリを読み取ろうとしていますvm_read
。
uint32_t sz;
pointer_t buf;
task_t task;
pid_t pid = 9484;
kern_return_t error = task_for_pid(current_task(), pid, &task);
vm_read(task, 0x10e448000, 2048, &buf, &sz);
この場合、最初の 2048 バイトを読み取ります。
これは、プロセスのベースアドレスがわかっている場合に機能します(gdb「info shared」を使用して見つけることができます-この場合0x10e448000
)が、実行時にベースアドレスを見つける方法(gdbで見ずに)?