Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список всех заггруженных Dll В системе 
V
    Опции темы
transserg
Дата 9.12.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 8.8.2009

Репутация: нет
Всего: нет



привет всем... возник вопрос как получить список ВСЕХ загруженных длл в системе.... пробовал через тол хел библиотеку так она мне показывает только для моего процесса модули.... через нт квери тоже самое только для своего процесса... 
вот моя процедура
Код
 SYSTEM_MODULE= ^_SYSTEM_MODULE;
  _SYSTEM_MODULE= packed record
    Reserved1:ULONG;
    Reserved2:ULONG;
    ImageBaseAddress:ULONG;
    ImageSize:ULONG;
    Flags:ULONG;
    Index:WORD;
    Rank:WORD;
    w018:WORD;
    NameOffset:WORD;
    ImageName:Array[0..255] of Char;
  end;
  PSYSTEM_MODULE_INFORMATION = ^SYSTEM_MODULE_INFORMATION;
  SYSTEM_MODULE_INFORMATION = packed record
   uCount:ULONG;
   aSysM:array [0..16384] of _SYSTEM_MODULE;
  end;

Procedure GetSystemInformation;
 var
   Temp: PSYSTEM_MODULE_INFORMATION;
   modin:PSYSTEM_MODULE_INFORMATION;
   ReturnLength: DWORD;
  I: integer;
//  ou:integer;
//  j: integer;
 begin
//  ou:=0;
   try
     ReturnLength := 0;
     if NtQuerySystemInformation(SystemModuleInformation,nil, 0, ReturnLength) <> STATUS_INFO_LENGTH_MISMATCH then
      Exit;
     if ReturnLength > 0 then
       begin
        GetMem(modin, ReturnLength);
        try
         if NtQuerySystemInformation(SystemModuleInformation,modin, ReturnLength, ReturnLength) = 0 then
         begin
           Temp := modin;
           for I := 0 to Temp^.uCount do
           if pos('.dll',String(Temp^.aSysM[i].ImageName))>0 then
             Form2.ListBox1.Items.Add(ExtractFileName(Temp^.aSysM[i].ImageName));
         end;
       finally
         FreeMem(modin);
       end;
     end;
   finally
   end;
end;

есть ли  способ сделать задуманное не просматривая загруженные длл кажого процесса в отдельности?
PM MAIL   Вверх
ButtonOFF
Дата 10.12.2009, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


улетевший
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 16.11.2009

Репутация: нет
Всего: нет



Через нт квери перебором всех процессов только, имхо, ну есть еще способ через PEB, только это опять же перебором всех потоков уже...
PM MAIL   Вверх
transserg
Дата 10.12.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 8.8.2009

Репутация: нет
Всего: нет



ButtonOFF хм... значит перебором но как в нт квери указать у какого процесса выводить модули?
PM MAIL   Вверх
ButtonOFF
Дата 10.12.2009, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


улетевший
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 16.11.2009

Репутация: нет
Всего: нет



Смотри функции Zw(Nt), поищи Win 2000 Native API.pdf
PM MAIL   Вверх
transserg
Дата 10.12.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 8.8.2009

Репутация: нет
Всего: нет



в общем сделал через EnumProcessModules... все равно пришлось каждый процесс просматривать отдельно к тому же фильтровать одинаковые модули... что приводит к приличной задержке =)
PM MAIL   Вверх
ButtonOFF
Дата 10.12.2009, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


улетевший
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 16.11.2009

Репутация: нет
Всего: нет



ну если базовые длл такие как ntdll.dll, kernel32, user32, gdi  и тд, не фильтровать, то можно наверно побыстрее сделать... тебе зачем это если не секрет ? Если с оли дебагером знаком, можеш грузануть ProccessExplorer в него и посмотреть как он и че вызывает... если грамнотно сделать то никаких задержек быть не должно.

Это сообщение отредактировал(а) ButtonOFF - 10.12.2009, 20:00
PM MAIL   Вверх
transserg
Дата 10.12.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 8.8.2009

Репутация: нет
Всего: нет



ButtonOFF дописваю корсовой =) так как мониторинг процессов идет на натив апи то и хотело все остальное на них сделать...
PM MAIL   Вверх
ButtonOFF
Дата 11.12.2009, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


улетевший
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 16.11.2009

Репутация: нет
Всего: нет



Чето я посмотрел и не нашел, как модули найти у процесса, может плохо смотрел, ну можно через CreateToolhelp32Snapshot  TH32CS_SNAPMODULE32 = 0x00000010
PM MAIL   Вверх
transserg
Дата 11.12.2009, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 8.8.2009

Репутация: нет
Всего: нет



EnumProcessModules через нее я получал список модулей
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0916 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.