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

Вниз

Раздел импорта ехе-файла   Найти похожие ветки 

 
Ботвин Дмитрий   (2005-08-11 10:58) [0]

Всем привет! Подскажите, кто знает, как можно для ехе-файла прочитать раздел импорта и получить список всех dll-модулей, котрые он использует. Даже если он в какой-то момент времени и
не загружает их. Спасибо!


 
Digitman ©   (2005-08-11 11:18) [1]


>  Даже если он в какой-то момент времени и
> не загружает их


если не загружает, значит в разделе импорта нет соотв.сведений

раздел импорта используется сист.загрузчиком на этапе иниц-ции исп.модуля, еще ДО передачи управления на точку входа .. явный LoadLibrary  в ходе выполнения программы (если ты об этом) не использует таблицу импорта


 
Ботвин Дмитрий   (2005-08-11 11:26) [2]

Digitman ©   (11.08.05 11:18) [1]

Про явный способ загрузки Dll я понял, а как получить хотя бы
те, которые загружаются неявным способом и прописаны в таблице
импорта?


 
Digitman ©   (2005-08-11 11:36) [3]

например, так :

                 pOptHdr := PImageOptionalHeader(hImporter + PImageDosHeader(hImporter)._lfanew + SIZE_OF_NT_SIGNATURE + IMAGE_SIZEOF_FILE_HEADER);
                 if pOptHdr^.NumberOfRvaAndSizes = 16 then
                   begin
                     dwDirSize := pOptHdr^.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size;
                     if dwDirSize > 0 then
                       begin
                         pImpDir := PImageImportDescriptor(hImporter + pOptHdr^.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);

результат - в pImpDir ты получаешь указатель на первый эл-т таблицы импорта модуля hImporter


 
Ботвин Дмитрий   (2005-08-11 11:42) [4]

Digitman ©   (11.08.05 11:36) [3]

Огромное спасибо! С таблицей импорта ты меня жутко выручил!!!

Я так понял, что список тех модулей, которые загружаются явно, получить не получиться?


 
wal ©   (2005-08-11 11:46) [5]


> Я так понял, что список тех модулей, которые загружаются
> явно, получить не получиться?
В принципе, запустив программу из под делфи, можно получить список модулей, используемых В ДАННЫЙ МОМЕНТ. А если программно, без запуска исследуемого процесса, в общем случае, видимо, никак.

С уважением.


 
Digitman ©   (2005-08-11 12:01) [6]


> Я так понял, что список тех модулей, которые загружаются
> явно, получить не получиться?


хоть явно хоть неявно, но получить список загруженных pe-модулей можно в любой момент времени работы процесса приложения:

- под НТ : EnumProcessModules() (psapi.pas)
- под Маздаем : Module32First/Next (tlhelp32.pas)


 
Ботвин Дмитрий   (2005-08-11 12:44) [7]

Понял, всем спасибо!!!



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

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

Наверх




Память: 0.48 MB
Время: 0.032 c
3-1124973063
Max Zyuzin
2005-08-25 16:31
2005.10.09
Помогите оптимизировать SQL- запросик


4-1123739802
Tupoy
2005-08-11 09:56
2005.10.09
Ярлыки на рабочем столе


1-1126950890
_lbp
2005-09-17 13:54
2005.10.09
Помогите разобраться с edit-тами


1-1127129821
Tor
2005-09-19 15:37
2005.10.09
Контроль перефирийных устройств (принтер, сканер, CD-RW)


14-1126773261
Rentgen
2005-09-15 12:34
2005.10.09
Junior java developer :)