Сейчас на форуме: jinoweb (+4 невидимых) |
eXeL@B —› Программирование —› PE or NOT PE |
Посл.ответ | Сообщение |
|
Создано: 10 августа 2015 22:30 · Личное сообщение · #1 Как быстро проверить, является ли файл валидным PE файлом? Проверка полей заголовка не гарантирует 100% результата. Это может быть нерабочий кусок исполняемого файла, или PE заголовок дописанный к любому бинарному мусору. Как я понимаю, файл надо запустить и проверить заведется ли он. Но нужно это сделать не запуская его. |
|
Создано: 10 августа 2015 22:58 · Личное сообщение · #2 |
|
Создано: 10 августа 2015 23:02 · Личное сообщение · #3 Смотря что считать валидным. Т.е. файл валидный для 7, скажем, может не пойти на ХР, потому что не хватает каких-то либ/функций в них. Если нужна привязка к ОС, то это лучше доверить самой ОС, это запускать. Если абстрактно, забивая вообще на импорт и некоторые хитрозадые директории типа LoadConfig, то глядеть работу загрузчика и эмулить его, в принципе в ринг3 кода не особо много. |
|
Создано: 11 августа 2015 09:08 · Личное сообщение · #4 result := False; hFile := CreateFile( PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if hFile = INVALID_HANDLE_VALUE then exit; // вся ФИШКА SEC_IMAGE !!! flProtect := PAGE_READONLY or SEC_IMAGE; try hFileMapping := CreateFileMapping( hFile, nil, flProtect, 0, 0, nil); CloseHandle(hFile); except CloseHandle(hFile); Exit; end; if hFileMapping = 0 then Exit; try pMemory := MapViewOfFile( hFileMapping, FILE_MAP_READ, 0, 0, 0); Result := pMemory <> nil; if Result then UnmapViewOfFile(pMemory); finally CloseHandle(hFileMapping); end; |
|
Создано: 11 августа 2015 09:24 · Поправил: Coderess · Личное сообщение · #5 vitokop Т.е. вы не проверяете сигнатуру MZ в DOS-хидере? P.S. // вся ФИШКА SEC_IMAGE !!! В сплошном тексте без подсветки не заметил, сори. ----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes |
|
Создано: 11 августа 2015 09:36 · Личное сообщение · #6 |
|
Создано: 11 августа 2015 13:49 · Личное сообщение · #7 |
|
Создано: 11 августа 2015 14:31 · Личное сообщение · #8 |
|
Создано: 11 августа 2015 14:58 · Личное сообщение · #9 |
|
Создано: 11 августа 2015 15:16 · Личное сообщение · #10 |
eXeL@B —› Программирование —› PE or NOT PE |