M
Also, ich setze einen CBT Hook:
(innerhalb der DLL die in den Zielprocess reinmuss)
LRESULT CALLBACK CBTProc(int nCode,WPARAM wParam,LPARAM lParam) {
return CallNextHookEx(CBThook,nCode,wParam,lParam) ;
} ;
void WINAPI InstallNCT(void) {
GWMhook = SetWindowsHookEx(WH_CBT,&CBTProc,GetModuleHandle("MYDLL.dll"),NULL );
} ;
Dieser Code wird mit der ProzessID des Launchers ausgeführt. Sobald ein neuer Prozess erstellt/aktiviert ist wird der folgende Code durchgeführt:
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
if (isZielProzess()) {
HMODULE thismod = GetModuleHandle("MYDLL.dll") ;
LPVOID addr = GetProcAddress(thismod,"MyOverrideFunction") ;
ChangeImport_("D3DDrv.dll","DDRAW.dll","FunctionName",addr) ;
} ;
return TRUE ;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
} ;
Wobei ChangeImport_(ModulName,ImportModulName,ImportFunctionName,Addresse) ;
in der MudulName.dll den Import aus der ImportModulName.Dll mit dem Namen ImportFunctionName mit der Addresse überschreibt.
Nun funzt das nicht, da die D3DDrv nich initialisiert ist... aber ich brauchs funzent