有些程序总是有相同的地址,有些程序则不同

逆向工程 艾达 调试器 ollydbg
2021-06-29 10:18:39

为什么IDA和Ollydbg总是在同一个地址打开一些带有main()函数的程序?

IDA 给出的地址与 Ollydbg 在运行时给出的地址相同。但是,当我编写自己的 C 应用程序并运行它main()时,Ollydbg 中每个运行时的地址总是不同的。

然而,在 IDA 中,总是有相同的地址,永远不会等于 Ollydbg 给出的地址,它看起来只是一些相对地址。

这是由编译器还是其他原因引起的?

1个回答

来自http://en.wikipedia.org/wiki/Address_space_layout_randomization -

地址空间布局随机化 (ASLR)是一种计算机安全技术,涉及防止缓冲区溢出攻击。为了防止攻击者可靠地跳转到内存中的特定被利用函数(例如),ASLR 涉及随机排列程序关键数据区域的位置,包括可执行文件的基址以及堆栈、堆、和库,在进程的地址空间中。

您可以在构建时使用链接器选项在 C 应用程序中禁用 ASLR /DYNAMICBASE:NO