我试图转储进程的内存并区分不同的部分,例如代码页,保护页,堆栈和堆。我可以通过调用添加系统调用来转储进程内存,在这个系统调用中我使用memmove将进程内存转储到我的缓冲区。然后在我的用户级功能中打印缓冲区。但我无法弄清楚这段记忆的不同部分。现在我的胚胎想法是找到一些指向这些部分边界的特殊指针。但我很困惑指针可以做到这一点?或者我应该尝试计算这些部分的大小,然后打印(下一部分是Code / Guard页面)?我可以确保将有一个4k页表用于保护页面表,但我不知道如何获得其他部分的大小,如代码页或堆栈。
我还想让我的用户级别函数可以通过给出pid作为参数来转储其他进程的内存但是我很困惑如何启动。如何找到其他进程的页表并将其输入到我的内核级转储函数中?
答案 0 :(得分:0)
你面临的问题是记忆就是记忆。一个进程可以有多个堆栈和多个堆栈。它们看起来就像记忆。
在某些系统上,您可以检查可执行文件,以查找应用程序在内存中的结构。但是,现代负载经常将进程的加载随机化。