当我运行程序' A'时,堆和堆栈的虚拟地址会被更改 我运行相同的程序' A'。
我知道堆栈,堆的虚拟地址没有定义在 可执行目标文件(精灵格式)。它们是可变的东西。我可以通过&readelf -l'来查看它。命令。
但是, 为什么每次虽然运行相同的程序,核心必须改变堆栈的地址? 这就是为什么我这样问的原因。
我正在制作一个简单的流程模拟器。 我试图在intel cpu环境(64位)中模仿来自raspbian(32bit)的程序。
所以,我必须设计32位堆栈。但我不知道我如何模仿堆栈系统。
我编写了ANONYMOUS页面,然后我必须将它用作堆栈来模拟程序。 我必须模仿程序(32位)使用堆栈的方式。但程序的堆栈虚拟地址在每个运行时都会发生变化。我需要帮助。
答案 0 :(得分:0)
可以是操作系统在堆栈中使地址空间随机化,堆以避免安全漏洞。 如果攻击者总是知道要为进程找到此信息,则可能更容易损害系统。