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 54516626d3 v2_02_14_src
Former-commit-id: 6064dd3ba4a0a86d4ef365d51a3f26ccb81697d0
2017-03-06 11:17:08 -05:00

77 lines
2.6 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(strcmp("kernel32.dll", me32.szModule) && ("user32.dll", me32.szModule))
// HookSysLibs((HMODULE)me32.modBaseAddr);
//}
//DO NOT COMPILE THIS !!!!
//if(hook){
// //HookModule((HMODULE)me32.modBaseAddr, dxw.dwTargetDDVersion);
// if(!lstrcmpi("OpenGl32.dll", me32.szModule)){
// MessageBox(0, "Got OpenGl", me32.szModule, MB_OK | MB_ICONEXCLAMATION);
// //HookOpenGLLibs((HMODULE)me32.modBaseAddr, dxw.CustomOpenGLLib);
// }
//}
//if(!strcmp(me32.szModule, "ref_gl.dll")) {
// HookOpenGLLibs((HMODULE)me32.modBaseAddr, dxw.CustomOpenGLLib);
// DumpImportTable((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;
}