Jump to content
Welcome, Guest
Existing user? Sign In

Sign In



Sign Up
The MatriX
  • Welcome To Ghbsys
  • CS GO Streaming Version is released. Have fun streaming while cheating!
  • Have a Payment Issue? Send us a Support ticket.
  • Make a thread if you need support or join our discord for live support.
  • Have Suggestions? Make a thread and you'll earn Ghbsys Points for implemented suggestions.
  • Join our discord to stay well connected! Don't forget to integrate your discord to the site
  • Welcome to [GHB] - GAmEhAcKbAsTaRdS Forum

    Welcome to [GHB] - GAmEhAcKbAsTaRdS Forum, like most online communities you must register to view or post in our community, but don't worry this is a simple free process that requires minimal information for you to signup. Be apart of [GHB] - GAmEhAcKbAsTaRdS Forum by signing in or creating an account.
    • Start new topics and reply to others
    • Subscribe to topics and forums to get email updates
    • Get your own profile page and make new friends
    • Send personal messages to other members.

    [BRN] Hack Tut - #2 Programmieren (Von Außen)


    SWW13
     Share

    Recommended Posts

    [bRN] Hack Tut

    #2 Programmieren (Von Außen)

     

    Info

    Dieses Tutorial ist Teil einer Sammlung, für weitere Information kuckt bitte in die Übersicht.

    [bRN] Hack Tut - Übersicht

     

     

    Vorraussetzungen

    Ihr solltet mindestens Grundkenntnisse in der C++-Programmierung haben.

    Des Weiteren braucht ihr eine Entwicklungsumgebung(IDE) für das erstellen des Hacks, ich empfehle Visual Studio von Microsoft, es gibt aber genug andere.

    Viel Ausdauer, Spaß & Freunde!

     

    Links

    Visual Studio 2008 Express (Ihr braucht die C++ Version)

    Darkest Island (Das Spiel)

     

     

    Programmieren/Coden (C++ Von Außen)

    Das Prinzip:

    Man sucht das Spiel, also die „Data.exe“, und schreibt über eine Funktion z.B. 200 Leben an die zuvor gefundene Adresse. Bei Pointer wird von ausgelesen was an der Adresse des Pointer steht und schon haben wir die aktuelle Adresse.

     

    Das ganze etwas genauer, wir brauchen ein Handle zum Spiel, also eine Art Zugriffspfad. Um an diesen Handle zukommen müssen wir erst einmal das Spiel finden, das machen wir am besten über das Fenster, wir suchen also nach einem Fenster mit dem Namen „Fpaysafecard Game“ wenn wir es gefunden haben suchen wir nach dem Programm zu dem es gehört, wenn wir vom Programm die ID, genauer gesagt die ProzessID haben können wir uns ein Handle besorgen. Das ganze als Code:

     

    //Unser Handle zum Spiel
    HANDLE DarkestIsland = NULL;
    
    cout << "Warte auf Darkest Island..." << endl;
    
    //Suche solange bis das Spiel gestartet wurde
    while(DarkestIsland == NULL)
    {
    //Suche das Fenster vom Spiel über den Titel
    HWND Fenster = FindWindow(NULL, L"Fpaysafecard Game");
    
    //Fenster gefunden?
    if(Fenster)
    {
    	//Erhalte Programm ID über das Fenster
    	DWORD ProgrammID;
    	GetWindowThreadProcessId(Fenster, &ProgrammID);
    
    	//Erhalte Handle zum Spiel
    	DarkestIsland = OpenProcess(PROCESS_ALL_ACCESS, false, ProgrammID);
    
    	//Alles in Ordnung?
    	if(DarkestIsland != NULL)
    		break; //Dann nichts wie raus aus der Schleife
    }
    
    Sleep(100); //Warte 100ms
    }
    
    cout << "Darkest Island gefunden!" << endl;

     

    Zu dem lesen und schreiben in das Spiel. Wir müssen für unser Leben Bsp. erst einmal den 1. Pointer auslesen, dass machen wir mit ReadProcessMemory, es braucht als Parameter, ein Handle, die Adresse, eine Referenz auf eine Variable in die der Wert geschrieben wird, die Größe der Variable und eine Referenz zu einer Variable in der steht wie viel eingelesen wurde, was uns nicht interessiert. Also:

     

    long SpielerPointer = 0;
    ReadProcessMemory(DarkestIsland, (void*)0x0102714, &SpielerPointer, sizeof(long), NULL);

     

    Jetzt steht wissen wir wohin der erste Pointer zeigt, wir können mit „if(SpielerPointer)“ prüfen ob er gültig ist. Ihr erinnert euch, das Offset für diesen Pointer, was wir mühsam gesucht haben, war 4. Jetzt können wir auch den zweiten Pointer auslesen, das Offset nicht vergessen!

     

    long LebensPointer = 0;
    ReadProcessMemory(DarkestIsland, (void*)(SpielerPointer + 4), &LebensPointer, sizeof(long), NULL);

     

    Mit “if” wieder auf Gültigkeit prüfen und wir können auch schon das Leben “Hacken”, die Funktion lautet „WriteProcessMemory“ sie ist (fast) identisch, mit der Ausnahme, dass in der Variable von der wir eine Referenz mit geben, der neue Wert stehen muss. Also:

     

    long Leben = 212;
    WriteProcessMemory(DarkestIsland, (void*)(SpielerPointer + 0x30), &Leben, sizeof(long), NULL);

     

    Auch hier das Offset nicht vergessen!

     

     

    So jetzt alles zusammen mit Header, etc.:

    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    
    int main()
    {
    //Unser Handle zum Spiel
    HANDLE DarkestIsland = NULL;
    
    cout << "Warte auf Darkest Island..." << endl;
    
    //Suche solange bis das Spiel gestartet wurde
    while(DarkestIsland == NULL)
    {
    	//Suche das Fenster vom Spiel über den Titel
    	HWND Fenster = FindWindow(NULL, L"Fpaysafecard Game");
    
    	//Fenster gefunden?
    	if(Fenster)
    	{
    		//Erhalte Programm ID über das Fenster
    		DWORD ProgrammID;
    		GetWindowThreadProcessId(Fenster, &ProgrammID);
    
    		//Erhalte Handle zum Spiel
    		DarkestIsland = OpenProcess(PROCESS_ALL_ACCESS, false, ProgrammID);
    
    		//Alles in Ordnung?
    		if(DarkestIsland != NULL)
    			break; //Dann nichts wie raus aus der Schleife
    	}
    
    	Sleep(100); //Warte 100ms
    }
    
    cout << "Darkest Island gefunden!" << endl;
    
    //Solange das Spiel läuft
    while( IsProcHandleValid(DarkestIsland) )
    {
    	//Lese ersten Pointer aus
    	long SpielerPointer = 0;
    	ReadProcessMemory(DarkestIsland, (void*)0x0102714, &SpielerPointer, sizeof(long), NULL);
    
    	if(SpielerPointer) //Prüfe auf gültikeit
    	{
    		//Lese zweiten Pointer aus, Offset beachten!
    		long LebensPointer = 0;
    		ReadProcessMemory(DarkestIsland, (void*)(SpielPointer + 4), &SpielerPointer, sizeof(long), NULL);
    
    		if(SpielerPointer) //Prüfe auf gültikeit
    		{
    			//Ändere das Leben, Offset beachten!
    			long Leben = 212;
    			WriteProcessMemory(DarkestIsland, (void*)(SpielerPointer + 0x30), &Leben, sizeof(long), NULL);
    		}
    	}
    
    	Sleep(100); //Warte 100ms
    }
    
    //Schließe das Handle, nach dem das Spiel beendet ist, kann es nicht mehr verwendet werden
    CloseHandle(DarkestIsland);
    DarkestIsland = NULL;
    
    cout << "Darkest Island wurde beendet!" << endl;
    
    return 0;
    }

     

    Credits

    http://ghbsys.net/ghb/index.php?showtopic=424 (Zwar nicht sonderlich beschrieben, aber ein toller Quellcode zum ankucken)

     

     

    PostScript

    Wenn euch das Tut gefällt und ihr euch bedanken wollt drückt doch bitte den „Thanks“-Button und schreibt nicht „thx“, „danke“, etc. Dann kann ich nählich auf Frage und Anregungen eingehen und muss mich nicht durch unnütze Beiträge scrollen.

     

    Wer Kritik, Anregung oder Verbesserungsvorschläge hat, immer her damit.

    Im Anhang ist noch das Orginal als .doc.

     

     

    Copyright & Leeching

    © 2009 [bRN] SWW13

     

    Bitte kopiert mein(e) Tutorial(s) nicht, ihr dürft aber gerne verlinken!

    _BRN__Hack_Tut____2_Programmieren.doc

    Link to comment
    Share on other sites

    • 1 year later...
    Guest
    This topic is now closed to further replies.
     Share

    • Recently Browsing   0 members

      • No registered users viewing this page.
    ×
    ×
    • Create New...