vc++6.0项目转vs2015增加ASLR和DEP标志

ASLR和DEP

  • 什么是ASLR?
    ASLR是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。如今Linux、FreeBSD、Windows等主流操作系统都已采用了该技术。(虚拟地址)此技术需要操作系统和软件相配合。PE头文件中会设置 IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE标示来说明其支持 ASLR。
  • 什么是DEP?
    数据执行保护(DEP)(Data Execution Prevention) 是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。在 Microsoft Windows XP Service Pack 2及以上版本的Windows中,由硬件和软件一起强制实施 DEP。

增加ASLR和DEP标志

选中解决方案下的项目名称->选择菜单中的项目->属性->C/C++->代码生成->控制流防护->是 (/guard:cf)
image

解决错误

VC++6.0工程转换成VS2015会报很多错误,需要一一解决。

错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容

image

选中解决方案下的项目名称(RelashTool)->选择菜单中的项目->属性->C/C++->常规->调试信息格式->用于“编辑并继续”的程序数据库 (/ZI)改为程序数据库 (/Zi)

image

错误 未定义标识符 "i"

image
C++标准变了,语法也有差异。for循环中定义的变量,其作用域不再扩展到{}之外。此处可重新定义int i。

posted @ 2021-12-06 15:36  bert_qin  阅读(554)  评论(0编辑  收藏  举报