Показать сообщение отдельно

  #5138  
Старый 09.12.2009, 16:48
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
С нами: 9399214

Репутация: 52
По умолчанию

возник вопрос как получить список всех модулей в системе (загруженных) через NtQuerySystemInformation немогу понять какую ей структуру надо
Код:
Procedure GetSystemInformation;
 var
   Temp: PSYSTEM_MODULE_INFORMATION;
   modin:PSYSTEM_MODULE_INFORMATION;
   ReturnLength: DWORD;
  I: integer;
  ou: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;
             repeat

              Form2.ListBox1.Items.Add(Temp^.aSysM.ImageName);
               Temp := Pointer(DWORD(Temp) + Temp^.aSysM.ModuleNameOffset);
               if Temp^.aSysM.ModuleNameOffset=0 then
                inc(ou);

             until ou=2;
         end;
       finally
         FreeMem(modin);
       end;
     end;
   finally
   end;
end;
 SYSTEM_MODULE= ^_SYSTEM_MODULE;
  _SYSTEM_MODULE= packed record
    Reserved:array[0..1] of  ULONG;
    Base:ULONG;
    Size:ULONG;
    Flags:ULONG;
    Index:ULONG;
    Unknown:ULONG;
    ModuleNameOffset:SHORT;
    ImageName:Array[0..256] of Char;
  end;
  PSYSTEM_MODULE_INFORMATION = ^SYSTEM_MODULE_INFORMATION;
  SYSTEM_MODULE_INFORMATION = packed record
   uCount:ULONG;
   aSysM:SYSTEM_MODULE;
  end;
уже начался брутвфорс по перебору вариантов но это не дело...
 
Ответить с цитированием