ASLR
@author:dlive
ASLR address space layout randomization
微软从windows vista/windows server 2008(kernel version 6.0)开始采用ASLR技术,主要目的是为了防止缓冲区溢出
ASLR技术会使PE文件每次加载到内存的起始地址随机变化,并且进程的栈和堆的起始地址也会随机改变。
该技术需要操作系统和编译工具的双重支持(主要是操作系统的支持,编译工具主要作用是生成支持ASLR的PE格式)
若不想使用ASLR功能,可以在VS编译的时候将“配置属性->链接器->高级->随机基址”的值修改为否即可
下面对比ASLR.exe和ASLR_no.exe的PE信息的区别。(x86的可执行文件,两个exe编译时的区别仅为是否开启ASLR选项)
PE信息对比
.reloc节区

ASLR.exe比ASLR_no.exe多了一个.reloc节区,这个节区在前面DLL的章节讲解过,其中存储了程序中的硬编码信息。
IMAGE_FILE_HEADER\Characteristics

ASLR.exe中Characteristics(0102) = IMAGE_FILE_EXECUTABLE_IMAGE(0002) | IMAGE_FILE_32BIT_MACHINE(0100)
ASLR_no.exe中Characteristics(0103) = IMAGE_FILE_RELOCS_STRRIPED(0001) | IMAGE_FILE_EXECUTABLE_IMAGE(0002) | IMAGE_FILE_32BIT_MACHINE(0100)
后者比前者多一个IMAGE_FILE_RELOCS_STRRIPED标志,该标志含义为:
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.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680313(v=vs.85).aspx
IMAGE_OPTIONAL_HEADER\DllCharacteristics

ASLR.exe比ASLR_no.exe的DllCharacteristics多了一个IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE标志
该标志的含义为The DLL can be relocated at load time.
删除PE文件的ASLR功能
Tips: 如果一个要详细分析的文件应用了ASLR功能,分析前可以暂时将ASLR功能删除,然后再调试分析,由于文件总是被加载到相同的内存地址,分析起来会更简便
删除ASLR功能的方法很简单,只需将IMAGE_OPTIONAL_HEADER\DllCharacteristics中的IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE标志去掉即可
即将PE中8140的数据改为8100即可
ASLR的更多相关文章
- OD: ASLR
ASLR,Address Space Layout Randomization,通过加载程序的时候不再使用固定的基址,从而干扰 shellcode 定位的一种保护机制,包括映像随机化.堆栈随机化.PE ...
- [转]Disabling ASLR on individual iOS applications when using iOS 6.0.1
ASLR: Address Space Layout Randomization 查看应用是否进行了 ASLR 保护的方法:otool -hv ${File-Path} I recently enco ...
- iOS app 的 ASLR
这两天逆向一个程序,发现每次image list -o -f 之后,它的基地址都是0x00000,也就是偏移地址是0. 想到这个应该是载入内存时有没有启用偏移有关,于是找了下答案:aslr 百度百科 ...
- 对抗栈帧地址随机化/ASLR的两种思路和一些技巧
栈帧地址随机化是地址空间布局随机化(Address space layout randomization,ASLR)的一种,它实现了栈帧起始地址一定程度上的随机化,令攻击者难以猜测需要攻击位置的地址. ...
- Linux_x86下NX与ASLR绕过技术
本文介绍Linux_x86下NX与ASLR绕过技术,并对GCC的Stack Canaries保护技术进行原理分析. 本文使用存在漏洞代码如下: /* filename : sof.c */ #incl ...
- 地址空间格局随机化ASLR
Address space layout randomization(ASLR)是一种参与保护缓冲区溢出问题的一个计算机安全技术.是为了防止攻击者在内存中能够可靠地对跳转到特定利用函数.ASLR包括随 ...
- 小技巧——病毒分析中关闭ASLR
原文来自:https://bbs.ichunqiu.com/thread-41359-1-1.html 病毒分析中关闭ASLR 分析病毒的时候,尽可能用自己比较熟悉的平台,这样可以大大地节省时间,像我 ...
- 【逆向知识】PE ASLR
1.知识点 微软从windows vista/windows server 2008(kernel version 6.0)开始采用ASLR技术,主要目的是为了防止缓冲区溢出 ASLR技术会使PE文件 ...
- ASLR/DEP绕过技术概览
在经典的栈溢出模型中,通过覆盖函数的返回地址来达到控制程序执行流程(EIP寄存器),通常将返回地址覆盖为0x7FFA4512,这个地址是一条JMP ESP指令,在函数返回时就会跳转到这个地址去执行,也 ...
随机推荐
- SSH管理(重启 停止 运行 安装)centos7
下面整理经常用到管理SSH服务的命令,方便复制哈. SSH服务状态 systemctl status sshd.service SSH运行命令 service sshd start SSH重启命令 s ...
- SpingCloud之feign框架调用
1.生产者(没有什么特殊性) pom.xml <?xml version="1.0" encoding="UTF-8"?> <project ...
- hdu 6435 CSGO(最大曼哈顿距离)
题目链接 Problem Description You are playing CSGO. There are n Main Weapons and m Secondary Weapons in C ...
- 只要实现了annotation这个接口就是注解 同理:只要实现了某个接口就是该类型的实现类
只要实现了annotation这个接口就是注解 同理:只要实现了某个接口就是该类型的实现类
- poj3041 Asteroids(二分图最小顶点覆盖、二分图匹配)
Description Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape o ...
- mac os 启动服务命令 launchctl
参考苹果开发者网址 https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Ch ...
- bzoj 2929 [Poi1999]洞穴攀行 网络流
2929: [Poi1999]洞穴攀行 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 499 Solved: 295[Submit][Status][ ...
- 手脱Upack 2.x - 3.x
1.PEID查壳 Upack 2.x - 3.x Heuristic Mode -> Dwing 2.载入OD,一上来就是一个大跳转,先F8跟一会 >- E9 56D40300 jmp 跑 ...
- git查看/修改 用户名和邮箱
用户名和邮箱地址的作用 用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变. 每次commit都会用用户名和邮箱纪录. github的contributions统计就是按邮箱来统计的. ...
- 「Python」python-nmap安装与入门
1.安装namp https://nmap.org/download.html 下载链接 PS:windows安装似乎麻烦一些,需要多下载npcap,官网有链接 2.python安装 注意,注意,注意 ...