gpt4 book ai didi

c++ - PE SizeOfImage 错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:48:14 25 4
gpt4 key购买 nike

我试图从 PE 获取当前大小,但似乎不对

我有这个代码:

hModule = GetModuleHandleW(NULL);
pDH = (PIMAGE_DOS_HEADER)hModule;
pNTHeaders = (PIMAGE_NT_HEADERS)((LPBYTE)hModule+pDH->e_lfanew);
dwSize = pNTHeaders->OptionalHeader.SizeOfImage;

区别在于:当前执行 => 246 kbpNTHeaders->OptionalHeader.SizeOfImage=>356352=>348kb

所以,这段代码有什么问题,为什么 PE 在 Kb 上不同。

最佳答案

加载图像的大小不一定(实际上,几乎可以肯定永远不会)与磁盘上二进制文件的大小相同。例如,当您编写包含一些静态数据的程序时,编译器必须在镜像中为该数据分配空间。但是,如果该数据未初始化或全为零,则仅在二进制文件中存储大量零会很浪费。没有人会因为你写的而不得不下载一个 1+ GiB 的充满零的 exe 文件而感到高兴

int a[1024*1024*256] = {};

在你的代码中的某处。相反,.exe 文件将简单地存储数据在加载图像中的大小和位置,操作系统将在加载图像时在该位置分配和映射适当的内存……

关于c++ - PE SizeOfImage 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53697603/

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