美文网首页
ASLR的关闭方法

ASLR的关闭方法

作者: 雁落衡阳 | 来源:发表于2019-05-02 18:41 被阅读0次

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

先从pe文件重定位说起。

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

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

ASLR执行1 ASLR执行2

不仅指令的地址变了,而且见到这些红色的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这里

Relocation stripped

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

IMAGE_FILE_RELOCS_STRIPPED   0x0001
Relocation information was stripped from the file. The file must be loaded at its preferred base address. If the base address is not available, the loader reports an error.

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

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

DLL Characteristics

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

#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 // DLL can move.
#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080 // Code Integrity Image
#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100 // Image is NX compatible
#define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200 // Image understands isolation and doesn't want it
#define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400 // Image does not use SEH. No SE handler may reside in this image
#define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800 // Do not bind this image. // 0x1000 // Reserved.
#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000 // Driver uses WDM model // 0x4000 // Reserved.
#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000

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

删除该属性

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

关闭aslr

相关文章

  • ASLR的关闭方法

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

  • 关闭地址随机化ASLR

    参考:https://www.cnblogs.com/dliv3/p/6411814.html ASLR技术 微软...

  • Mach-O地址

    ASLR1.1 什么是ASLR1.2 iOS4.3开始引入了ASLR技术 Mach-O的文件结构 未使用ASLR ...

  • iOS逆向-LLDB高级用法&Cycript-(ASLR)(Ⅷ)

    ASLR ASLR(Address Space Layout Randomization),地址空间布局随机化。是...

  • 一步一步学pwn之栈溢出利用(1)

    1.前提:在函数调用栈上的数据有可执行的权限并且关闭ASLR2.可用msf生成3.shellcode是用来打开sh...

  • iOS逆向与安全5.2:LLDB进阶

    ASLR ASLR(Address space layout randomization)是一种针对缓冲区溢出的安...

  • iOS逆向工程(九):ASLR

    ASLR前言 以前我们用Xcode的LLDB指令打断点时,可以用方法名打断点,例如breakpoint set -...

  • iOS逆向工程(九):ASLR

    ASLR前言 以前我们用Xcode的LLDB指令打断点时,可以用方法名打断点,例如breakpoint set -...

  • ASLR

    概述 ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保...

  • ASLR

    操作系统的随机地址ASLR机制我们都了解,但是具体如何实现的,读了本片文章才了解到是通过基于基地址的随机偏移量完成...

网友评论

      本文标题:ASLR的关闭方法

      本文链接:https://www.haomeiwen.com/subject/umynnqtx.html