mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
61 lines
2.0 KiB
C++
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;
|
|
}
|
|
|