Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 03:58

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Tutorial] Gamehacking Howto I [Ger]

Discussion on [Tutorial] Gamehacking Howto I [Ger] within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old 06/22/2009, 13:33   #91

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
hm eigentlich nicht. weil CWnd ist ein teil von mfc. lösch mal deinen debug ordner , pack alles mit winrar und schicks mir mal bitte.
Adroxxx is offline  
Old 06/22/2009, 13:36   #92
 
elite*gold: 0
Join Date: May 2008
Posts: 489
Received Thanks: 210
Quote:
Originally Posted by renebubi View Post
Hm...funktioniert immer noch nicht so richtig und ja ich bin mir sicher^^, kann das eventuell was mit den librarys zu tuhen haben?
1. Errors posten.
2. Bist du sicher du hast MFC? Das ist nämlich nur in teuren kommerziellen Version dabei.
schlurmann is offline  
Old 06/22/2009, 13:49   #93

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
Quote:
Originally Posted by schlurmann View Post
1. Errors posten.
2. Bist du sicher du hast MFC? Das ist nämlich nur in teuren kommerziellen Version dabei.
Ich glaub mal, dass es immernoch die gleichen Errors sind. Das FindWindow keine Memberfunktion von CWnd ist.

Ja MFC ist nur bei dem Vollen Packet dabei. Also nicht bei der Express Edition. Wobei ich glaub bei dem ganz neuen Visual Studio ist es auch dabei. Ist aber nur Beta.

Hm, aber wenn das kein MFC Projekt ist, sollte der CWnd gar nicht kennen. Dann würde da kommen CWnd keine Klasse oder Namespace... seltsam.
Adroxxx is offline  
Old 06/22/2009, 19:05   #94
 
elite*gold: 0
Join Date: Mar 2008
Posts: 4
Received Thanks: 0
ja ich habe mfc... hm ich poste dann mal die errors
Danke..
renebubi is offline  
Old 06/30/2009, 13:41   #95

 
FichteFoll's Avatar
 
elite*gold: 237
Join Date: Sep 2008
Posts: 4,476
Received Thanks: 4,587
Also ich habe folgendes Problem:
Ich suche nach einem Pointer für den Jump und Walljump-hack bei S4. Das Problem ist, dass er nichts spezielles findet...

Ich habe den Wert gefunden, dann bin ich auf "Find outwhat accesses this address" gegangen und den Wert dann wieder manuell verändert (den Jump-value), da dieser nicht automatisch geändert wird. Jetzt zeigt er mir dann im Degugger "fld dword ptr [eax+1c]" an. Da dachte ich mir, such mal nach dem eax, der laut Extra info 02ABF544 ist. Also suche ich nach dem und finde: nichts.

Dann habe ich nach EDI gesucht ("00000A28"), worauf ich dann jedoch 143 values habe mit insgesamt ca 100 base pointern.

Screen ist im Anhang.

Was soll ich jetzt tun?

Achja, nice tut ^^ Ich denke man, das kann man auch mit Visual Basic so machen, oder? Und welches Bildbearbeitungsprogramm hast du benutzt?
Attached Images
File Type: jpg CE 1.jpg (158.4 KB, 41 views)
FichteFoll is offline  
Old 06/30/2009, 23:34   #96
 
elite*gold: 99
Join Date: Oct 2008
Posts: 2,708
Received Thanks: 1,726
Quote:
Originally Posted by FichteFoll View Post
Also ich habe folgendes Problem:
Ich suche nach einem Pointer für den Jump und Walljump-hack bei S4. Das Problem ist, dass er nichts spezielles findet...

Ich habe den Wert gefunden, dann bin ich auf "Find outwhat accesses this address" gegangen und den Wert dann wieder manuell verändert (den Jump-value), da dieser nicht automatisch geändert wird. Jetzt zeigt er mir dann im Degugger "fld dword ptr [eax+1c]" an. Da dachte ich mir, such mal nach dem eax, der laut Extra info 02ABF544 ist. Also suche ich nach dem und finde: nichts.

Dann habe ich nach EDI gesucht ("00000A28"), worauf ich dann jedoch 143 values habe mit insgesamt ca 100 base pointern.

Screen ist im Anhang.

Was soll ich jetzt tun?

Achja, nice tut ^^ Ich denke man, das kann man auch mit Visual Basic so machen, oder? Und welches Bildbearbeitungsprogramm hast du benutzt?
Nimm vielleicht mal die Pointer Suche von CheatEngine (rechtsklick und dann Pointer Scan for this adresse, dann alles so lassen und Scan drücken)

Einen Wallhack zu erstellen ist aber nicht ganz so leicht.

1. Möglichkeit: per Telepot Hack (sicher die einfachste) Du portest dich also immer ein kleines Stück weiter während du läufst. Du teleportierst dich dann quasi in eine Wand rein während du läufst und teleportierst dich immer weiter.
2. Ich kenn das Game zwar nicht, aber vielleicht kannst du ja einen Wallhack so erstellen, indem du dir einen Flug Hack bastelst und über die Wände drüber rennst.
3. Mit Ollydbg. Die ist schon etwas schwerer, ich weiß auch nicht wie das geht. (Kenne mich eigentlich nur mit Cheat Engine aus)

Mehr fällt mir grade auch ned ein, aber es gibt bestimmt noch viele andere Möglichkeiten.^^
Frezee is offline  
Old 07/01/2009, 19:46   #97
 
SWFninjatom's Avatar
 
elite*gold: 0
Join Date: Apr 2009
Posts: 268
Received Thanks: 65
Adroxxx kannst du mir mal das mit dem pointer finden nochmal erklären ich verstehe das irgendwie nicht so ganz wie soll man herausfinden was für welche adresse is
SWFninjatom is offline  
Old 07/09/2009, 01:44   #98

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
Quote:
Originally Posted by SWFninjatom View Post
Adroxxx kannst du mir mal das mit dem pointer finden nochmal erklären ich verstehe das irgendwie nicht so ganz wie soll man herausfinden was für welche adresse is
Schau dir mal den Sammelthread mit Tutorials an. Da sind auch nochmal 2 Tutorials für DMA to Static.

btw. bisher ist niemanden mein super tolles elfenlied deckblatt aufgefallen
Adroxxx is offline  
Old 07/13/2009, 00:26   #99
 
anonymuus's Avatar
 
elite*gold: 0
Join Date: Apr 2009
Posts: 7
Received Thanks: 0
Wink

Quote:
Originally Posted by renebubi View Post
hey,
ich hab ebenfalls ein Problem mit dem "Solitär Hack", .... ich kann ihn nicht starten weil ich zahlreiche Error´s bekomme wie z.B.:
1) error C2039: 'FindWindowExW' : is not a member of 'CWnd'
2) error C2664: 'FindWindowExW' : cannot convert parameter 4 from 'const char [8]' to 'LPCWSTR'


...hoffe auf Hilfe, danke im Vorraus
Das Problem hab ich auch! Aber selbst ist der Mann, heulen bringt auch nix. Hab nur 2 Minuten rumgespielt und hatte für mich persönlich die Lösung: die Funktion muss FindWindowExA heißen. Ich hab bei mir Microsoft Visual Studio 2008 installiert, vielleicht liegts an der neueren Version.

Beispiel:
Code:
//...

void CSolitärHackDlg::m_lesen(void) 
{ 
    if (pWnd = CWnd::FindWindowExA(NULL,NULL,NULL,_T("Solitär"))) { 
     
        hWnd = HWND(pWnd->GetSafeHwnd());  
         
//...
Nicht schlecht für jemanden, der vor 2 Stunden erst vStudio installiert und vorher mit c++ nix am Hut hatte, was?

btw zurück, ich hab die ganze Zeit schon das Bild bewundert ;D is echt hübsch.

Hoffe, das hilft dir.



Dafür bring ich n anderes Problem rein^^

Quote:
Originally Posted by diesem dumme compiler
error C2664: '_wtoi' : cannot convert parameter 1 from 'CString' to 'const wchar_t *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Hat da jemand ne Idee?


Gruß,
anonymuus

EDIT: Hab das mit a und w mal weitergetrieben: atoi() konvertiert auch einen String in einen Integer, erzeugt im Compiler keinen Fehler, aber das fertige Programm spackt. Es bleibt bei lesen immer auf dem Wert -858993460 und bei schreiben tut sich nix.

anonymuus is offline  
Old 07/13/2009, 01:51   #100

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
Hallo anonymuus,

danke, dass du den Fehler mit FindWindow gefunden hast, den wohl mehrere hier haben.


Auch an dich die Frage: Ist deine Projekteinstellung auf Unicode? Oder Multibyte?
Dies kannst du sehen, wenn du unter Projekt -> Projekt Eigenschaften gehst und dann Konfigurationseigenschaften. Dort unter Zeichensatz.

Außerdem wäre es vielleicht auch Wichtig zu wissen, unter welchem System du Arbeitest. Windows Xp / Vista / 32bit / 64bit ...

Ich vermute mal, dass du unter Vista arbeitest. Ich habe gerade einen Interessanten Artikel in der MSDN gefunden:

Dort geht es um Ansi und Unicode. FindWindowEx ist die Grundfunktion die als Makro definiert ist. Ich benutzte in dem Tutorial direkt FindWindowExW. Was für Unicode ist.
Da FindWindowEx schon vordefiniert ist, könnte man auch das benutzten anstatt FindWindowExW(),

Zu dem _wtoi() problem:

Wenn du atoi benutzt kannst du folgende schreibweise benutzten:
PHP Code:
value = (int)atoi (m_Value); 
Falls du noch Probleme hast, kannst du dich hier melden.
Adroxxx is offline  
Old 07/13/2009, 12:23   #101
 
anonymuus's Avatar
 
elite*gold: 0
Join Date: Apr 2009
Posts: 7
Received Thanks: 0
Quote:
Originally Posted by Adroxxx View Post
Hallo anonymuus,

Auch an dich die Frage: Ist deine Projekteinstellung auf Unicode? Oder Multibyte?

(...)

Außerdem wäre es vielleicht auch Wichtig zu wissen, unter welchem System du Arbeitest. Windows Xp / Vista / 32bit / 64bit ...
Tag,

Ich hab einfach das Projekt so gelassen wie default, das wäre dann bei mir Multibyte. Ich arbeite mit WinXP Pro 32bit, nicht mit

Vielen Dank für die Hilfe, Compiler meckert wieder nich. Allerdings erscheint in der EditBox immernoch -858993460 wenn man liest, schreiben lässt sich auch nicht.

Wenn es von nutzen sein könnte, dann einfach mal mein ziehen.

Ich muss zugeben, das meiste is einfach aus der Zusammenfassung geklaut. Aber mit meinem bisherigen Wissensstand in C++ kann ich erst auf Kommandozeilenebene Zahlen addieren, subtrahieren, dividieren, multiplizieren und sortieren

Gruß,
~
anonymuus is offline  
Old 07/13/2009, 14:59   #102

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
Hast du mal versucht, das Projekt auf Unicode umzustellen? Eigentlich sollte es dann mit dem FindWindowExW und dem _wtoi() funktionieren.

Ansonsten sind immer Debug ausgaben recht hilfreich. Sprich abfrage, ob das Fenster gefunden wurde. (Das hab ich ja drin) und dann kannst du die zwischenschritte beim Pointer berechnen abfragen. Ob die richtige Adresse gelesen wurde.

Wenn dort so ein Wert raus kommt, liegt es meist daran, dass das falsche Window Handle genommen wurde, oder die falsche Adresse.

Ich schau mir mal dein Projekt an und editier es dann hier rein.

//edit: nächstes mal debug ordner löschen , dann wirds kleiner
Wenn du es auf Unicode stellst, kannst du _wtoi und FindWindowExW benutzten.
Dann sollte es eigentlich funktionieren. VS ist leider nicht abwärtskompatibel, deshalb kann ich dein Projekt nur in der Express starten aber net kompelieren. Ansonsten sah alles eigentlich richtig aus.
Adroxxx is offline  
Old 07/13/2009, 20:33   #103
 
anonymuus's Avatar
 
elite*gold: 0
Join Date: Apr 2009
Posts: 7
Received Thanks: 0
Tut mir ja fast schon leid dich nochmal belästgen zu müssen...

Quote:
Originally Posted by Adroxxx View Post
Hast du mal versucht, das Projekt auf Unicode umzustellen? Eigentlich sollte es dann mit dem FindWindowExW und dem _wtoi() funktionieren.
japp, funzt super.
Quote:
Originally Posted by Adroxxx View Post
und dann kannst du die zwischenschritte beim Pointer berechnen abfragen. Ob die richtige Adresse gelesen wurde.
dasss.. bitte nochmal für doofe

Quote:
Originally Posted by Adroxxx View Post
//edit: nächstes mal debug ordner löschen , dann wirds kleiner
hehe, sorry^^



Leider immernoch der immense negativ-Wert, wenn du mich nicht schon für meine vielen Fragen hasst, dann würd ich mich über noch ne Lösung freuen ;D

gruß, ~
anonymuus is offline  
Old 07/13/2009, 22:40   #104

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
Das ist nun wirklich seltsam. Ich habe mir deinen Source mal angeschaut. Sieht zumindest richtig aus. Ich kann dort keinen Fehler finden. Was die Sache natürlich knifflig macht.

Gut, [...] da hilft aber alles nichts [...]

Debug Ausgabe:
Es ist immer gut die Zwischenschritte auszugeben.

Beispiel:
PHP Code:
if (pWnd CWnd::FindWindowExW(NULL,NULL,NULL,_T("Solitär"))) {
    
        
hWnd HWND(pWnd->GetSafeHwnd()); 
        
    }else{
    
AfxMessageBox(_T("Fenster nicht gefunden!"));
    } 
Da ist eine Abfrage, wenn das Fenster gefunden wurde, speichert er den Handle , falls nicht kommt eine Messagebox mit einer Fehlermeldung. Ist auch gut mal das Programm zu starten ohne das Solitär läuft, damit man schaut, ob wirklich die Fehlermeldung kommt.

Dann lesen wir ja die erste Adresse aus, damit wir an unseren Pointer kommen.
PHP Code:
ReadProcessMemory(hProc, (LPCVOID)address1, &address2sizeof(long), &numBytesRead); 
Hier lesen wir address1 aus, und schreiben es in address2.

Dort müssen wir uns mal address2 ausgeben lassen. Um zu sehen, welche adresse dort steht.

Das machen wir wie folgt:

PHP Code:
ReadProcessMemory(hProc, (LPCVOID)address1, &address2sizeof(long), &numBytesRead);

CString strAdress2;
strAdress2.Format(_T("%x"),address2);
AfxMessageBox(strAdress2); 
Was wir hier nun machen, wir legen einen CString an mit namen strAdress2. Und mit Format packen wir (unsigned long) address2 da rein, und die ausgabe ist in Hex ( %x).
Dann kommt eine MessageBox wo die Adresse dann ausgegeben wird.

Am besten startest du Solitär und Cheat Engine.
Du wählst bei CheatEngine Solitär als Ziel aus, und fügst die Adresse Manuell hinzu. Also 0x01007170 und schaust, welche Adresse dort drin steht.
Bei mir ist das z.B. 0x000AB640

Dann startest du dein Solitär Hack und klickst auf Lesen. Dann sollte eine MessageBox kommen, mit dieser Adresse.

Dann kannst du nochmal beim zweiten ReadProcessMemory auch so eine Ausgabe machen. Da sollte dann 0x00AB470 raus kommen, weil ja 0x30 dazu addiert wird.

Und nicht vergessen, wenn du auf Unicode umgestellt hast:
  • FindWindowExW
  • _wtoi()
Benutzten.

Falls noch Probleme sind, kannst du wie immer diese hier im Thread posten.
Adroxxx is offline  
Old 07/14/2009, 12:50   #105
 
anonymuus's Avatar
 
elite*gold: 0
Join Date: Apr 2009
Posts: 7
Received Thanks: 0
PHP Code:
void CSolitärHackDlg::m_lesen(void

    if (
pWnd CWnd::FindWindowExW(NULL,NULL,NULL,_T("Solitär"))) { 
     
        
hWnd HWND(pWnd->GetSafeHwnd());  
         
    }else{ 
    
AfxMessageBox(_T("Solitär wurde nicht gefunden!")); 
    } 
    
UpdateData(true); 
    
unsigned long address1 0x01007170
    
unsigned long offset 0x30
    
unsigned long address2 
    
int value 
    
DWORD numBytesRead
    
HANDLE hProc
        
    
DWORD procID
    
GetWindowThreadProcessId(hWnd,&procID); 

    
hProc OpenProcess(PROCESS_ALL_ACCESSFALSEprocID); 

    
//ReadProcessMemory(hProc, (LPCVOID)address1, &address2, sizeof(long), &numBytesRead); 
    
    
ReadProcessMemory(hProc, (LPCVOID)address1, &address2sizeof(long), &numBytesRead); 

    
CString strAdress2
    
strAdress2.Format(_T("%x"),address2); 
    
AfxMessageBox(strAdress2);  
    
    
address2 address2+offset 


    
ReadProcessMemory(hProc, (LPCVOID)address2, &valuesizeof(int), &numBytesRead); 
    
strAdress2.Format(_T("%x"),address2); 
    
AfxMessageBox(strAdress2); 

    
m_Value.Format(_T("%i"),value); 
     
    
UpdateData(false); 
     
    
CloseHandle(hProc); 

Ich habs einfach mal so gemacht, bin mir nicht sicher obs korrekt ist. Die erste Meldung teilt mir die Adresse cccccccc mit, die zweite ccccccfc. Ich hoffe dir sagt das mehr als mir

Danke für die Mühe
anonymuus is offline  
Reply




All times are GMT +1. The time now is 03:59.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.