Android — Linux ptrace () читать всю страницу памяти

Здравствуйте, я пытаюсь сбросить память процесса в Android / Linux. Прямо сейчас я читаю карты памяти, чтобы получить адресное пространство области памяти, и затем я читаю каждое слово, как это:

ptrace(PTRACE_ATTACH, pid, NULL, NULL);
wait(NULL);

read each word in this memory region:
word = ptrace(PTRACE_PEEKDATA, pid, (void *)address, NULL);

ptrace(PTRACE_CONT, pid, NULL, NULL);
ptrace(PTRACE_DETACH, pid, NULL, NULL);

Разве не существует более эффективного решения, читающего непосредственно всю страницу памяти путем указания начала / конца адресного пространства памяти для чтения?

0

Решение

Существует два возможных способа более эффективного чтения памяти из другого процесса.

Если ваше ядро ​​поддерживает это (я понятия не имею о ядрах Android), вы можете использовать process_vm_readv,

Другой способ — открыть /proc/.../mem файл целевого процесса и чтение из него. GDB использует этот метод, хотя я думаю, что только потому, что process_vm_readv является «новым» (в терминах GDB).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]