Я пытаюсь прочитать память процесса, используя task_for_pid
/vm_read
.Получение базового адреса процесса в Mac OSX
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)?
Супер полезный фрагмент для очень недокументированной функции. – Matt
Из командной строки это может быть полезно: sample $ pid 1 2>/dev/null | grep "Load Address" – sdsykes