[英]Linux ptrace() read whole memory page
您好,我尝试在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);
通过指定要读取的内存地址空间的开始/结尾,是否有更有效的解决方案来直接读取整个内存页?
有两种可能的方法可以从另一个进程更有效地读取内存。
如果您的内核支持(我对Android内核一无所知),则可以使用process_vm_readv
。
另一种方法是打开目标进程的/proc/.../mem
文件并从中读取。 gdb使用此方法,尽管我认为仅是因为process_vm_readv
是“ new”(以gdb的术语)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.