@Haaaaz

Как проверить, является ли файл PE? (то есть, .exe он или нет)?

Можно ведь как-то проверить, является ли файл Portable Executable?
Наше вот так код, но не понимаю, чем в данном случае является szFile
//Проверяем, является ли файл PE
BOOL CheckValid(WCHAR szFile) {
    IMAGE_NT_HEADERS *NtHeaders;
    IMAGE_DOS_HEADER *DosHeader;

    DosHeader = (PIMAGE_DOS_HEADER)szFile;
    NtHeaders = (PIMAGE_NT_HEADERS)((DWORD*)szFile + DosHeader->e_lfanew);

    if(NtHeaders->Signature == IMAGE_NT_SIGNATURE) {
        return TRUE;
    } else {
        return FALSE;
    }
}
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
не понимаю, чем в данном случае является szFile

Судя по тому, как он используется, szFile -- указатель на буфер с содержимым файла. Почему такой странный выбор типа -- действительно непонятно, логично было бы использовать const void *.
Ответ написан
Комментировать
@12rbah
Можно ведь как-то проверить, является ли файл Portable Executable?
можно, нужно считать часть файла, и проверить его сигнатуру, если сигнатура совпадает, то это исполняемый файл, если нет, то соответственно нет, но также стоит учитывать, что есть ряд особенностей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы