Просмотр полной версии : Разбор EXE-header
Apocalypse
03.08.2007, 17:58
Нужен совет, а точнее код для Дельфей, результатом которого будет определен есть ли оверлей у экзешника или нет...ведь можно как то узнать размер экзешника через его заголовок, а потом уже после этого размера может быть искомый оверлей...
Apocalypse
Вам на wasm.ru, раздел "Статьи"
Apocalypse
04.08.2007, 15:33
Я конечно все понимаю, но там все на асме =(
В котором я даже образно ничего не представляю...
Windows.pas :
IMAGE_FILE_RELOCS_STRIPPED
IMAGE_DIRECTORY_ENTRY_BASERELOC
Apocalypse
05.08.2007, 16:13
хм...не совсем ясно, хочется увидеть готовый исходник либо ссылку на него...интересует мнение хорошего эксперта в этой области, может кто-то уже занимался подобным?
Hellsp@wn
05.08.2007, 16:50
кури док по пеформату)))
PE:=CreateFile(PChar(F_PEFilePath),GENERIC_READ,FI LE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,FILE_ATTRIBUTE_ NORMAL,0);
MEMSZ:=GetFileSize(PE,nil);
FM:=CreateFileMapping(PE, nil,PAGE_READONLY, 0, MEMSZ, nil);
MEMPTR:=MapViewOfFile(FM,FILE_MAP_READ, 0, 0, MEMSZ);
...
Secmax:=nt.FileHeader.NumberOfSections;
Sec:=PSection(SectionList[Secmax]); - посл. секция
Sec.physical_size + Sec.physical_offs - получаем конец файла =)))
...
If MEMSZ>(Sec.physical_size + Sec.physical_offs) then
попали сюда, значит есть оверлей, делаем что нада)))
>> Windows.pas :
>> IMAGE_FILE_RELOCS_STRIPPED
>> IMAGE_DIRECTORY_ENTRY_BASERELOC
чел про оверлей спрашивал, а не про релоки...
з.ы. пример простой, тут не учитывается выравнивание файла, нету проверок, нет получения
секция, но общий смысл должен быть ясен...
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot