![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Повторение данных в IMAGE_DIRECTORY_ENTRY_IMPORT
Spawn © (2003-07-05 15:55:00)
Почему при просмотре таблицы импорта находящиеся там данные повторяются? Вот код:
procedure TForm1.Button1Click(Sender: TObject);
var
ImageDosHeader:PImageDosHeader;
ImageNtHeaders:PImageNtHeaders;
ImageDataDirectory:TImageDataDirectory;
ImportDesc: PImageImportDescriptor;
Base:Cardinal;
begin
Base:=GetModuleHandle(nil);
ImageDosHeader:=PImageDosHeader(Base);
ImageNtHeaders:=PImageNtHeaders(Base+ImageDosHeader^._lfanew);
ImageDataDirectory:=ImageNtHeaders.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT];
if ImageDataDirectory.VirtualAddress = 0 then
Exit;
ImportDesc:=PImageImportDescriptor(Base+ImageDataDirectory.VirtualAddress);
while ImportDesc^.Name<>0 do
begin
ShowMessage(PChar(Base) + ImportDesc^.Name);
Inc(ImportDesc);
end;
end;
Результат данного кода будет такой:
kernel32.dll
user32.dll
advapi32.dll
oleaut32.dll
kernel32.dll
advapi32.dll
kernel32.dll
version.dll
gdi32.dll
user32.dll
kernel32.dll
oleaut32.dll
comctrl32.dll
Заранее спасибо
AlexRush (2003-07-07 10:50:00) [1]
Потому что так сгенерировал линкер. Посмотри подопытный PE-файл с помошью TDUMP.