Pinball "hacking"

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Pinball "hacking"

      Hi ihr Core'ler,
      da mir gerade ein bisschen langweilig ist und ich keine Lust habe Hausaufgaben zu machen , habe ich gedacht schreib ich mal ein kleines Tutorial.
      Das hier ist mein erstes Autoit Tutorial , habe vor kurzem wieder angefangen damit etwas zu "coden".

      Was machen wir in diesem Tutorial?
      Das ist einfach , wir werden uns ein Programm schreiben , was in Pinball unsere Punkte auf X setzt.

      Los gehts:
      Ok , als erstes könnt ihr euch z.B. mit dem koda Form Designer einen GUI erstellen.
      Ihr könnt alternativ meinen nehmen.

      PHP-Quellcode

      1. #include <EditConstants.au3>
      2. #include <GUIConstantsEx.au3>
      3. #include <WindowsConstants.au3>
      4. #Region ### START Koda GUI section ### Form=
      5. $Form1 = GUICreate("Form1", 142, 82, 216, 140)
      6. $Input1 = GUICtrlCreateInput("", 8, 8, 121, 21)
      7. $SetPoints = GUICtrlCreateButton("Punkte!", 8, 40, 59, 25, 0)
      8. GUISetState(@SW_SHOW)
      9. #EndRegion ### END Koda GUI section ###
      10. While 1
      11. $nMsg = GUIGetMsg()
      12. Switch $nMsg
      13. Case $GUI_EVENT_CLOSE
      14. Exit
      15. EndSwitch
      16. WEnd
      Alles anzeigen


      Ok , so unser GUI(Graphical User Interface) ist nun fertig.
      Wir haben 1 Button und 1 InputBox.

      Coding:
      Ok , wir möchten nun , dass wenn wir auf unseren Button drücken in Pinball die eingetragene Zahl aus der InputBox gutgeschrieben bekommt.

      Dafür schreiben wir uns eine Funktion die wir dann auf den Button "$SetPoints" legen.
      Dazu geht in an das Ende eures Codes und schreibt.

      PHP-Quellcode

      1. Func _schreiben()
      2. EndFunc


      So , das was dazwischen kommt machen wir jetzt!
      Startet nun erst einmal Cheat Engine und Pinball.
      Wenn ihr kein Cheat Engine habt , downloadet euch dieses -> google.de

      Ok , geht in Cheat Engine (vergesst autoit erstmal)
      Ab jetzt werde ich es einfach mal mit Bildern beschreiben , dort werde ich Text hinzufügen :)


      So geht nun in Pinball und macht ein paar Punkte (meine Empfehlung Leertaste drücken und loslassen und einfach den Ball fallen lassen.)

      Gemacht ? Ok , geht nun in Cheat Engine und sucht nach eurer Punktzahl.
      Dann drückt ihr auf First Scan!


      So , euch sollten nun 2 Adressen rechts angezeigt werden , dort doppelklick drauf (auf beide) dann sind sie unten in dieser Leiste.



      So unten seht ihr unten 2 Adressen , diese schreibt ihr einfach erstmal in Autoit rein.
      Ihr könnt Cheat Engine nun wieder schließen.

      Autoit zeigt euch nun die beiden 00 lila an und den rest nicht , das liegt daran das Autoit diese Adressen nicht erkennt , macht die 2. 0 zu einem X.
      00D0AEBA = 0xD0AEBA (Beispiel)

      Coding weiterführen
      Als erstes ladet ihr euch File-Upload.net - NomadMemory.au3 herruner , diese au3 Datei wird zum Memory bearbeiten benötigt.
      Danach legt ihr die Datei in den Ordner , wo später euer "hack" reinsoll.

      In Autoit geht ihr dann nach ganz oben und schreibt

      PHP-Quellcode

      1. #include <NomadMemory.au3>


      Gemacht ?
      Dann geht wieder zu eurer Funktion _schreiben.
      Dort schreibt ihr folgenden Code hinein , ich erkläre jede Zeile danach noch einmal.

      PHP-Quellcode

      1. $ReadInput = GUICtrlRead($Input1)
      2. $Prozess = ProcessExists("Pinball.exe")
      3. If $Prozess=-1 Then MsgBox(16,"Error","Prozess wurde nicht gefunden!")
      4. $code = _MemoryOpen($Prozess)
      5. If @error Then MsgBox(16,"Error","Folgender Fehler ist aufgetreten: "&@error)
      6. $Write=_MemoryWrite(0xB93CD4, $code, $ReadInput)
      7. $Write=_MemoryWrite(0xD0AEBA, $code, $ReadInput)


      Ok , ich erkläre es euch nun :

      PHP-Quellcode

      1. $ReadInput = GUICtrlRead($Input1)

      Die Variable führt den Befehl nur einmal aus und speichert die Rückgabe des Befehls in deiner Variable.

      PHP-Quellcode

      1. $Prozess = ProcessExists("Pinball.exe")

      $Prozess (Variable) steht einfach nur für Proces.... (siehe oben)

      PHP-Quellcode

      1. If $Prozess=-1 Then MsgBox(16,"Error","Prozess wurde nicht gefunden!")

      Das macht folgendes , Wenn Pinball.exe nicht läuft , kommt eine MessageBox mit dem Error

      PHP-Quellcode

      1. $code = _MemoryOpen($Prozess)

      Ist wieder eine Variable für _MemoryOpen (MemoryOpen kommt von der herruntergeladen au3 Datei.) Er öffnet einfach die Memor yom Prozess aus der Variable $Prozess , die wir vorher deklariert haben.

      PHP-Quellcode

      1. If @error Then MsgBox(16,"Error","Folgender Fehler ist aufgetreten: "&@error)

      Error Meldung

      PHP-Quellcode

      1. $Write=_MemoryWrite(0xB93CD4, $code, $ReadInput)
      2. $Write=_MemoryWrite(0xD0AEBA, $code, $ReadInput)

      Ok , Mit _MemoryWrite wird 0xB93CD4 aus dem geöffneten Memory Prozess ($code) durch den Inhalt aus InputBox ersetzt.
      Das gleiche unten , nur mit einer andreren Memory.

      So , unsere Funktion ist fertig.
      Nun soll unser Button sie nur noch ausführen dafür machen wir folgendes:

      PHP-Quellcode

      1. Case $SetPoints
      2. _schreiben()


      So , wenn wir jetzt die Datei speichern und starten können wir in Pinball unsere Punkte beliebig oft verändern. !Achtung! die Punkte kommen erst , wenn ihr wieder mit dem Ball einen normalen Punkt macht, d.h. ihr gibt 200000 ein und wenn ihr dann 11 Punkte im Spiel macht kommen erst die 2000000.

      Sooooo , das war es dann auch schon.
      Hier nochmal der Komplette Soure Code

      PHP-Quellcode

      1. #include <NomadMemory.au3>
      2. #include <EditConstants.au3>
      3. #include <GUIConstantsEx.au3>
      4. #include <WindowsConstants.au3>
      5. #Region ### START Koda GUI section ### Form=
      6. $Form1 = GUICreate("Form1", 142, 82, 216, 140)
      7. $Input1 = GUICtrlCreateInput("", 8, 8, 121, 21)
      8. $SetPoints = GUICtrlCreateButton("Punkte!", 8, 40, 59, 25, 0)
      9. GUISetState(@SW_SHOW)
      10. #EndRegion ### END Koda GUI section ###
      11. While 1
      12. $nMsg = GUIGetMsg()
      13. Switch $nMsg
      14. Case $GUI_EVENT_CLOSE
      15. Exit
      16. Case $SetPoints
      17. _schreiben()
      18. EndSwitch
      19. WEnd
      20. Func _schreiben()
      21. $ReadInput = GUICtrlRead($Input1)
      22. $Prozess = ProcessExists("Pinball.exe")
      23. If $Prozess=-1 Then MsgBox(16,"Error","Prozess wurde nicht gefunden!")
      24. $code = _MemoryOpen($Prozess)
      25. If @error Then MsgBox(16,"Error","Folgender Fehler ist aufgetreten: "&@error)
      26. $Write=_MemoryWrite(0xB93CD4, $code, $ReadInput)
      27. $Write=_MemoryWrite(0xD0AEBA, $code, $ReadInput)
      28. EndFunc
      Alles anzeigen



      Ich hoffe es hat euch gefallen , und ihr hab etwas davon gelernt.
      Liebe grüße Fuyo
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="3"]

      Fuyo schrieb:

      $ReadInput ist eine einfache Variable , sie steht für GUICtrlRead($Input1) , d.h. einfach nur , wenn ich $ReadInput schreibe , macht er GUICtrlRead($Input1).

      Bitte verschone mich mit deiner Intelligenz.
      Ganz ehrlich, der führt den Befehl nur einmal aus und speichert die Rückgabe des Befehls in deiner Variable.
      Würde sagen das passt eher :)
      Also nimm den ersten Satz unter dem Qoute nich so genau, jedenfalls, der benutzt die Variable nur als Platzhalter für das was du in dem Inputfeld hast und das ist besser so, um sachen zu nutzen ohne dauernd den Befehl ausführen zu müssen, es könnte sich ja was im Input geändert haben, somit wäre dann der neue Wert übernommen. und das wäre in manchen fällen vll nich das gewünschte[/SIZE][/COLOR][/FONT]