DLL_PROCESS_ATTACH und geladene Module
- 
					
					
					
					
 Heyo, Ich versuche im Moment in einer EXE-Datei einen Import zu verändern, dass klappt ganz gut und wunderbar, wenn diese Funktion aus der EXE-Datei heraus aufgerufen wird. Sobald ich dies aber bei einer anderen EXE-Datei machen möchte, bei der ich in den Prozess eingeschleust werde - über ein WH_CBT - funktioniert dies jedoch nicht, da die DLLs zu diesem Zeitpunkt noch nicht initialisiert wurden. Da bereits in der win_main der veränderte Import benutzt werden soll kann ich auf keine anderen Hooks zurückgreifen. Weis jemand wie ich An die Initialisierte Importtable komme, bevor diese benutzt wird ? Vielen Dank schonmal 
 
- 
					
					
					
					
 Das versteht doch niemand. Kann man das nicht vernünftig beschreiben? 
 
- 
					
					
					
					
 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 