Главная страница
    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.45 MB
Время: 0.021 c
3-1085553213
31512
2004-05-26 10:33
2004.06.20
Как правильно задать ограничение на столбец?


3-1085536542
Feo
2004-05-26 05:55
2004.06.20
Компоненты на DBCtrlGrid


6-1083243303
Koba
2004-04-29 16:55
2004.06.20
Содержимое каталога


4-1084525379
ИМХО
2004-05-14 13:02
2004.06.20
По поводу CreateProcess


4-1081945308
Aleksandr
2004-04-14 16:21
2004.06.20
Объясните, люди добрые, как работать с GetASuncKeyState?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский