gpt4 book ai didi

c - 我们如何区分进程内存的不同部分?

转载 作者:行者123 更新时间:2023-11-30 16:38:10 24 4
gpt4 key购买 nike

我试图转储进程的内存并区分不同的部分,例如代码页、保护页、堆栈和堆。我可以通过调用添加系统调用来转储进程内存,在这个系统调用中,我使用 memmove 将进程内存转储到缓冲区。然后在我的用户级函数中打印缓冲区。但我无法弄清楚这段内存的不同部分。现在我的初步想法是找到一些特殊的指针来指向这些部分的边界。但我很困惑什么指针可以做到这一点?或者我应该尝试计算这些部分的大小并打印(下一部分是代码/保护页)?我可以确保有一个 4k 页表用于保护页表,但我不知道如何获取其他部分的大小,例如代码页或堆栈。

我还想让我的用户级函数可以通过将 pid 作为参数来转储其他进程的内存,但我很困惑如何开始。如何找到其他进程的页表并将它们输入到我的内核级转储函数中?

最佳答案

你面临的问题是内存就是内存。一个进程可以有多个堆和多个栈。它们只是看起来像内存。

在某些系统上,您可以检查可执行文件以了解应用程序在内存中的结构。然而,现代加载经常随机化内存中进程的加载。

关于c - 我们如何区分进程内存的不同部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47599872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com