Показать сообщение отдельно

  #6  
Старый 05.08.2007, 16:50
Hellsp@wn
Постоянный
Регистрация: 29.04.2007
Сообщений: 496
Провел на форуме:
2715445

Репутация: 588
По умолчанию

кури док по пеформату)))
Код:
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

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

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