Próbuję odczytać pamięć procesu za pomocą task_for_pid
/vm_read
.Uzyskiwanie adresu podstawowego procesu w systemie 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);
W tym przypadku odczytałem pierwsze 2048 bajtów.
Działa to, gdy znam adres bazowy procesu (który można znaleźć za pomocą gdb "informacje udostępnione" - w tym przypadku 0x10e448000
), ale jak znaleźć adres podstawowy w czasie wykonywania (bez patrzenia na to z gdb)?
Super użyteczny fragment bardzo nieudokumentowanej funkcji. – Matt
Z wiersza poleceń może to być przydatne: sample $ pid 1 2>/dev/null | grep "Załaduj adres" – sdsykes