Windows平台PE文件,内存地址到磁盘地址的转换(RVA to RAW),补丁原理

本文需要了解基本的PE文件概念


我们在分析软件的时候,经常会使用工具,对某个EXE进行修改,以实现破解。本文介绍这种方法的基本原理。


修改EXE实现破解,需要知道待修改的磁盘地址,而实际过程中,我们一般是通过调试,得到关键区域的内存地址,因此需要将内存地址转换为磁盘地址,方法如下:

Windows平台PE文件,节区头(Section Header)是非常重要的数据结构。头文件定义如下:

#define IMAGE_SIZEOF_SHORT_NAME              8


typedef struct _IMAGE_SECTION_HEADER {
    BYTE    Name[IMAGE_SIZEOF_SHORT_NAME];
    union {
            DWORD   PhysicalAddress;
            DWORD   VirtualSize;
    } Misc;
    DWORD   VirtualAddress;
    DWORD   SizeOfRawData;
    DWORD   PointerToRawData;
    DWORD   PointerToRelocations;
    DWORD   PointerToLinenumbers;
    WORD    NumberOfRelocations;
    WORD    NumberOfLinenumbers;
    DWORD   Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

地址转换过程中,需要使用到的是VirtualAddress(内存中节区起始地址)以及PointerToRawData(磁盘文件中节区起始位置&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值