逆向基础

基础知识

漏洞概述

1.我们通常把能够引起软件做一些“超出设计范围的事情”的bug称为漏洞(vulnerability)。
(1)功能性逻辑缺陷(bug):影响软件的正常功能,如:执行结果错误、图标显示错误等等。
(2)安全性逻辑缺陷(漏洞):通常情况下不影响软件的正常功能,但被攻击者成功利用后,有可能引起软件去执行额外的恶意代码。常见漏洞包括软件中的缓冲区溢出漏洞、跨站脚本漏洞(XSS)、SQL注入漏洞等。
2.0day:未被公布、未被修复的漏洞被称作0day。
公布漏洞的权威机构:
CVE(Common Vulnerabilities and Exposures)CVE编号通常是引用漏洞的标准方式。
CERT(Computer Emergency Response Team)计算机应急响应组 会在第一时间跟进当前的严重漏洞,包括描述信息、POC的发布链接、厂商的安全响应进度、用户应采取的临时性防范措施等。

二进制文件概述

PE文件格式

PE是Win32平台下可执行文件遵守的数据格式。
PE文件格式把可执行文件分成若干个数据节(section),不同资源被存放在不同的节中。
一个典型的PE文件中包含的节:
.text 存放着二进制的机器代码,反汇编和调试的对象。
.data 初始化的数据块,如宏定义、全局变量、静态变量等。
.idata 可执行文件使用的动态链接库等外来函数与文件的信息。
.rsrc 存放程序的资源,如图标、菜单等。
PE文件头

PE文件头
### 虚拟内存 Windows内存被分为:物理内存和虚拟内存。 物理内存比较复杂,需进入Windows内核级ring0才能看到。在用户模式下,用调试器看到的内存地址都是虚拟内存。

Windows虚拟内存与物理内存

Windows虚拟内存与物理内存示意图

操作系统原理中的虚拟内存是指 当实际的物理内存不够时,有时操作系统会把“部分硬盘空间”当做内存使用从而使程序得到装载运行的现象

PE文件与虚拟内存之间的映射

在调试漏洞时,可能需要做这样两种操作。
(1)静态反汇编工具看到的PE文件中某条指令的位置是 相对于磁盘文件 而言的,即所谓的 文件偏移,我们可能还需知道这条指令在内存中所处位置,即虚拟内存地址(VA)
(2)反之,在调试时看到的某条指令的地址时虚拟内存地址,我们需要回到PE文件中找到这条指令对应的机器码。
文件偏移地址(File Offest)
数据在PE文件中的地址叫文件偏移地址,这是文件在磁盘上存放时相对于文件开头的偏移
装载基址(Image Base)
PE装入内存时的基地址。默认情况下,EXE文件在内存中的基地址是0x00400000,DLL文件是0x10000000。
虚拟内存地址(Virtual Address,VA)
PE文件中的指令被装入内存后的地址。
相对虚拟地址(Relative Virtual Address,RVA)
相对虚拟地址是内存地址相对于映射基址的偏移量
虚拟内存地址、映射基址、相对虚拟内存地址三者之间的关系:

VA=Image Base+RVA

PE文件与虚拟内存的映射关系

PE文件与虚拟内存的映射关系

(1) PE文件中的数据按照磁盘数据标准存放,以0x200字节为基本单位进行组织。当一个数据节(section)不足0x200字节时,用0x00填充。因此 PE数据节的大小是0x200的整数倍
(2)当代码装入内存后,将按照内存数据标准存放,并以0x1000字节为基本单位进行组织。因此 内存中的节总是0x1000的整数倍

文件偏移地址和RVA之间的对应关系
节(section)相对虚拟偏移量RVA文件偏移量
.text 0x000010000x0400
.rdata 0x000070000x6200
.data 0x000090000x7400
.rsrc 0x002D0000x7800

内存中数据节相对于装载基址的偏移量和文件中数据节的偏移量有上述差异。
有存储单位差异引起的节基址差称作节偏移

.text节偏移=0x1000-0x400=0xC00
.rdata节偏移=0x7000-0x6200=0xE00
.data节偏移=0x9000-0x7400=0x1C00
.rsrc节偏移=0x2D000-0x7800=0x25800

文件偏移地址与虚拟内存地址之间的换算关系:
文 件 偏 移 地 址 = 虚 拟 内 存 地 址 ( V A ) − 装 载 基 址 ( I m a g e B a s e ) − 节 偏 移 = R V A − 节 偏 移 文件偏移地址=虚拟内存地址(VA)-装载基址(Image Base)-节偏移\\=RVA-节偏移 =(VA)(ImageBase)=RVA

工具

OllyDbg
SoftICE 工作在ring0级
Windbg 可调试内核
IDA Pro
二进制编辑器

汇编基础

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值