为什么IDA和Ollydbg总是在同一地址使用main()函数打开某些程序?

IDA给定的地址等于运行时Ollydbg给定的地址。但是,当我编写自己的C应用程序并运行它时,在Ollydbg中每个运行时之间,main()的地址始终是不同的。

在IDA中,始终有相同的地址,从不等于由Ollydbg给出的一个,看起来只是一些相对地址。

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

评论

在ASLR上阅读。

ASLR =地址空间布局随机化

#1 楼

来自http://en.wikipedia.org/wiki/Address_space_layout_randomization-地址空间布局随机化(ASLR)是一种计算机安全技术,涉及防止缓冲区溢出攻击。 。为了防止攻击者可靠地跳至内存中的特定被利用功能(例如),ASLR涉及随机地
安排程序关键数据区域的位置,包括
可执行文件的基础以及堆栈,堆和
库在进程地址空间中的位置。


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

评论


您还可以使用EDITBIN或任何十六进制编辑器从现有EXE中删除该标志。

–伊戈尔·斯科钦斯基♦
13-10-27在16:15