OldSchoolHack

Registrieren / Anmelden Deutsch

GameHacking Tutorial Part 06

icon Thema: GameHacking Tutorial Part 06

Anmeldungsdatum: Feb 2008

Beiträge: 7

Erstmal Hallo und Danke für die Tutorials!
Endlich hab ich mich mal an Olly und C++ gewagt (kann hauptsächlich Java)

@ Fenster nicht gefunden:
Bei mir ging
TEXT Code:
  1. FindWindow()
nicht, da der vollständige String anscheinend nicht \"MS Pinball bla\" ist...
(geht da irgendwas durch ein Locale verloren?)
Meine Lösung:
TEXT Code:
  1.  
  2. HWND fenster = 0;
  3. while(fenster == 0)
  4. {
  5. EnumWindows(EnumWindowsCallback, LPARAM(&fenster));
  6. Sleep(1000);
  7. }
  8.  
Und dazu die Hilfsfunktionen:
TEXT Code:
  1.  
  2. int FindStringInString(char *pStr, char *pFind)
  3. {
  4. int strLength = strlen(pStr);
  5. int findLength = strlen(pFind);
  6. if(pStr == 0 || pFind == 0 || strLength < findLength) return -1;
  7.  
  8. for(int i = 0; i < strLength - findLength + 1; ++i)
  9. {
  10. for(int j = 0; j < findLength; ++j)
  11. {
  12. if(pStr[i+j] != pFind[j] ) break;
  13. if(j == strlen(pFind) - 1) return i;
  14. }
  15. }
  16.  
  17. return -1;
  18. }
  19.  
  20. static BOOL CALLBACK EnumWindowsCallback(HWND hWnd, LPARAM lParam)
  21. {
  22. HWND* pCadetWnd = (HWND*)lParam; //zeiger auf handle holen
  23. char sTitle[128];
  24. char sToFind[24];
  25. strcpy(sToFind, "Pinball"); //space cadet reinschreiben
  26. GetWindowText(hWnd, sTitle, 128);//fenster titel reinschreiben
  27.  
  28. if(FindStringInString(sTitle, sToFind) >= 0) //sTitle enthält sToFindyy
  29. {
  30. *pCadetWnd = hWnd; //handle abspeichern
  31. return false; //gefunden, callback aufrufe stoppen
  32. }
  33.  
  34. return true; //weiter callback aufrufen
  35. }
  36.  
(für Noobs: einfach die Hilfsfunktionen vor die main-Funktion stellen, sowie den oberen Code in Kn4ck3rs Beispiel ersetzen)
-> Sucht nach String in String (hier "Pinball"), liefert unglücklicherweise natürlich auch ein Wordfenster, falls ihr Pinball.doc offen habt

2.:
Kann man die Pinballspeicheradressen dynamisch finden?
Hab das Gefühl TSearch gibt absolute Speicheradressen zurück (stimmt das?) und dadurch sind sie jedes mal leicht anders...