Форум: "WinAPI";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
Вниз
Как узнать какие DLL подгружены к процессу? Найти похожие ветки
← →
Xemax (2002-10-12 21:24) [0]Как узнать какие DLL подгружены к процессу? Это надо сделать используя ТОЛЬКО библиотеки Ntdll.dll и Kernel32.dll. Еще раз обращу внимание на слово ТОЛЬКО - PSAPI.dll выходит за граници этого только!!!
← →
Digitman (2002-10-13 13:33) [1]читай все относящееся к структуре PEB (process environmemt block)
← →
Xemax (2002-10-13 18:20) [2]
typedef struct _PEB {
BYTE Reserved1[2];
BYTE BeingDebugged;
BYTE Reserved2[229];
PVOID Reserved3[59];
ULONG SessionId;
} PEB, *PPEB;
И что мне потом с этой структурой делать?
← →
Digitman (2002-10-14 09:12) [3]нет, это не PEB.
это жалкое подобие PEB
а что тебе не читается обычными (документированными) средствами-то ?
в цикле (с пом. ф-ции VirtualQuery[Ex]) пройдись по всем регионам ВАП процесса, отфильтруй только те, что имеют MEMORY_BASIC_INFORMATION.TYPE = MEM_IMAGE, базовый адрес каждого из полученных регионов трактуй как хэндл PE-модуля и вызывай для этого хэндла GetMofuleFileName().
И всех делов ! Фильтр по TYPE = MEM_IMAGE заведомо работает на всех NT-based платформах, так что - проще способа не найдешь
← →
Толик (2002-10-14 10:35) [4]В StringList записываются имена подгруженных файлов и HICON ассоциированных с ними иконок
procedure EnumLoadingModule(const AStrings: TStrings);
var
MemoryInfo: TMemoryBasicInformation;
Region: longword;
pStr: pchar;
FileInfo: PSHFileInfo;
const
SizeFileInfo: longword = System.SizeOf(TSHFileInfo);
begin
Region := 0;
pStr := SysUtils.StrAlloc(MAX_PATH);
try
FileInfo := System.GetMemory(SizeFileInfo);
try
while Windows.VirtualQuery(pointer(Region), MemoryInfo, System.SizeOf(MemoryInfo)) =
System.SizeOf(MemoryInfo) do
with MemoryInfo do begin
if (State <> MEM_FREE) and (BaseAddress <> nil) and (AllocationBase = BaseAddress) then begin
if GetModuleFileName(longword(BaseAddress), pStr, MAX_PATH) > 0 then begin
ShellAPI.SHGetFileInfo(pStr, 0, FileInfo^, SizeFileInfo,
SHGFI_ICON or SHGFI_SMALLICON);
AStrings.AddObject(pStr, TObject(FileInfo^.hIcon));
end;//if
end;//if
Region := Region + RegionSize;
end;//with
finally
System.FreeMemory(FileInfo);
end;//try
finally
SysUtils.StrDispose(pStr);
end;//try
end;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c