无法分析超过一定大小的 PE 文件

Can't analyse PE files more than certain size

目前,我的代码能够获取小于3MB的PE文件的熵和文件偏移量,测试notepad.exe。但是,每当我尝试分析更大的文件时都会收到错误消息。

我不知道该如何解决这个问题。但是我的讲师让我创建另一个类似的功能。如果有人可以帮助我,我将不胜感激。

CLI 中显示的错误:

Call to ReadFile() failed.
Error Code: 998

错误部分:

dwFileSize = GetFileSize(hFile, NULL);
if (dwFileSize != INVALID_FILE_SIZE)
{
    bFile = (byte*)malloc(dwFileSize);

您将错误代码解码为 "Invalid access to memory location" 而您没有检查 malloc 的 return 值,即使您需要循环读取 ReadFile 以读取整个内容.

你 运行 内存不足。你当然需要重新设计你的算法。

正如 Hans Passant 指出的那样,您存在内存泄漏,因为您在使用完文件后从未释放该文件的内存。 C++ 不是垃圾收集器。