Не могу проанализировать PE файлы больше определенного размера

В настоящее время мой код может получить энтропию и смещение файлов PE-файлов размером менее 3 МБ, протестированные с помощью notepad.exe. Однако я получаю ошибки всякий раз, когда пытаюсь проанализировать файл большего размера.

Я не уверен, как я должен решить эту проблему. Но мой лектор сказал мне создать еще одну похожую функцию. Очень признателен, если кто-то может мне помочь в этом.

Ошибка отображается в CLI:

Call to ReadFile() failed.
Error Code: 998

Часть ошибки:

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

0

Решение

Ваш код ошибки расшифровывается как «Неверный доступ к ячейке памяти», и вы не проверяете возвращаемое значение malloc, и даже если вам нужно, вам нужно зацикливаться на ReadFile, чтобы прочитать все это.

Вы исчерпали память. Вам, безусловно, нужно переделать свой алгоритм.

И, как отметил Ханс Пассант, у вас есть утечка памяти, потому что вы никогда не освобождаете память файла, когда с ней покончено. C ++ не является сборщиком мусора.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]