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.

    SWW13

    Members
    • Posts

      61
    • Joined

    • Last visited

    Posts posted by SWW13

    1. Ich hab ein Problem mit dem Memory Hack System.

      1. Ich starte es.

      2. Ich attache es zu meinem Spiele-Prozess.

      3. Ich starte einen Data-Type-Search. (Long, Exact Value)

       

      Egal nach was für einer Value ich suche, wenn ich auf okay klicke kommt SOFORT eine MessageBox: "No results found"

      Aber das ist so schnell, dass er garnicht gesucht haben kann.

       

      Muss ich irgendwas umstellen?

      Mein Betriebssystem ist Windows 7 x32bit und das MHS wird im Administrator-Modus ausgeführt.

       

      Hey,

      hast du schon mal versucht bei einem anderen Spiel/Program zu suchen? Am besten etwas ganz einfaches, z.B. in Explorer.exe (Nur um zusehen ob er dort auch nichts findet).

      Wenn er dort etwas was findet scheint es am Spiel zuliegen und es hat vermutlich irgend ein AntiCheat Schutz. Versuchs vllt. mal mit CheatEngine.

      Wenn du dort auch nichts findet, probier mal an den Sucheinstellungen rum oder lad dir das MHS neu runter und versuch es nochmal.

       

      Und wie ich im nach hinein festgestellt hab funktioniert meine Pointer Suchmethode (fast) nie... Aber das ist z.Z. ja nicht dein Problem, wenn du dann auf Pointer suche bist, wird dir Google helfen O.o

       

      MfG SWW13

    2. Hi,

      after a long time I will release a new hack, this time for CoD4. It's just a simple hack with D3D-Menu.

       

      Use:

      Start the Injector (The .Exe)

      ->Don't press Ok yet

      Start CoD4

      ->Press the Ok-Button of the Injector when Splashscreen appeas

       

      ---

       

      Sers,

      nach dem ich lange nichts von mir hören lassen hab, bin ich jetzt mit einem neuen Hack zurück. Ein kleiner einfacher CoD4 Hack mit D3D-Menü.

       

      Benutzung:

      Startet den Injector (Die .Exe Datei)

      ->(Noch) nicht Ok klicken

      Startet CoD4

      ->Wenn der Splash-Screen von CoD4 erscheint den Ok-Knopf vom Injector drücken

       

      ---

       

      Screenshot:

      screenup_2072010184734270.png

       

      ---

       

      Download:

      [bRN] CoD4 Hook V1.0

       

      VirusTotal

    3. [Deutsch weiter unten]

       

      Hi Guys,

      I've compiled the "Cheat Engine 6.0 Alpha" Version from the SVN-Repository. (Compiled on 28/06/2010)

      I've compiled with 64bit compiler on 64bit system, so I think it will not run under 32bit systems.

      With the 64bit Version of Cheat Engine you can use the debugger on 64bit processes!

      The Alpha Version has maybe some unfixed errors, use it at your own risk!

      Full credits goes the coder of Cheat Engine "Dark Byte"!

       

      ---

       

      Hi,

      Ich hab für euch die Alpha Version von der neuen Cheat Engine 6.0 kompiliert. (Am 28.06.2010)

      Hab das Projekt mit nem 64bit Kompiler auf nem 64bit System kompiliert, müsste also nur auf nem 64bit System laufen.

      Vorteil der 64bit Version ist, dass ihr endlich den Debugger auch bei 64bit Prozessen einsetzen könnt. (Hab bisher noch kein alternatives CheatProg gefunden)

      Das ganze ist noch eine Alpha Version, also enthält sie wahrscheinlich einige Fehler, Benutzung auf eigenes Risiko!

      Credits gehen an den Coder der CheatEngine "Dark Byte"!

       

      [Testet bitte mal obs unter nem 32bit System läuft.]

       

      ---

       

      Download:

      Cheat Engine 6.0 (Alpha) 64bit: http://www.######/download-264274...x86_64.exe.html

       

      ---

       

      Screenshot:

      screenup_1372010235839215.png

    4. [bRN] Hack Tut

      #1 Adressen & Pointer finden (CheatEngine)

       

       

      Info

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

      [bRN] Hack Tut - Übersicht

       

       

      Vorraussetzungen

      Cheat Engine.

      Viel Ausdauer, Spaß & Freunde!

       

      Links

      Cheat Engine

      Darkest Island (Das Spiel)

       

      Adressen & Pointer finden

      [Adresse]

      Pausiert das Spiel (Mit Esc) und merkt euch euer aktuelles Leben.

      Startet eure CE und wählt das Spiel (Data.exe) aus.

       

      post-1277-1252335707_thumb.png

       

      Stellt den Suchmodus auf „Exact Value“ und gebt euer Leben ein.

      Klickt auf „New Scan“ und dann „First Scan“, ich hab etwa 3,6k Ergebnisse, lasst euch von einem Zombie angreifen oder regeneriert irgendwie Leben und Pausiert das Spiel wieder und macht eine anschließende Suche (Mit „Next Scan“).

       

      post-1277-1252335714_thumb.png

       

      Ich hab gleich beim zweiten Mal nur ein Ergebnis, wenn ihr immer noch mehrere habt, wieder holt das solange bis ihr max. 5 Ergebnisse habt.

      Macht einen Doppelklick auf die erste Adresse, dann ist sie unten in der List. Macht einen Doppelklick auf den Wert der Variable in der Liste und gebt einen neuen. Wenn ihr die Variable frieren wollt aktiviert von das Kästchen.

      Wenn sich euer Leben nicht ändert oder es nicht auf den angegeben Wert gefroren wird, versucht den die nächste Adresse, wenn es in der Ergebnis-Liste keine mehr gibt, habt ihr vllt. einen Fehler bei der Suche gemacht.

       

      Wenn ihr das Spiel jetzt neu startet würdet, würden euere Adressen nicht mehr stimmen (Ihr könnt es ja mal ausprobieren). Was wir jetzt brauchen Sind die Pointer die immer auf die aktuelle Adresse zeigen…

       

      [Pointer]

      Macht einen Rechtsklick auf die Variable, „Find out what accesses this address” und bestätigt die Meldung mit „Yes”.

      Jetzt öffnet sich der Disassembler und ein Helper. Geht im Helper auf „Auto-Hack“, dort müsste jetzt euere Adresse stehen. Klick Sie an und wartet bis unten ein Eintrag erscheint. Wenn ihr einen habt, macht einen Rechtsklick und wählt „Go To->In Current Tab“.

      An der grau markierten Stelle wird auf die Variable über den Pointer zugegriffen. Normalerweiße wird entweder etwas hinein geschrieben oder es wird ausgelesen.

      mov *Register*, [Pointer+Offset] Hier wird die Variable in ausgelesen

      mov [Pointer+Offset], *Register* Hier wird etwas in die Variable geschrieben.

       

      post-1277-1252335719_thumb.png

       

      […]

      MOV EAX, 1

      PUSH EAX

      MOV EAX, DWORD PTR [102714]

      POP EBX

      MOV EAX, EBX

      MOV ECX, 102370

      MOV DWORD PTR [ECX], EAX

      MOV EAX, DWORD PTR [102714]

      MOV EBX, DWORD PTR [102370]

      MOV EAX, DWORD PTR [EAX+EBX*4]

      MOV ECX, DWORD PTR [EAX+30]

      […] Alles was danach kommt interessiert uns nicht mehr!

       

      In der Rot markierten Zeile (in CE die oberste Zeile, scrollt ein bisschen hoch) wird das Leben über einen Pointer + 30 ausgelesen. Der Pointer steht in EAX eine Zeile weiter oben sehen wir das es wieder ein Pointer ist + ein andere Pointer*4.

      Diese stehen in den Zeilen darüber der zweite Pointer ist also 102714 + Pointer 102370 * 4.

      Noch ein Stück weiter ob sehen wir das unsere dritter Pointer (Pointer 102370 * 4) in ECX geschrieben wird „MOV ECX, 102370“ und dann der Wert von EAX hinein geschrieben wird „MOV DWORD PTR [ECX], EAX“. Also steht usner Offset für den zweiten Pointer („EBX*4”) in Wirklichkeit in in EAX bzw. wird dort hinein geschrieben.

      Darüber sehen wir „MOV EAX, EBX“ das heißt der Wert in EAX, der unser Offset enthalt kommt aus EBX. Jetzt suchen wir also nach dem was in EBX steht und wir finden direkt darüber „POP EBX“ POP bedeutet, dass es der oberste Wert vom Stack geholt wird. Auf den Stack kann mit PUSH etwas „drauf gelegt“ werden. Unser PUSH ist wieder schnell gefunden „PUSH EAX“, also kucken wir wieder nach EAX und da haben wir auch schon einen statischen Wert, also ein Wert der immer gleich bleibt, gefunden „MOV EAX, 1“ hier wird nun 1 in das Register geschrieben, wandert dann über den Pointer in das Offset und wird mal 4 genommen, unser endgültiges Offset ist also 4!

       

      Wir fassen zusammen:

       

      Die Adresse für das Leben steht in einem Pointer in „EAX“ + Offset 30.

      Der Pointer in EAX kommt von EAX + 4 (<-Das ist das endgültige Offset das wir gerade gefunden haben!). Der zweite Pointer in EAX lautet 102714.

       

       

      Jetzt müssen wir uns die Adresse(n) und das Offset(s) auf schreiben und können die Fenster wieder schließen. Klickt auf Adresse hinzufügen („Add adress nanually“), benennt das ganze und aktiviert Pointer.

      Klickt solange auf „Add pointer“ bis ihr so viele Pointer habt, wie ihr gefunden habt. Wir hatten zwei, einen mit dem Offset (+30) und einen mit der Adresse 102714 + Offest 4 (unser endgültiges Offset).

      Wir fangen unten mit dem zuletzt gefunden Pointer an, also Adresse & Offset 4. Wir können die Zahlen ohne 0x eingeben, weil CheatEngine nur mit Hexadezimalen Zahlen arbeitet(bei Adresse & Offset).

      Jetzt brauchen wir nur noch das Offset vom ersten Pointer (+30). Und fertig!

       

      Speicher euere Komplette Liste mit allen Adressen die ihr zusammen getragen habt oder Schreibt die Adressen (und bei Pointer auch das Offset) auf.

       

      post-1277-1252335725_thumb.png

       

       

      Credits

      http://www.ghbsys.net/forum/gamehackin...owto-i-ger.html (Auch ein tolles Tut, mit dem hab ich gelernt wie man Pointer findet.)

      PicPick (Für die Tollen ScreenShots)

       

       

      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____1_Adressen__CE_.doc

      • Upvote 1
    5. [bRN] Hack Tut

      #1 Adressen & Pointer finden (MHS)

       

       

      Info

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

      [bRN] Hack Tut - Übersicht

       

       

      Vorraussetzungen

      MHS (Memory Hacking System).

      Viel Ausdauer, Spaß & Freunde!

       

      Links

      MHS

      Darkest Island (Das Spiel)

       

       

      Adressen & Pointer finden

      [Adresse]

      Pausiert das Spiel (Mit Esc) und merkt euch euer aktuelles Leben.

      Startet euren MHS und wählt das Spiel (Data.exe) aus.

       

      post-1277-1252322422_thumb.png

       

      Stellt den Suchmodus auf „Exact Value“ und gebt euer Leben ein.

      Startet die Suche, ich hab etwa 3,6k Ergebnisse, lasst euch von einem Zombie angreifen oder regeneriert irgendwie Leben und Pausiert das Spiel wieder und macht eine anschließende Suche (Keine Neue!).

       

      post-1277-1252322432_thumb.png

       

      Ich hab gleich beim zweiten Mal nur ein Ergebnis, wenn ihr immer noch mehrere habt, wieder holt das solange bis ihr max. 5 Ergebnisse habt.

      Macht einen Doppelklick auf die erste Adresse, dann ist sie rechts in der List. Macht einen Doppelklick auf die Variable in der Liste und gebt unter „Value When Locked“ ein auf was ihr die Variable frieren wollt. Zum ändern gebt den neuen Wert bei „Cur Value“ ein. Klickt OK, wenn ihr sie frieren wollt wählt die Variable aus und klickt auf das geschlossene Schloß zum entfrieren das offene.

      Wenn sich euer Leben nicht ändert oder es nicht auf den angegeben Wert gefroren wird, versucht den die nächste Adresse, wenn es dort keine mehr gibt, habt ihr vllt. einen Fehler bei der Suche gemacht.

       

      Wenn ihr das Spiel jetzt neu startet würdet, würden euere Adressen nicht mehr stimmen (Ihr könnt es ja mal ausprobieren). Was wir jetzt brauchen Sind die Pointer die immer auf die aktuelle Adresse zeigen…

       

      [Pointer]

      Macht einen Rechtsklick auf die Variable, „Find What Access This Adress (Attaches rhe Debugger)“.

      Jetzt öffnet sich der Disassembler und ein Helper. Geht im Helper auf „Auto-Hack“, dort müsste jetzt euere Adresse stehen. Klick Sie an und wartet bis unten ein Eintrag erscheint. Wenn ihr einen habt, macht einen Rechtsklick und wählt „Go To->In Current Tab“.

      An der grau markierten Stelle wird auf die Variable über den Pointer zugegriffen. Normalerweiße wird entweder etwas hinein geschrieben oder es wird ausgelesen.

      mov *Register*, [Pointer+Offset] Hier wird die Variable in ausgelesen

      mov [Pointer+Offset], *Register* Hier wird etwas in die Variable geschrieben.

       

      post-1277-1252322441_thumb.png

       

      […]

      MOV EAX, 1

      PUSH EAX

      MOV EAX, DWORD PTR [102714]

      POP EBX

      MOV EAX, EBX

      MOV ECX, 102370

      MOV DWORD PTR [ECX], EAX

      MOV EAX, DWORD PTR [102714]

      MOV EBX, DWORD PTR [102370]

      MOV EAX, DWORD PTR [EAX+EBX*4]

      MOV ECX, DWORD PTR [EAX+30]

      […] Alles was danach kommt interessiert uns nicht mehr!

       

      In der Rot markierten Zeile (in MHS grau) wird das Leben über einen Pointer + 30 ausgelesen. Der Pointer steht in EAX eine Zeile weiter oben sehen wir das es wieder ein Pointer ist + ein andere Pointer*4.

      Diese stehen in den Zeilen darüber der zweite Pointer ist also 102714 + Pointer 102370 * 4.

      Noch ein Stück weiter ob sehen wir das unsere dritter Pointer (Pointer 102370 * 4) in ECX geschrieben wird „MOV ECX, 102370“ und dann der Wert von EAX hinein geschrieben wird „MOV DWORD PTR [ECX], EAX“. Also steht usner Offset für den zweiten Pointer („EBX*4”) in Wirklichkeit in in EAX bzw. wird dort hinein geschrieben.

      Darüber sehen wir „MOV EAX, EBX“ das heißt der Wert in EAX, der unser Offset enthalt kommt aus EBX. Jetzt suchen wir also nach dem was in EBX steht und wir finden direkt darüber „POP EBX“ POP bedeutet, dass es der oberste Wert vom Stack geholt wird. Auf den Stack kann mit PUSH etwas „drauf gelegt“ werden. Unser PUSH ist wieder schnell gefunden „PUSH EAX“, also kucken wir wieder nach EAX und da haben wir auch schon einen statischen Wert, also ein Wert der immer gleich bleibt, gefunden „MOV EAX, 1“ hier wird nun 1 in das Register geschrieben, wandert dann über den Pointer in das Offset und wird mal 4 genommen, unser endgültiges Offset ist also 4!

       

      Wir fassen zusammen:

       

      Die Adresse für das Leben steht in einem Pointer in „EAX“ + Offset 30.

      Der Pointer in EAX kommt von EAX + 4 (<-Das ist das endgültige Offset das wir gerade gefunden haben!). Der zweite Pointer in EAX lautet 102714.

       

       

      Jetzt müssen wir uns die Adresse(n) und das Offset(s) auf schreiben und können die Fenster wieder schließen. Klickt auf Adresse hinzufügen (Das weiße Blatt), gebt als Adresse 0 (Wir lesen sie ja aus den Pointer aus) ein und benennt das ganze.

      Bei MHS kann man die Pointer Geschichte direkt in eine Zeile geschrieben werden („Normal Adress“-> unter „Complex“ das Eingabefeld mit []). Ihr müsst „Use Complex Adress“ aktivieren.

       

      post-1277-1252322450_thumb.png

       

      Zu unserem Pointer, wir fangen von hinten an, also Pointer 2 (Wichtig ist 0x, weil es sich bei Adressen um Hexadezimale Zahlen handelt):

       

      [102714] Die Eckigen Klammer zeigen an, dass es sich um einen Pointer handelt und lesen aus auf welche Adresse erzeigt. Jetzt kommt unser Offset (+4) dazu:

       

      [ [102714] + 0x4 ] Da es sich bei dem ganzen auch um einen Pointer handelt kommen die Eckigen Klammern wieder drum. Für den ersten Pointer hatten wir auch ein Offset (+30):

       

      ( [ [102714] + 0x4 ] + 0x30 ) Mit den Rundenklammern zeigen wir an, dass unsere Eingabe vollständig ist. Tipp: Ihr könnt auch weitere Klammer (wie in Mathe) verwenden, wichtig ist nur, dass es ganz Außen welche gibt!

       

      Edit: Wie es scheint hat MHS einen kleinen Bug, ihr müsst oben ein Modul auswählen, auch wenn es keine Auswirkung hat!

       

      Speicher euere Komplette Liste mit allen Adressen die ihr zusammen getragen habt oder Schreibt die Adressen (und bei Pointer auch das Offset) auf.

       

       

      Credits

      http://www.ghbsys.net/forum/gamehackin...owto-i-ger.html (Auch ein tolles Tut, mit dem hab ich gelernt wie man Pointer findet.)

      PicPick (Für die Tollen ScreenShots)

       

       

      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____1_Adressen__MHS_.doc

    6. [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

    7. [bRN] Hack Tut

      Übersicht

       

       

      About

      Ich hab mich entschieden mal ein (hoffentlich) sehr ausführliches und verständliches Tutorial über den Einstieg ins Game-Hacking zu schreiben. Ich werde aus dem Tutorial eine Tutorial-Reihe/Sammlung machen! Die einzelnen Tutorials können getrennt gelesen werden, einige setzten aber das durcharbeiten anderer vorraus!

       

       

      Vorraussetzungen

      Die Tutrial-Reihe basiert auf dem Spiel „Darkest Island“, welches es kostenlos zum downloaden gibt. Wer das Tutorial kommplett mit machen will oder noch gar keine Erfahrung hat sollte sich auf jeden Fall das Spiel herunterladen.

      Viel Ausdauer, Spaß & Freunde!

       

      Links

      Darkest Island (Das Spiel)

       

       

      Tutorial Übersicht

      #1 Adressen & Pointer finden

      Hier wird das suchen nach Adressen und das ausfindig machen von Pointer besprochen. Es gibt zwei Version:

       

      #2 Programmieren (Von Außen)

      Wir schreiben einen einfachen Hack der über zwei Pointer das Leben hackt.

      (Vorraussetzung Tutorial 1)

      C#-Version
      (In Plannung)

       

      #3 Programmieren (Von Innen - DLL Injection) (In Plannung)

      #4 Programmieren - Hooken (In Plannung)

      #5 Programmieren - D3D Menü (In Plannung)

       

       

      Hintergrund-Informationen Übersicht

      Assambler (work through) (In Plannung)

      Pointer und Offsets (Warteliste: 1)

       

       

      Intro (Spiel)

      Ich hab mich dafür entschieden ein Spiel zu nehmen das jeder herunterladen kann und das nicht allzu populär ist. Außerdem ist es recht klein (ca. 300mb) und somit müsst ihr nicht all zu lange warten bis ihr los legen könnt.

      So, nach dem ihr das Spiel heruntergeladen und installiert habt, werdet ihr feststellen, dass es zwei Teile hat. Ich habe mich für den ersten entschieden, also starten wir das ganze mal. An Option wurde scheinbar gespart, also starten wir direkt ein neues Spiel.

      Als ersten werdet ihr links oben eine Lebensanzeige sehen und eine Munitionsanzeige (Mit f öffnet ihr übrigens die Türen). Ihr werden ein Messer finden und Zombies die auf euch zu gehen. Später werdet ihr noch eine Pistole und andere Waffen finden.

       

       

      Copyright & Leeching

      © 2009 [bRN] SWW13

       

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

      • Downvote 1
    8. What is this?

      It's a class or better a namespace with d3d9 function for a menue.

       

       

       

      How to include it:

      Put it in your Project Folder and include [bRN]DXClass.h in d3d9dev.cpp.

      Change the Include Path's in [bRN]DXClass.h.

       

       

       

      How to use it:

      Creat Menue:

      BRN::D3D9::Menue* myMenue = new Menue( Menue Position X, Menue Position Y, Can User Move it with Mouse?, Use Buildin Cursor Function?, 0(Use 0 for strd. Value), 0(Use 0 for strd. Value), Space beetwin Lines (Use 0 for strd. ->13) );

      [-> Make it Global (!)]

       

      Add Items:

      myMenue->addMenueItem("Name", Is title?);

       

      Add Blank Lines:

      myMenue->addBlankLine();

       

      Draw/Show the Menue:

      myMenue->drawMenue(Your D3D Device, Your CD3DFont, Draw transparent BG?(Not work/include, because it is private stuff));

       

      PanicFunc():

      It Deactivate all cheats in Menue

       

      moveCursorUp(); moveCursorDown():

      Use to manuell go Up/Down in Menue (Not needed if "Use Buildin Cursor Function?" is true)

       

      Activatecheat(); Deactivatecheat():

      Use to manuell (De-)Activate selected Item (Not needed if "Use Buildin Cursor Function?" is true)

       

      Get State of Menue Item:

      myMenue->getcheatState("Name"); ->returens true/false

      [->The Name must exact the same]

       

       

       

      Other Functions:

       

      Color::[...] for D3DCOLOR

      Color::Get[...](D3DCOLOR ...); returns the Red/Blue/Green/Alpha part of the D3DCOLOR

       

      BRN::D3D9::Draw::Box(Your D3D Device, Pos X, Pos Y, High, Wide, Line size, Color);

      BRN::D3D9::Draw::Rectangle(Your D3D Device, Pos X, Pos Y, High, Wide, Color);

      BRN::D3D9::Draw::Crosshair(Your D3D Device, Line Length, Line size, Color);

       

       

      //German/Deutsch

      So, die Credits auf Deutsch, sonst grieg ich das nich Übersetzt

      -Naja eigntl. nur an Neo I.I.I, er is der einzige der einem immer ne Antwort weiß und keine dummen Kommentare gibt.

       

      Und noch was: Fragt nich nach der transparenz Funktion. Ausser Leute die ich wirklich kenne bzw. schon mal mit ihnen geschrieben hab griegt die keiner(!)

       

      So ich hoffe mal man versteht mein Englisch und es funktionieren alle Überlandungen, die hab ich nämlich nicht getestet.

      Hmm... sind eigentl. Uploads nur für Leute die nen Replay schreiben? Naja egal.

      //End

       

      MfG Bôrnì/SWW13

      _BRN__Class.rar

    9. Also:

       

      memcpy((void*)spread_addie, &t , sizeof(t));

       

      spread_addie -> ist die Adresse an die dein Buffer kopiert wird. Hier kannst du einfach die Adresse rein schreiben(mit 0x).

      &t -> müsste ein Pointer zum Buffer sein. Hier kannst du die Value auch direkt rein schreiben.

      sizeof(t) -> Gibt die Größe des Buffers an, damit die Funktion weiß, wie viele Zahlen/Buchstaben/etc. sie in den Speicher schreiben muss. sizeof() gibt zurück wie groß der übergebene Wert ist.

       

      Beispiel:

      memcpy((void*)0x00123ABC, (void*)((int) 123), sizeof(int));

      So, in dem Beispiel ist das erste die Adresse, das müsste klar sein.

      Das zweite der Wert/Value, einfach ist es einen Pointer zu einer Variable zu nehmen. (Wie is bei dir im Code ist)

      Das letzte ist die größer der Value, die wir ja mit sizeof bestimmen. Wieso sizeof(int) und und nicht sizeof(123)? -> Weil deine Zahl ein Intiger ist, bzw. zu einem gemacht wurde durch das (int).

       

       

      Ich hoff mal du verstehst alles

       

       

      edit:

      @Neo + silex: Könnt ihr nicht antworten? Hab erst jetzt festgestellt, das ihr schon geholfen habt, egal ich habs nommal ausführlicher.

       

      edit2:

      Und wieso ist der eigentliche Thread als Anhang dabei, langsam versteh ich gar nix mehr.

    10. Geile Idee,

      ich geb dann die dummen Kommentare xD. Ne mal im ernst hört sich gut an, bin auf den ersten Teil gespannt.

       

      Edit: Ich hab mit Filmbearbeitung Erfahrung, wenn du meine Hilfe brauchst, schreib mich in ICQ oder so an, da bin ich meistens on.

    ×
    ×
    • Create New...