首页 > 其他 > 详细

逆向工程核心原理——第四十一章

时间:2020-11-03 19:10:55      阅读:18      评论:0      收藏:0      [点我收藏+]

ASLR

ASLR(地址空间布局随机化),针对缓冲区溢出的保护机制,微软从内核6开始使用的保护机制。

我们写两个个简单的程序,一个打开ASLR,一个关闭ASLR,进行比较。

ASLR.cpp

#include<studio.h>

void main()
{
	printf("ASLR test program...\n");
}

随机地址打开

技术分享图片

我们得到两个exe文件ASLR和ASL_onR:

技术分享图片
(想打ASLR_on的,截图的时候才发现打错位了)

用OD打开后找到main函数,会发现代码地址和栈地址不相同:

技术分享图片

技术分享图片

然后我们查看两个文件的节区信息

技术分享图片
我们可以看到,打开基址随机的exe文件,多出来了一个节区(.reloc)

这个节区,对于普通的exe文件来讲,是可有可无的(但对于DLL文件来说,是必须的),此节区的作用是为重定位提供参考,因为DLL文件总是需要重定位,对DLL文件来讲是必须的。

对于拥有.reloc字节的exe文件来说,在其NT头IMAGE_FILE_HEADER\Characteristics属性中会比没有.reloc字节的exe文件多出来一个IMAGE_FILE_RELOCS_STRIPPED(1)标志:

技术分享图片

逆向工程核心原理——第四十一章

原文:https://www.cnblogs.com/lex-shoukaku/p/13921393.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!