OldSchoolHack

Registrieren / Anmelden Deutsch

Prob mit Detour

icon Thema: Prob mit Detour

Anmeldungsdatum: Sep 2010

Beiträge: 38

Erledigt!

Spoiler
CPP Code:
  1. #include <Windows.h>
  2. #include "d3d8.h"
  3. #include "detours.h"
  4. #pragma comment (lib,"detours.lib")
  5.  
  6.  
  7.  
  8. IDirect3DDevice8* deviceptr = NULL;
  9. typedef void (*oBeginScene)();
  10. oBeginScene pBeginScene;
  11.  
  12.  
  13. void __declspec (naked) GetDevicePointer(){
  14. MessageBox(0,"BeginScene wird aufgerufen","funcktioniert",0);
  15. if (deviceptr == NULL){
  16. __asm{
  17. push eax
  18. mov eax, [esp + 0x34 + 0x04]
  19. mov deviceptr,eax
  20. pop eax
  21. jmp pBeginScene
  22. }
  23. }else{
  24. __asm jmp pBeginScene
  25. }
  26. }
  27.  
  28. void initHook(){
  29. char buff[200];
  30. DWORD offset = 0x443A0;
  31. DWORD funcadr = (DWORD)GetModuleHandle("d3d8.dll") + offset + 0x1e;
  32. itoa(funcadr,buff,16);
  33. strcat(buff," hier wird gehookt.");
  34. MessageBox(0,buff,"[DEBUG]",0);
  35. pBeginScene = (oBeginScene)DetourFunction((PBYTE)(funcadr),(PBYTE)GetDevicePointer);
  36. }
  37.  
  38. BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved){
  39. if (fdwReason == DLL_PROCESS_ATTACH){
  40. initHook();
  41. }
  42. }
bin jetzt soweit gekommen, habe das richtige offset gefunden.
Allerdings springt msdetours immernoch ins nirvana, also nicht zu meiner GetDevicePointer funktion!
Benutze VC++ unter win64 bit. ich injiziere die DLLs mit dem Programm ProcessHacker2, ist ein erweiterter Taskmanager.
Noch eine Sache. Ich habe versucht initHook Funktion im Thread zu starten:
CPP Code:
  1. CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)initHook,0,0,NULL);
aus der DLL Main raus schmiert der Prozess sofort ab.


Ohje, wie peinlich. ich hatte vergessen der Dllmain einen Rückgabewert zu verpassen. Nun funktioniert alles so weit.