Получение дескриптора модуля из другого процесса
Есть ли способ получить дескриптор модуля, который я знаю его имя от другого процесса, использующего C++?GetModuleHandle
а также GetModuleHandleEx
хороши, только получая ручку от того же самого процесса.
1 ответ
Вы можете использовать ReadProcessMemory и PEB_LDR_DATA
typedef struct _PEB_LDR_DATA {
BYTE Reserved1[8];
PVOID Reserved2[3];
LIST_ENTRY InMemoryOrderModuleList;
} PEB_LDR_DATA, *PPEB_LDR_DATA;
LIST_ENTRY - это связанный список, который содержит имя вашей dll и базовый адрес, где загружена dll.
typedef struct _LDR_DATA_TABLE_ENTRY {
PVOID Reserved1[2];
LIST_ENTRY InMemoryOrderLinks;
PVOID Reserved2[2];
PVOID DllBase;
PVOID EntryPoint;
PVOID Reserved3;
UNICODE_STRING FullDllName;
BYTE Reserved4[8];
PVOID Reserved5[3];
union {
ULONG CheckSum;
PVOID Reserved6;
};
ULONG TimeDateStamp;
} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;