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

标签 c++ portable-executable entropy

目前,我的代码能够获取小于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);

最佳答案

您将错误代码解码为“对内存位置的无效访问”并且您没有检查 malloc 的返回值,即使您需要循环读取 ReadFile 以读取整个内容。

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

正如 Hans Passant 所指出的,内存泄漏是因为您在处理完文件后从未释放内存。 C++ 不进行垃圾回收。

关于c++ - 无法分析超过一定大小的 PE 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42068937/

相关文章:

c++ - 使用正确的重载集调用多个函数的对象

winapi - 为什么 64 位可移植可执行文件的入口点地址只有 32 位?

c++ - Visual C++ 中的二进制再现性

linux - 内核熵池是如何工作的?

c++ - 如何在Win32中正确调用HeapSummary API?

c++ - 在 lambda 中捕获 vector 数组使元素常量

c++ - 减少 gcc 内存使用

visual-studio-2010 - 从 DLL 中去除特定符号

python - 条件互信息

machine-learning - 使用熵的加权决策树