![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Раздел импорта ехе-файла [D7, Win2k, WinXP]
Ботвин Дмитрий © (2005-08-11 10:58:00)Всем привет! Подскажите, кто знает, как можно для ехе-файла прочитать раздел импорта и получить список всех dll-модулей, котрые он использует. Даже если он в какой-то момент времени и
не загружает их. Спасибо!
Ботвин Дмитрий (2005-08-11 12:44:00) [1]Понял, всем спасибо!!!
Digitman (2005-08-11 12:01:00) [2]
> Я так понял, что список тех модулей, которые загружаются
> явно, получить не получиться?
хоть явно хоть неявно, но получить список загруженных pe-модулей можно в любой момент времени работы процесса приложения:
- под НТ : EnumProcessModules() (psapi.pas)
- под Маздаем : Module32First/Next (tlhelp32.pas)
wal (2005-08-11 11:46:00) [3]
> Я так понял, что список тех модулей, которые загружаются
> явно, получить не получиться?
В принципе, запустив программу из под делфи, можно получить список модулей, используемых В ДАННЫЙ МОМЕНТ. А если программно, без запуска исследуемого процесса, в общем случае, видимо, никак.
С уважением.
Ботвин Дмитрий (2005-08-11 11:42:00) [4]Digitman © (11.08.05 11:36) [3]
Огромное спасибо! С таблицей импорта ты меня жутко выручил!!!
Я так понял, что список тех модулей, которые загружаются явно, получить не получиться?
Digitman (2005-08-11 11:36:00) [5]например, так :
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:26:00) [6]Digitman © (11.08.05 11:18) [1]
Про явный способ загрузки Dll я понял, а как получить хотя бы
те, которые загружаются неявным способом и прописаны в таблице
импорта?
Digitman (2005-08-11 11:18:00) [7]
> Даже если он в какой-то момент времени и
> не загружает их
если не загружает, значит в разделе импорта нет соотв.сведений
раздел импорта используется сист.загрузчиком на этапе иниц-ции исп.модуля, еще ДО передачи управления на точку входа .. явный LoadLibrary в ходе выполнения программы (если ты об этом) не использует таблицу импорта