VC2010的/DYNAMICBASE链接选项问题

来源:互联网 发布:遗传算法的基本步骤 编辑:程序博客网 时间:2024/05/01 07:59

近期偶然用Windbg给一个控制台程序的入口函数下断点,地址之际用编译出的Map文件中main函数的地址。结果Windbg报告断点未下成功,经过反复查看,包括在VC环境中调试运行,均发现main函数的地址和Map文件中地址不一样,切带有随机性。

又用VC6.0实验一遍,发现没有任何问题。看来问题是出在编译器上。

最后经过朋友指点,发现竟然是VC2010的链接属性中,/DYNAMICBASE一直开着。所以每次运行入口地址都在随机变化!关闭后,重新编译,main函数入口不再变化了,按照Map文件地址,WinDbg也顺利下断。

/DYNAMICBASE:使用 Windows Vista /Windows 7的地址空间布局随机化 ASLR(Address Space Layout Randomization) 功能,指定是否生成可在加载时随机重新设定基址的可执行文件映像。这个功能VC2010默认开启,从Visual Studio® 2005 SP1 起增加了该设置的支持。据说是为了代码安全!

详见http://technet.microsoft.com/zh-cn/magazine/cc162458.aspx

原创粉丝点击