Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Смещение в файле EP   Найти похожие ветки 

 
Igit   (2004-09-29 13:15) [0]

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

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... хотя вроде все правильно описал...


 
Digitman ©   (2004-09-29 13:37) [1]

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


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

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


 
Digitman ©   (2004-09-29 13:55) [3]

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


 
Igit   (2004-09-29 14:09) [4]

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


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


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


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

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

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


 
Digitman ©   (2004-09-29 14:24) [6]

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


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

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 15:18) [8]


> 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-30 16:25) [9]

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



Страницы: 1 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
6-1093466977
Flagman
2004-08-26 00:49
2004.11.07
Читать/писать в определенный порт...


14-1098436698
klerk
2004-10-22 13:18
2004.11.07
ODBS


3-1097322328
Koala
2004-10-09 15:45
2004.11.07
Ошибка создания backup.fbk


14-1098184583
Бар
2004-10-19 15:16
2004.11.07
Как снять программно атрибут файла только для чтения?


4-1096522951
Muhsin
2004-09-30 09:42
2004.11.07
Как используется ShellExecute