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

Вниз

ImportTable   Найти похожие ветки 

 
Gost1   (2004-05-12 12:46) [0]

type
  PImageImportByName = ^TImageImportByName;
  _IMAGE_IMPORT_BY_NAME=packed record
   HInst: Word;
   Name: Byte;
 end;
 TImageImportByName =_IMAGE_IMPORT_BY_NAME;

TThunk=packed record
case Integer of
0: (ForwarderString: PByte);
1: (thFunction: PDWORD);
2: (Ordinal: DWORD);
3: (AddressOfData: PImageImportByName);
end;

PImageThunkData=^TImageThunkData;
_IMAGE_THUNK_DATA=packed record
Thunk: TThunk;
end;
TImageThunkData=_IMAGE_THUNK_DATA;
IMAGE_THUNK_DATA=_IMAGE_THUNK_DATA;


 PImport := PImageImportDescriptor(DWord(PEHeader.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress) + DWord(ImageBase));
  while (PImport.Name > 0) do begin
   модули тут перебираются все ок!
   lstrcpyn(PChar(@buf), PChar(PImport.Name + ImageBase), 15);
   MessageBox(0, PChar(@buf), "", MB_OK);
   pThunk := PImageThunkData(ImageBase + DWord(PImport.FirstThunk));
   while (pThunk.Thunk.thFunction <> nil) do begin
скорее всего неверно - тут, как получить смешение на имя импортируемой ф-ии?
pImpName := PImageImportByName(DWord(pThunk.Thunk.AddressOfData) + ImageBase);
    lstrcpyn(PChar(@buf), PChar(pImpName.Name + ImageBase), 8);
    MessageBox(0, PChar(@buf), "", MB_OK);
    inc(pThunk);
   end;
  inc(PImport);
  end; {while name}

Поглядите, плзз на код. Я хочу перечислить все импортируемые ф-ии. Получаю указатель на PImageThunkData, потом в цикле до нулевой секции на PImageImportByName, но вот тут скорее всего и есть оишибка, как правильно получить этот указатель? Используемые record"ы приведены!


 
Digitman ©   (2004-05-12 13:27) [1]

после того как в ран-тайм импортируемый модуль был загружен и присоединен к импортирующему модулю, значение поля pThunk.Thunk.thFunction содержит не ссылку на имя имп.ф-ции (или ее ординал), а VA точки входа в саму ф-цию ... т.е. ссылка на имя/ординал импортируемой ф-ции теряется (затирается вычисленным реальным значением ее точки входа)



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

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

Наверх




Память: 0.47 MB
Время: 0.031 c
3-1085662064
Sasha73
2004-05-27 16:47
2004.06.20
Локальная BD (один файл) ?


3-1085668722
zdn
2004-05-27 18:38
2004.06.20
Как в FireBIrd добавить?


14-1086003150
Kirill
2004-05-31 15:32
2004.06.20
А почему анкеты недоступны


1-1086590783
Alexxx
2004-06-07 10:46
2004.06.20
Stringgrid (выравнивание в ячейке)


1-1086658307
Глеб
2004-06-08 05:31
2004.06.20
Шрифт в RichEdit