전체 또는 전체 파일을 읽지 않고 PE 헤더의 크기를 확인하는 방법이 있습니까?PE 헤더의 크기
3
A
답변
3
는이 같은 PE 헤더의 전체 크기를 계산할 수 있습니다
는sizeof(Signature) + sizeof(FileHeader) + sizeof(OptionalHeader) + sizeof(SectionTable)
파일 헤더는 항상 같은 크기를 가지고 있지만, 섹션 테이블 크기가 수로 OptionalHeader의 크기는 다를 수 있습니다.
은 OptionalHeader의 크기가 FileHeader.SizeOfOptionalHeader
에 저장하고, 섹션 테이블 크기가 FileHeader.NumberOfSections * sizeof(IMAGE_SECTION_HEADER)
그리고 어떤 C 코드에 해당됩니다 : 당신이해야 할 모든이 DOS 헤더를 읽어
DWORD SizeOfPEHeader(const IMAGE_NT_HEADERS * pNTH)
{
return (offsetof(IMAGE_NT_HEADERS, OptionalHeader) + pNTH->FileHeader.SizeOfOptionalHeader + (pNTH->FileHeader.NumberOfSections * sizeof(IMAGE_SECTION_HEADER)));
}
을, 체육 오프셋 얻을 (e_lfanew)를 읽고 PE.Signature + PE.FileHeader를 메모리로 읽어들입니다. 그것은 고정 된 크기의 두 가지 읽기 작업이고 필요한 모든 정보를 가지고 있습니다.
0
유용한 자료 일 수 있습니다. http://marcoramilli.blogspot.com/2010/12/windows-pe-header.html –