2011-12-09 195 views
2

有沒有辦法從另一個使用C++的進程獲取模塊的句柄?
GetModuleHandleGetModuleHandleEx是很好的,只從相同的過程獲得句柄。獲取來自其他進程的模塊句柄

+0

CreateToolHelp32Snapshot函數+ Module32First /下一頁 –

+0

有一個答案在http://stackoverflow.com/questions/865152/how-can-i-get-a-process-handle-by-its-name-in -c來自之前的帖子。 –

回答

1

您可以使用ReadProcessMemoryPEB_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;