gpt4 book ai didi

c - C 编译器中的地址空间布局随机化

转载 作者:太空狗 更新时间:2023-10-29 17:22:09 26 4
gpt4 key购买 nike

如果我没记错的话,每次运行程序时,ASLR 都会使 C 编译器中的局部变量具有不同的地址。但是当我在 Turbo C++ 和 Dev-CPP IDE 中尝试它时,它只是为局部变量返回一个类似的地址。我试过的代码:

#include <stdio.h>
#include <conio.h>

int main()
{
int x = 10;
int *ptr = &x;
printf("%d", ptr);
getch();
return 0;
}

之前,我认为局部变量的地址是相同的,因为它们分配在相同的堆栈区域,因此是相同的内存地址。但是当我在 stackoverflow 中找到一个关于 ASLR 的线程时,它让我做了这些。我想这是因为编译器。任何人都可以阐明这一点吗?

编辑:

我使用的是 Windows 7。

最佳答案

看来您正在使用 Windows。

引自wikipedia

Microsoft's Windows Vista (released January 2007) and later have ASLR enabled for only those executables and dynamic link libraries specifically linked to be ASLR-enabled. For compatibility, it is not enabled by default for other applications. Typically, only older software is incompatible and ASLR can be fully enabled by editing a registry entry "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages".

Host-based intrusion prevention systems such as WehnTrust and Ozone also offer ASLR for Windows XP and Windows Server 2003 operating systems. WehnTrust is open-source Complete details of Ozone's implementation is not available

确保启用 ASLR 以观察预期的行为。

关于c - C 编译器中的地址空间布局随机化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25113267/

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