//thanks for powerful windbg~
BOOL FindModule(HANDLE hProcess, HMODULE hModule, PLDR_DATA_TABLE_ENTRY pLdrData)
{
DWORD i;
PLIST_ENTRY pListEntry;
PPEB_LDR_DATA pPebLdr;
PROCESS_BASIC_INFORMATION pbi;
NTSTATUS Status;
Status = NtQueryInformationProcess(hProcess, ProcessBasicInformation, &pbi, sizeof(PROCESS_BASIC_INFORMATION), NULL);
if(!NT_SUCCESS(Status)) {
SetLastError(RtlNtStatusToDosError(Status));
return FALSE;
}
if(hModule == NULL) {
if(!ReadProcessMemory(hProcess, &(pbi.PebBaseAddress->ImageBaseAddress), &hModule, sizeof(hModule), NULL))
return FALSE;
}
if(!ReadProcessMemory(hProcess, &(pbi.PebBaseAddress->Ldr), &pPebLdr, sizeof(pPebLdr), NULL))
return 0;
if(pPebLdr) {
if(!ReadProcessMemory(hProcess, &(pPebLdr->InMemoryOrderModuleList), &pListEntry, sizeof(pListEntry), NULL))
return FALSE;
i = 0;
while(pListEntry != &(pPebLdr->InMemoryOrderMod
还原GetModuleFileNameExW
最新推荐文章于 2019-06-21 17:15:38 发布
本文介绍了如何使用Windbg及相关API来实现GetModuleFileNameExW功能,通过遍历进程的内存模块列表获取模块的完整路径。代码中包含FindModule函数,用于查找指定进程中的模块,并在成功后通过GetModuleFileNameExW函数复制模块名到缓冲区。
摘要由CSDN通过智能技术生成