ASLR WIN7下怎么关闭.求具体方法

ASLR WIN7下怎么关闭.求具体方法,第1张

在点击d出的“ *** 作中心”中的“打开 *** 作中心”:

点击打开的“ *** 作中心”右边的“维护”:

点击下面出现的“关闭有关‘Windows备份’的消息”这个链接:

这个时候的“备份”下的消息变成了“打开有关Windows备份的消息

上次XCTF-game说了之后要学习一波aslr的关闭方法,昨天看了看逆向工程核心原理,发现上面有讲解其关闭的方法,特此记录。

先从pe文件重定位说起。

创建好进程后,exe文件会被首先加载进imagebase指定的内存空间地址,因此不用考虑exe重定位。但是DLL和SYS文件可能因为加载几个,导致除了第一个之外其他文件加载到其他尚未占用的地址。

而开启了aslr之后exe可以不加载到imagebse的位置,另外在aslr之前,dll也总是加载到固定地址。

不仅指令的地址变了,而且见到这些红色的call的地址都是硬编码进入的程序,每次也会变。pe装载器进行重定位处理时,最关键的就是查找硬编码地址的位置。而重定位表就是记录硬编码地址偏移的列表。

基址重定位表地址位于IMAGE_OPTION_HEADER的IMAGE_DATA_DIRECTORY[5]。

前面的DWORD是RVA后面的DWORD是大小

typedef struct _IMAGE_DATA_DIRECTORY {

    DWORD VirtualAddress

    DWORD Size;

} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY

另外再看看pe头IMAGE_FILE_HEADER这里

在IMAGE_FILE_HEADER的Characteristics字段。可以见到这个Relocations stripped是没有勾上的。

大意是,重定位信息从这个文件被剥离,这个文件必须被装在进preferred基址(指的应该就是ImageBase),如果ImageBase不可用,加载器会报错。

我们这里要动手关闭aslr,这个选项不用改。要改的是IMAGE_OPTIONAL_HEADER的DLL Characteristics字段

下面是DLL Characteristics的属性值,相或代表属性叠加。

将8140改为8100,也就是让DLL不能move

再次执行程序,发现是004...打头的,这个时候aslr就被关上了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11332084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存