Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

список dll [D7, Win2k, WinXP]


kernel ©   (2007-12-10 20:09:00) 

Доброго времени суток, уважаемые. Собсно, как можно получить список загруженных в память dll?


slow!alfamoon!com   (2007-12-13 16:32:00) [1]

можно просто вызвать NtCurrentPeb или прочитать из памяти - тк адрес захардкоден (хотя в висте не проверял)


Rouse_   (2007-12-13 13:55:00) [2]


> А это как?

NtQueryInformationProcess вернет тебе PROCESS_BASIC_INFORMATION у которого вторым параметром указатель на PEB
http://msdn2.microsoft.com/en-us/library/aa813706.aspx
В нем есть указатель на PEB_LDR_DATA
http://msdn2.microsoft.com/en-us/library/aa813708.aspx
В ней тебя будет интересовать двусвязный список InMemoryOrderModuleList за каждым из элементов которого расположенна структура LDR_DATA_TABLE_ENTRY из которой ты вытащишь FullDllName :)
За каждым из ллементов это значит по смещению 8 от начала элемента :)


slow!alfamoon!com   (2007-12-13 12:27:00) [3]

Поиском чего-то не нашел.. Исходники дома. Вечером...


kernel   (2007-12-11 20:08:00) [4]


> slow!alfamoon!com   (11.12.07 19:58) [9]
> Можно из PEB прочитать, код я тут постил


А это как? Если не сложно, дайте ссылочку на код, plz.


slow!alfamoon!com   (2007-12-11 19:58:00) [5]

Можно из PEB прочитать, код я тут постил


kernel   (2007-12-11 17:07:00) [6]

А вообще с помощью NtQuerySystemInformation реально получить список загруженных модулей, кроме используемых системой? :)


Riply   (2007-12-11 12:20:00) [7]

> [6] Rouse_ ©   (11.12.07 09:21)
> Посмотри подсистему образа в заголовке :)

Спасибо. Попробую :)


Rouse_   (2007-12-11 09:21:00) [8]


> Например C:\WINDOWS\system32\hal.dll

Посмотри подсистему образа в заголовке :)


Riply   (2007-12-11 07:46:00) [9]

> [4] Leonid Troyanovsky ©   (10.12.07 22:10)
> Почему ж неполный.
> Если они используются, то и загружены.

Значит я плохо умею "у каждого процесса перечислять все исполнительные модули".
Потому, что если посмотреть список, полученный
при помощи NtQuerySystemInformation(SystemModuleInformation,...,
то в нем (акромя всяких sys) можно найти и .dll модули,
которые отсутствуют в первом списке.  :)
Например C:\WINDOWS\system32\hal.dll


Leonid Troyanovsky   (2007-12-10 22:10:00) [10]


> palva ©   (10.12.07 21:11) [3]

>  Там будут exe и dll. Наверняка это будет неполный список.
>  Будут еще dll, которые используются системой.

Почему ж неполный.
Если они используются, то и загружены.

--
Regards, LVT.


palva   (2007-12-10 21:11:00) [11]

Перечислить все процессы и у каждого процесса перечислить все исполнительные модули, которые этим процессом загружены. Там будут exe и dll. Наверняка это будет неполный список. Будут еще dll, которые используются системой.


Вредитель   (2007-12-10 20:34:00) [12]

В ОЗУ. Он имеет в виду работающие в данный момент.


Anatoly Podgoretsky   (2007-12-10 20:23:00) [13]

> kernel  (10.12.2007 20:09:00)  [0]

В какую память?


Наверх

Титульная страница Поиск, карта сайта Написать письмо