Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Разбор EXE-header (https://forum.antichat.xyz/showthread.php?t=45967)

Apocalypse 03.08.2007 17:58

Разбор EXE-header
 
Нужен совет, а точнее код для Дельфей, результатом которого будет определен есть ли оверлей у экзешника или нет...ведь можно как то узнать размер экзешника через его заголовок, а потом уже после этого размера может быть искомый оверлей...

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,FILE_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

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

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


Время: 11:14