[Hacking] Cheat-Engine (Speicherabbild-Editoren)

Dieses Thema im Forum "Security Tutorials" wurde erstellt von Inquisito, 21. Oktober 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 21. Oktober 2008
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    Cheat-Engine (Speicherabbild-Editoren)

    Und wieder einmal einen guten morgen guys =)

    Will mich hier mal näher mit den Speicherabbild-Editoren beschäftigen (später nurnoch als SE bezeichnet.) Der ein oder andere hat SE´s schon als Kind in den klebstoffverschmierten Händen gehabt : XSHARK für den GameBoy z.b.
    Hier wollen wir uns aber um die SE´s für den PC (unter Linux/MAC gibts die bestimmt auch, kenne aber grad keinen ^^) beschäftigen.

    inqfaqce6.jpg
    {img-src: //img120.imageshack.us/img120/4320/inqfaqce6.jpg}
    Was ist eine SE ?
    Spoiler
    Eine Software. Die dafür gedacht ist den Speicherbereich eines Programmes während seiner Laufzeit zu verändern.
    Des heißt genau?
    Spoiler
    Jedes Programm allokiert Speicher um darin Daten abzulegen. Diese Daten können ganz unterschiedlicher Natur sein. Von Bytes bis hin zu Strings und Floats ist alles drin.

    Wenn wir einen simplen Taschenrechner der nur 2 werte aufnehmen kann (also z.b. "1" + "2"), via SE verändern wollten. Könnten wir anhand des wissen dessen was wir in den Rechner eingegeben haben diese werte im allokierten Speicher des Programmes suchen (wir werden den vorgang ein paar mal wiederholen müssen, aber dürfte schnell gehen.).

    Nachdem wir die passende Speicheradresse von WERT1 und/oder WERT2 gefunden haben. Könnten wir unsere eigenen eingaben damit vor der berechnung verändern. (Oder auch eingaben die das Programm selber durchführt.)

    (Ihr wolltet´s genau...)
    Wo liegt da die Praktische anwendung?
    Spoiler
    Bei jedem Spiel (ausnahmen sind später unten näher beschrieben.) sowie jedem FlashGame.
    Was geht , mann... und was geht nich .... .. .. mann?
    Spoiler
    Geht immer :
    Alle Solo-Spieler-Games (genre is vollkommen wurscht!) die ihr auf euren Rechner ausführt. Die sind potentiel -> gecheatet. Ausserdem kann euch niemand zur rechenschaft ziehen... ^^ is ja euer game.

    Geht bedingt :
    Flash-Games ! (in zukunft dann wohl auch Silverlight-Games *kotz*). Die gehen nicht immer , das hat einige gründe die ich hier ein wenig näher eingehen will.

    - Ein Flashgame was ihr einfach spielt und dessen Highscore nirgendwo hin übertragen wird geht immer!.

    - Ein Flashgame das einen Highscore übermittelt der dann auf irgendeiner Seite angezeigt wird ist schon ein wenig was anderes. Das ist theoretisch genauso machbar wie in einem Solo-Game aber ich mache mal ein beispiel (stellt euch irgendein game vor, mir egal was für eins)

    - Ihr startet FLASHGAME auf der seite (frei erfunden
    www.highscoreflashs.de. Was wird nun gemacht?
    Nachdem ihr das Game gestartet habt wird erstmal ein PHP script ermitteln WANN habt ihr
    das FLASHGAME gestartet habt. Das wandert direkt in die
    SQL-Datenbank (und da kommen wir ja ned so einfach ran!).
    Jetzt erst startet euer FLASHGAME. Ab jetzt habt ihr via SE
    die möglichkeit dieses FLASHGAME zu verändern bis ihr
    blöde werdet.
    Aber wenn ihr innerhalb von sagen wir 10 sekunden , eine trilliarden punkte habt ....
    oder wenn ihr mehr punkte habt als ihr eigentlich bekommen könntet ?
    Dem Flashgame oder der SQL tut das nich weh ^^ aber euch, weil ihr ganz schnell gelöscht
    werdet.

    Hier ist also äusserte vorsicht geboten !! (ich erkläre später wie man das am besten löst.)



    - An MMO´rs braucht ihr euch garnicht erst versuchen. Spiele wie WoW , Fiesta.. oder sonstige Spiele die über einen Client betrieben werden sind für die SE´s tabu ! (VERSUCHT ES NICHT!!!)

    Ein Online-Game auf dem man sich einloggt hat einen Server... alle relevanten daten wie Geld/Gold/HP/MP/Talente/ähh.... meinetwegen noch wie oft ihr ingame kaggen geht .... liegen logischerweise in einer Datenbank (typ -> variabel , aber definitiv kein SQL ^^) beim Betreiber des MMO´s.

    Natürlich könnt ihr hergehen und euren Client cheaten. Z.b. könntet ihr euch selber umbennen : aber das seht NUR IHR ! Ihr könntet euch auch trilliarden Gold cheaten, aber ihr habt sie nicht ^^

    Jedesmal wenn ihr Geld/Gold ausgebt sendet euer Client zum Server ... "ey man... der cheater kauft was, rechne mal" .. und es wird euch abgezogen (wurst ob euer Client 4 trilliarden anzeigt...).
    Also: Sinnlos.


    inqworkshopry2.jpg
    {img-src: //img407.imageshack.us/img407/3307/inqworkshopry2.jpg}

    Jetzt langsam zur Praxis Ihr braucht natürlich einen SE , das muss nicht CheatEngine sein aber ich beschreibe die Funktionen von dieser Software hier näher. Alternativ würde z.b. auch TSearch gehen, ganz nach eurem geschmack.

    Vorbereitungen
    Spoiler
    Ihr sucht euch einen SE wie z.b.
    {bild-down: http://img220.imageshack.us/img220/677/processlistus0.jpg}


    Ihr wählt in CheatEngine den Computer oben Links aus und durchsucht die Prozessliste nach dem Namen eures Games. Bestätigen und schon gehts weiter (Wenn es ein FlashGame im Browser ist , komme ich später dazu. Wird extra behandelt !)

    Das finden und verändern von Werten:
    Spoiler
    Nichts leichter als das. (Hier am Beispiel Bejewled 2 Punktzahl)

    {bild-down: http://img45.imageshack.us/img45/3662/bejewledhi6.jpg}


    Da ihr wisst wieviel Punkte ihr im Spiel besitzt ist das relativ easy.
    Wie wir sehen habe ich hier 250 Punkte.

    Gebe ich in das Feld "Value" den wert 250 ein und betätige den "First-Scan" (das kann ein wenig dauern und euer spiel friert möglicherweise solange ein: das ist aber normal.)
    Dann findet ihr auf der linken seite eine (wahrscheinlich ziemliche große) ansammlung an werten. Die alle 250 zeigen (noch die ändern sich zwischendurch auch mal , weil halt nicht alle euren Punktewert repränstieren ^^).

    searchpl4.jpg
    {img-src: //img87.imageshack.us/img87/5638/searchpl4.jpg}


    Es ist erforderlich das wenn ihr "FirstScan" betätigt , solange dieser Scan läuft sollte sich nach möglichkeit euer gesuchte Wert nicht ändern (wenn der Wert wie z.b. in eine Wirtschaftssimulation in Form von Geld alle paar sek raufgeht dann macht pause.)

    Jetzt müsst ihr dafür sorgen das euer Wert einen von euch ersichtlichen Wert steigt (oder generellt steigt/sinkt sich verändert, hauptsache ihr wisst den neuen Wert.). (Danach ggf wieder Pause , hauptsache der Wert bleibt ne weile konstant.)

    Dann tragt ihr unter "Value" erneut den wert ein , DEN NEUEN WERT !!! und klickt auf "NextScan" !

    {bild-down: http://img220.imageshack.us/img220/2483/newvalueuz4.jpg}


    Diesen Vorgang wiederholt ihr solange bist nurnoch EIN (oder ein paar mehr, aber keine 50) in der Liste links stehen ! Je weniger links vorhanden sind desto besser

    In meinem Fall bleiben wie oben ersichtlich nur 2 Werte übrig...
    Ich wähle nun einen dieser Werte aus und doppelklicke ihn. (oder führe das spiel solange fort bis nur noch ein einzigert Wert übrig bleibt).

    Das veranlasst Cheat-Engine dazu den Wert in die untere Liste zu setzen.
    Wenn ich nun dort in der Spalte "Value" doppelklicke kann ich den Wert nach belieben verändern.

    {bild-down: http://img220.imageshack.us/img220/4966/changevaluepr5.jpg}


    Es kann durchaus sein das es grundsätzlich mehr als 1 wert ist, da mglw der Punktestand mehrmals zur gleichen zeit in verschiedenen Teilen des Programmes verfügbar sein muss.
    Das merkt ihr spätestens nachdem ihr 10x neu gescannt habt und sich alle werte immer gleich verhalten.

    Wie z.b bei mir :

    {bild-down: http://img522.imageshack.us/img522/9407/changedvalueya8.jpg}


    _____________________

    Ihr habt euren Wert gefunden und geändert ? Sauber.

    Ihr könnt euren neuen Wert auch mit dem Hacken vor dem Eintrag "einfrieren". Dann müsst ihr des nur einmal machen

    Unbekannte Werte:
    Spoiler
    Es kann vorkommen das der Wert den ihr ändern wollt, ein Unbekannter Wert ist.
    Als beispiel könnte man einen HP-Balken nehmen der wie z.b. hier :

    {bild-down: http://img222.imageshack.us/img222/7476/unknowvalue1yw9.png}

    (Aus Battle for Wesnoth, hatte grade kein anderes Beispiel...)

    Wir sehen den HP-Balken wissen aber nicht welcher Numerische wert hinter diesem steht, es könnte 100 sein aber auch 100 oder 5. Damit wir nun unsere Suche starten können wählen wir als Scan-Type, anstatt 4-Byte Werte : Unknow Initial Value (Unbekannter Startwert).
    Und betätigen "First-Scan".
    Es kann durchaus sein das die Liste mit den gefundenen Werten leer bleibt da zu viele Werte gefunden wurden, keine Sorge, das ändern wir jetzt.

    Da wir wissen das sich der HP-Wert beim schaden nehmen senkt (oder zumindest verändert.) lassen wir unsere Einheit schaden nehmen (nicht sterben lassen..).
    Somit haben wir den HP wert gesenkt, das heißt unser nächster Scan-Type ist "Decreased Value"!

    Damit wird der SE veranlasst die Bereits gefundenen Werte erneut zu durchsuchen und jene herauszuwerfen die sich gesenkt haben (unabhängig davon um wieviel).

    Diesen vorgang wiederholt man solange bis man den Wert hat, und testet dann ob dieser stimmt in dem man ihn ein wenig erhöht und das ergebniss prüft.

    Ihr könnt eure Einheit auch "heilen" und dann anstatt "Decreased Value", "Increased Value" als Scan-Type wählen, dann vergleicht der SE die bereits gefundenen Werte mit den neuen und schmeißt nur die raus die im vergleich zum vorherhigen Stand gestiegen sind.


    ______________________________________________________________

    Sonderbehandlung : FlashGames

    Bei FlashGames ist das finden von speziellen Werten generell ein wenig schwieriger weil ihr im regelfall nicht das flash-game selber als Anwendung "mounten" könnt. Ihr müsst den Browser "mounten" in dem das Flashgame läuft. (hier empfielt sich natürlich andere FENSTER (Tabs sind ned ganz so wichtig) zu schließen.)

    Somit ist klar das die ganzen Speicherwerte und der ganze allokierte Speicher vom Browser eure Suche nach dem richtigen wert stört. Aber man kann da leider nichts machen.

    Generell:
    Spoiler
    Bei allen Flash games muss der gesuchte wert mal 8 genommen werden.
    100 dollares = 800 suchen !!!! (Egal welcher wert!!!!)

    Solo-Play-FlashGames:
    Spoiler
    Bei FlashGames stellen sich einige Sonderheiten dar die ich auch noch nicht alle durchschaut habe. Aber die ActionScript programmierer geben sich entweder sehr mühe die Variablen zu verstecken oder Adobe selbst macht sich da ans werk.

    What ever, GENERELL (oben) sollte gelesen werden, sonst geht garnix.

    Die Speicheradressen von Flashgames wandern ständig, das heißt wenn ihr jetzt in diesem moment was hackt, dann müsst ihr es nochmal machen wenn die webseite geschlossen wurde. (Das hängt damit zusammen das das teil im Browser läuft.)

    Prinzipiel ist es genauso wie in einem normalen Solo-Spiel. Mit der Ausnahme die in GENERELL beschrieben wurde.

    Highscore-FlashGames:
    Spoiler
    Ich definiere ein "Highscore-Flashgame" folgendermaßen :

    Ich zoggt, ihr gewinnt oder auch nicht , euer punktestand wird gespeichert (für jeden oder für member ersichtlich. Mag jetzt ned weiter über SQL reden ^^)

    Ihr solltet das Spiel durchaus ein paar mal gespielt haben, ohne cheaten und ohne das ihr irgendwas verändert. Damit ihr einschätzen könnt wie lange man für einen bestimmte Score brauch.
    (Einige Webseiten bringen dann gleich die Highscorelist mit Zeit dazu , das macht das natürlich einfacher!)

    Da ihr aber in keinem fall die Zeit manipulieren könnt (beides wird via PHP/ASP generiert...) müsst ihr notgedrungen solange warten bis ihr sagen wir 20 minuten (wenn die nr1 in der Highscorelist 20 mins für 100 punkte gebraucht hat...) dann langsam sterben dürft ^^

    Wenn ihr innerhalb von 1 minuten das zehnfache an punkten von jemand habt der 20 minuten gespielt hat seit ihr nicht lange in der liste... geschweige den auf der webseite ^^

    Also es gibt zwei logisch einfache Lösungen für das Problem :
    1.) Warten , ned ellegant, aber fair. (wenn man eh schon unverwundbar ist^^)
    2.) Modifikation von POST/GET Daten : board.raidrush.ws[/SPOILER] [B]Onl...fektiv ist. (Bitte BW an NOS, nicht an mich.)
     
  2. 23. Oktober 2008
    AW: Cheat-Engine (und dergleichen...)

    FlashGames kann man auch leicht decompilen (z.B. Sothink SWF Decompiler Sothink SWF Decompiler, Flash Decompiler, Flash to HTML5 Converter), etwas ändern (z.b. unendlich Munition) und wieder compilen.
     
  3. 23. Oktober 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Cheat-Engine (und dergleichen...)

    Vorallem auch bei Spiele mit Level Codes ist das sehr nützlich :]

    Beispiel: Silversphere

    http://www.playit-online.de/games/denkspiele/silversphere/silversphere.swf

    Spoiler
    Bild

    Code:
     _root.levelnames = new Array("origin", "metallic", "linear", "fortress", "active", "islander", "gauntlet", "lateral", "obstacle", "guidance", "pathway", "sandbar", "patrol", "capture", "confusion", "consequence", "parallel", "temple", "courtyard", "tunnel", "traverse", "stampede", "pressure", "accuracy", "labyrinth");
    
    =)
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.