Linux ptrace()读取整个内存页
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
是"新的"(用gdb的话说)。
相关文章:
- 我无法从内存中读取值
- 如何读取特定地址的进程内存?
- 使用 OpenSSL 从内存中读取原始 SSL/TLS 证书
- 如何在 WSL 2 中读取物理内存?
- 如何使用带有矢量的 winapi 读取进程内存从另一个进程读取缓冲区?
- 从只读内存中读取结构
- 当注入程序的内存空间时,如何读取从 0 到 0xFFFFFFFFF 的每个字节?我正在创建模式扫描仪
- 如何运行外部程序,向其传递内存地址以读取/写入?
- C++指针将内存读取为 0
- 读取进程内存多级指针(DLL 注入)
- 组织从内存读取的数据的最佳方法(用于调试)c++
- 使用ClgetDeviceInfo从内存读取访问违规
- C++ - 分叉进程无法从共享内存读取
- C# 简化多指针的内存读取
- Linkedlist内存读取错误
- 从原始内存读取值(符合MISRA)
- c++ DLL内存读取崩溃
- 在wwpal rabbit中从内存读取数据
- c++中什么是预内存读取?
- 优化内存读取和写入的长期运行