有没有办法使用C++从另一个进程中获取我知道其名称的模块的句柄?GetModuleHandle
和GetModuleHandleEx
仅从同一进程中获取句柄是很好的。
最佳答案
您可以使用 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;
关于c++ - 从其他进程获取模块句柄,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8447801/