【发布时间】:2017-02-06 13:25:42
【问题描述】:
目前,我的代码能够获取小于 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() 返回 NULL 表示它无法分配更多内存。你不检查所以不可避免地 ReadFile() 会崩溃。
-
感谢您的回复。我可以知道我应该如何解决这个问题吗?
-
考虑显而易见的解决方案。就像调用 free() 一样。并以 x64 为目标。
-
更好的主意:忘记
malloc和free的存在,使用std::make_unique<char[]>,让库处理分配和释放的细节。 -
我已经在我的 main 函数下的 free(bFile) 中添加了。但我不确定我应该如何编辑我的指针代码以确保不泄漏内存。
标签: c++ portable-executable entropy