Estoy tratando de leer la memoria de un proceso usando task_for_pid
/vm_read
.Obteniendo la dirección base del proceso en 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);
En este caso, leí los primeros 2048 bytes.
Esto funciona cuando conozco la dirección base del proceso (que puedo averiguar usando gdb "información compartida" - en este caso 0x10e448000
), pero ¿cómo puedo averiguar la dirección base en tiempo de ejecución (sin mirarlo? con gdb)?
Fragmento muy útil para una función muy indocumentada. – Matt
Desde la línea de comandos, esto puede ser útil: muestra $ pid 1 2>/dev/null | grep "Cargar dirección" – sdsykes