IDA给定的地址等于运行时Ollydbg给定的地址。但是,当我编写自己的C应用程序并运行它时,在Ollydbg中每个运行时之间,
main()
的地址始终是不同的。在IDA中,始终有相同的地址,从不等于由Ollydbg给出的一个,看起来只是一些相对地址。
这是由编译器还是其他原因引起的?
#1 楼
来自http://en.wikipedia.org/wiki/Address_space_layout_randomization-地址空间布局随机化(ASLR)是一种计算机安全技术,涉及防止缓冲区溢出攻击。 。为了防止攻击者可靠地跳至内存中的特定被利用功能(例如),ASLR涉及随机地安排程序关键数据区域的位置,包括
可执行文件的基础以及堆栈,堆和
库在进程地址空间中的位置。
您可以在C应用程序中禁用ASLR使用链接器选项
/DYNAMICBASE:NO
构建时间。评论
您还可以使用EDITBIN或任何十六进制编辑器从现有EXE中删除该标志。
–伊戈尔·斯科钦斯基♦
13-10-27在16:15
评论
在ASLR上阅读。ASLR =地址空间布局随机化