![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Смещение в файле 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 не совпадают с типами фактически передаваемых тобой параметров