4. PE加载器
步骤:
1. 链接选项设置基地址为目标PE的基地址,例如/BASE:0x01000000
2. 从目标PE文件中分析出SizeOfImage,并在自己程序的.code段预留足够的空间,用来把目标程序的代码映射过来
2.1 汇编代码可用org 01000000h预留空间,相当于byte 01000000 dup(0),org指令会将内存设为0
3. 判断目标是否为PE文件
4. 将目标PE映射到准备好的地址中
4.1 调用msvcrt.lib库中的crt_memcpy是动态的,实现代码在msvcrt.dll中
- 处理导入表,将IAT地址填好
- 转到目标PE的AddressOfEntryPoint,开始执行目标PE的代码