gpt4 book ai didi

windows - PE Header 的大小

转载 作者:可可西里 更新时间:2023-11-01 14:15:10 25 4
gpt4 key购买 nike

有没有办法在不读取全部或整个文件的情况下找出 PE header 的大小?

最佳答案

您可以像这样计算 PE header 的总大小:

sizeof(Signature) + sizeof(FileHeader) + sizeof(OptionalHeader) + sizeof(SectionTable)

文件头始终具有相同的大小,但 OptionalHeader 的大小可能不同,节表大小也可能不同。

OptionalHeader的大小存储在FileHeader.SizeOfOptionalHeader中,节表大小等于FileHeader.NumberOfSections * sizeof(IMAGE_SECTION_HEADER)

还有一些C代码:

DWORD SizeOfPEHeader(const IMAGE_NT_HEADERS * pNTH)
{
return (offsetof(IMAGE_NT_HEADERS, OptionalHeader) + pNTH->FileHeader.SizeOfOptionalHeader + (pNTH->FileHeader.NumberOfSections * sizeof(IMAGE_SECTION_HEADER)));
}

您所要做的就是读取 DOS header ,获取 PE 偏移量 (e_lfanew) 并将 PE.Signature + PE.FileHeader 读入内存。这是两个固定大小的读取操作,您拥有所需的所有信息。

关于windows - PE Header 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8193862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com