加载PE文件——PE加载器模拟法

本文介绍了PE文件加载到内存的过程,包括确定文件基址、获取内存对齐、加载PE头、加载各节及处理重定位等步骤,详细解析了PE加载器的工作机制。
摘要由CSDN通过智能技术生成

1、找到文件加载到内存的基址

     通常为0x0040 0000

 

2、取得内存对齐粒度

 

3、加载pe头,按照内存对齐粒度读取到指定起始地址的内存处

 

4、加载各个节。得到节数目,定位节表,按照内存对齐粒度读取到内存,不足的用0填充。

 

5、基址不对,需要重定位修复。

// LoadPeWithRead.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <tchar.h>
#include <Windows.h>

//以dwAlignment 对齐dwOperateNum 值,也就是让dwOperateNum为dwAlignment的整数倍
DWORD AlignmentNum(DWORD dwOperateNum, DWORD dwAlignment )
{
                 if (dwAlignment == 0)
                {
                                 return dwOperateNum ;
                }
                 int iTemp = dwOperateNum % dwAlignment;
                 if (iTemp != 0)
                {
                                 return dwOperateNum + dwAlignment - iTemp;
                }
                 return dwOperateNum ;
}
int main(int argc,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值