
LoadPe的一个功能,网上没有类似的源码 自己写了半天 有些地方解决不了故来提问
这些是某个游戏的PE信息
OEP:4AD04C1
基地址:400000
文件总长:46D1000
代码起始RVA:1000
数据起始RVA:2131000
内存块对齐:1000
文件块对齐:1000
区段数量:A
DOS-PE-区块总大小:1000
.tp3 RVA:1000 Size:212F856 磁盘RVA:1000
.tp3 RVA:2131000 Size:732000 磁盘RVA:DEC000
.tp3 RVA:2863000 Size:144C184 磁盘RVA:151E000
.tp3 RVA:3CB0000 Size:33000 磁盘RVA:1555000
.tp3 RVA:3CE3000 Size:F2000 磁盘RVA:1588000
.tp3 RVA:3DD5000 Size:10000 磁盘RVA:167A000
.tp3 RVA:3DE5000 Size:1C0000 磁盘RVA:167C000
.tvm1 RVA:3FA5000 Size:4000 磁盘RVA:1744000
.tvm0 RVA:3FA9000 Size:71F000 磁盘RVA:1747000
.tp3 RVA:46C8000 Size:9000 磁盘RVA:1B25000
我拷贝区块是这样写的,lpbuf是即将被WriteFile进去的数据,MemBuf是ReadProcessMemory的数据
pImageSectionHeader = GetFirstSectionHeader(pImageNtHeader);
for (DWORD i = 0; i < pImageFileHeader->NumberOfSections; i++)
{
DWORD RealSize = _Max(pImageSectionHeader->Misc.VirtualSize, pImageSectionHeader->SizeOfRawData);
SafeCopyMemory((PVOID)((DWORD)lpbuf + pImageSectionHeader->PointerToRawData), (PVOID)((DWORD)MemBuf + pImageSectionHeader->VirtualAddress), RealSize);
pImageSectionHeader++;
}
那么问题来了
.tp3 RVA:1000 Size:212F856 磁盘RVA:1000
.tp3 RVA:2131000 Size:732000 磁盘RVA:DEC000
磁盘RVA:1000 磁盘RVA:DEC000 两个磁盘文件储存地址相离那么近,而第一个区段的大小是 0x212F856 如何把这个区段完整地放入磁盘文件中呢?

望各位高手帮助下本菜鸟
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课