我想要实现的是在Linux下通过启动C命令行应用程序来启动进程,然后首先找出进程使用的最低和最高虚拟内存地址,然后使用printf()将它们之间的每个字节作为十六进制值打印出来。这是否可能?
我甚至可以弄清楚自己进程的最低和最高虚拟内存地址吗?
如果我有这些,我想我可以使用指针算术结合printf("%p, &address)打印所有之间的内容。
有什么建议吗?
我甚至可以弄清楚自己进程的最低和最高虚拟内存地址吗?
如果我有这些,我想我可以使用指针算术结合printf("%p, &address)打印所有之间的内容。
有什么建议吗?
/proc/self/psinfo
获取所需信息,但请不要忘记某些内存块仅是垃圾(例如分配然后释放的块),对此的了解与 RT 实现密切相关。此外,更有组织的数据可在/proc/self/maps
和/proc/self/mem
中找到。您甚至可以(如果您的内核支持)直接读取/复制/proc/self/core
。有关详细信息,请查阅 proc(5)。 - Adriano Repettiint* foo = (int*)0xDEADBEEF;
)。 - slugonamissionunsigned int * a =(unsigned int *)0x08048000; printf("%02x \ n",(char)* a);
这是ELF魔数中的7f。 - JohnnyFromBF