PDA

Просмотр полной версии : Разбор EXE-header


Apocalypse
03.08.2007, 17:58
Нужен совет, а точнее код для Дельфей, результатом которого будет определен есть ли оверлей у экзешника или нет...ведь можно как то узнать размер экзешника через его заголовок, а потом уже после этого размера может быть искомый оверлей...

drmist
03.08.2007, 21:51
Apocalypse
Вам на wasm.ru, раздел "Статьи"

Apocalypse
04.08.2007, 15:33
Я конечно все понимаю, но там все на асме =(
В котором я даже образно ничего не представляю...

LEE_ROY
04.08.2007, 15:49
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

чел про оверлей спрашивал, а не про релоки...

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