Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Смещение в файле EP [D5]


Igit ©   (2004-09-29 13:15:00) 

Добрый день. Может кто-нибудь подскажет, не работает этот код:

var
 Map : Pointer;
 fmaping : THandle;
 image : PImageNtHeaders;
 EP : ULONG;
 PISH :PImageSectionHeader;
begin
map := MapViewOfFile(fmaping,FILE_MAP_READ,0,0,0);
image := ImageNtHeader(map);
PISH := ImageRvaToSection(image,fmaping,EP);
EP := EP - PISH.VirtualAddress + PISH.PointerToRawData;


В предпоследнеё строке не компилируется. Говорит типы не совподают, Cardinal и Pointer... хотя вроде все правильно описал...


Igit   (2004-09-30 16:25:00) [1]

Большое спасибо


Digitman   (2004-09-29 15:18:00) [2]


> C форматом заголовка PE файла возится нехочется


а чего там возиться-то ? ровно две строчки кода

pOptHdr: PImageOptionalHeader;
..
   pOptHdr := PImageOptionalHeader(fmaping + PImageDosHeader(fmaping)._lfanew + SIZE_OF_NT_SIGNATURE + IMAGE_SIZEOF_FILE_HEADER);
   EP := pOptHdr.AddressOfEntryPoint + fmaping;


Igit   (2004-09-29 14:53:00) [3]

Imagehlp.pas

Этим кодом я хочу найти в PE файле смещение соответствующее адресу Entry Point... C форматом заголовка PE файла возится нехочется, поэтому нашел вот такой код и пытаюсь перевести его в Delphi
invoke MapViewOfFile,fmaping,FILE_MAP_READ,0,0,0
mov map,eax

invoke ImageNtHeader,map
mov image,eax

invoke ImageRvaToSection,image,fmaping,EP; тут EP виртуальный
assume eax: PTR IMAGE_SECTION_HEADER
mov edx,EP
sub edx,[eax].VirtualAddress
add edx,[eax].PointerToRawData
mov EP,edx ; а тут уже становится смещением


ImageRvaToSection третьим параметром возвращает виртуальный адрес EP + ImageBase...


Digitman   (2004-09-29 14:24:00) [4]

или ф-ция ImageNtHeader принимает 3-й параметр по ссылке для возврата значения ?


Digitman   (2004-09-29 14:16:00) [5]


> Синтаксиса незнаю


как это "не знаю" ?
в каком модуле у тебя находится декларация ф-ции ImageNtHeader ?
ты вообще что хочешь с пом.этого кода сделать ? откуда этот код ?
что за бред вот эта строчка

EP := EP - ... чего-то там

?
на момент ее выполнения содержимое EP не определено !


Igit   (2004-09-29 14:09:00) [6]

Синтаксиса незнаю, ^fmaping не работает...


Digitman   (2004-09-29 13:55:00) [7]

а что этому мешает ?


Igit   (2004-09-29 13:45:00) [8]

а как тогда быть... из fmaping:Thandle передать как pointer?


Digitman   (2004-09-29 13:37:00) [9]

типы формальных параметров в декларации ф-ции mageRvaToSection не совпадают с типами фактически передаваемых тобой параметров


Наверх

Титульная страница Поиск, карта сайта Написать письмо