//根据PE文件信息,计算各块大小和
ULONG GetFileLen(LPVOID pBaseaddr,LPVOID pReadBuf)
{
LPBYTE pBase=(LPBYTE)pBaseaddr;
PIMAGE_DOS_HEADER pDosHeader=(PIMAGE_DOS_HEADER)pReadBuf;
ULONG uSize=PIMAGE_OPTIONAL_HEADER((pBase+pDosHeader->e_lfanew+4+20))->SizeOfHeaders;
PIMAGE_SECTION_HEADER pSec = (PIMAGE_SECTION_HEADER)(pBase+pDosHeader->e_lfanew + sizeof(IMAGE_NT_HEADERS));
for(int i=0;i<PIMAGE_FILE_HEADER(pBase+pDosHeader->e_lfanew+4)->NumberOfSections;++i)
{
uSize+=pSec[i].SizeOfRawData;
}
return uSize;
}