1
0
mirror of https://github.com/DxWnd/DxWnd.reloaded synced 2024-12-30 09:25:35 +01:00
DxWnd.reloaded/dll/walkmod.cpp
gho tik 061a3d0f34 v2_02_18_src
Former-commit-id: 806e6b13801b7d8734d8fec125c5962aa75d6e2a
2017-03-06 11:19:14 -05:00

61 lines
2.0 KiB
C++

#include <windows.h>
#include <stdio.h>
#include <stdarg.h>
#include "dxwnd.h"
#include "dxwcore.hpp"
//#include <windows.h>
#include <tlhelp32.h>
//#include <tchar.h>
//#include "dxwnd.h"
extern void HookModule(HMODULE, int);
extern void HookOpenGLLibs(HMODULE, char *);
extern void DumpImportTable(HMODULE);
BOOL ListProcessModules(BOOL hook)
{
HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
MODULEENTRY32 me32;
// Take a snapshot of all modules in the specified process.
hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, GetCurrentProcessId());
if( hModuleSnap == INVALID_HANDLE_VALUE){
OutTraceD("CreateToolhelp32Snapshot ERROR: err=%d\n", GetLastError());
return false;
}
// Set the size of the structure before using it.
me32.dwSize = sizeof( MODULEENTRY32 );
// Retrieve information about the first module,
// and exit if unsuccessful
if( !Module32First(hModuleSnap, &me32)){
OutTraceE("Module32First ERROR: err=%d\n", GetLastError()); // Show cause of failure
CloseHandle(hModuleSnap); // Must clean up the snapshot object!
return false;
}
// Now walk the module list of the process,
// and display information about each module
do {
if(IsDebug){
OutTraceD("MODULE NAME:%s\n", me32.szModule );
OutTraceD(" executable = %s\n", me32.szExePath );
OutTraceD(" process ID = 0x%08X\n", me32.th32ProcessID );
OutTraceD(" ref count (g) = 0x%04X\n", me32.GlblcntUsage );
OutTraceD(" ref count (p) = 0x%04X\n", me32.ProccntUsage );
OutTraceD(" base address = 0x%08X\n", (DWORD) me32.modBaseAddr );
OutTraceD(" base size = %d\n", me32.modBaseSize );
}
extern void HookSysLibs(HMODULE);
if(hook) HookSysLibs((HMODULE)me32.modBaseAddr);
if (IsDebug) DumpImportTable((HMODULE)me32.modBaseAddr);
} while( Module32Next( hModuleSnap, &me32 ) );
// Do not forget to clean up the snapshot object.
CloseHandle( hModuleSnap );
return true;
}