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指令,在函数返回时就会跳转到这个地址去执行,也 ...
随机推荐
- TCP建立连接和断开连接过程
假设Client端发起中断连接请求,也就是发送FIN报文.Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着 ...
- SWERC2015-I Text Processor
题意 给一个长度为\(n\)的字符串\(s\),再给定一个\(w\),问对于所有的\(i\in [1,n-w+1]\),\(s[i..i+w-1]\)有多少个不同字串.\(n,w\le 10^5\). ...
- 【bzoj3992】[SDOI2015]序列统计 原根+NTT
题目描述 求长度为 $n$ 的序列,每个数都是 $|S|$ 中的某一个,所有数的乘积模 $m$ 等于 $x$ 的序列数目模1004535809的值. 输入 一行,四个整数,N.M.x.|S|,其中|S ...
- 【uoj#180】[UR #12]实验室外的攻防战 结论题+树状数组
题目描述 给出两个长度为 $n$ 的排列 $A$ 和 $B$ ,如果 $A_i>A_{i+1}$ 则可以交换 $A_i$ 和 $A_{i+1}$ .问是否能将 $A$ 交换成 $B$ . 输入 ...
- 洛谷P1352 没有上司的舞会——树形DP
第一次自己写树形DP的题,发个博客纪念`- 题目来源:P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结 ...
- Qt浅谈内存泄露(总结)
Qt浅谈内存泄露(总结) 来源 http://blog.csdn.net/taiyang1987912/article/details/29271549 一.简介 Qt内存管理机制:Qt 在内部能够维 ...
- Android ActionBar 使用详解
ActionBar取代了以前的TitleBar,是一种更加灵活的人机交互方式:ActionBar并不是完全自立门户的一个新兴的东西,而是和3.0以下版本的menu进行了合并整合:so,添加action ...
- Unity3D for VR 学习(10): Unity LOD Group 组件
LOD (Level of Detail), 远小近大思想. LOD,在Unity中是用到了空间换时间的优化方法:即程序加载2套模型,导致包会增大:在运行时刻,远处的用面数少的模型–模糊一些,近处用面 ...
- Alpha 冲刺 —— 十分之一
队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作,对多个目标检测及文字识别模型进行评估.实验,选取较 ...
- day5-python基础