PE框架基础学习(一)

PE 结构基础与图解

虚拟地址(VA): 在一个程序运行起来的时候,会被加载到内存中,并且每个进程都有自己的4GB,这个4GB当中的某个位置叫做虚拟地址,也就是内存中的地址,由物理地址映射过来的,4GB的空间,并没有全部被用到。
基地址( Imagebase ): 磁盘中的文件加载到内存当中的时候可以加载到任意位置,而这个位置就是程序的基址。EXE默认的加载基址是400000h,DLL文件默认基址是10000000h。需要注意的是基地址不是程序的入口点。
相对虚拟地址(RVA):。RVA是在内存中相对与载入地址(基地址)
的偏移量,所以你可以发现前三个概念的关系 : 虚拟地址(VA)= 基地址+ 相对虚拟地址(RVA)
文件偏移地址(FOA):当PE文件储存在某个磁盘当中的时候,某个数据的位置相对于文件头的偏移量。
入口点(OEP):首先明确一个概念就是OEP是一个RVA,,然后使用 OEP + Imagebase == 入口点的VA,通常情况下,OEP指向的不是main函数。
VOffset:节起始地址对于ImageBase的偏移量
ROffset:该节起始地址对于文件的偏移量

现在让你求某个虚拟地址VA,对应的文件偏移地址 fRVA
fRVA-ROffset=RVA-VOffset
fRVA=RVA-VOffset+ROffset
(RVA=VA-ImageBase)

_S_I97C41TTZHWO5~__L__5.png

RVA 和文件偏移的转换

在这里插入图片描述

PE 指纹

文件开头DOS标志“MZ” -> 在0x3c(e_lfanew)处可找到“PE”头地址
由此可确定该文件为PE文件

9MJF_R@AY`6GXFWV~O6518C.png

DOS MZ文件头

IMAGE_DOS_HEADER STRUCT 
{
    
    WORD    e_magic        //   MZ(4Dh 5Ah)     DOS可执行文件标记 
    WORD    e_cblp            
    WORD    e_cp                         
    WORD    e_crlc                      
    WORD    e_cparhdr      
    WORD    e_minalloc       
    WORD    e_maxalloc  
    WORD    e_ss           
    WORD    e_sp       
    WORD    e_csum      
    WORD    e_ip        
    WORD    e_cs        
    WORD    e_lfarlc       
    WORD    e_ovno          
    WORD    e_res[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值