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.

    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
    Func _schreiben()
    
    
    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
    #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
    $ReadInput = GUICtrlRead($Input1)
    $Prozess = ProcessExists("Pinball.exe")
    If $Prozess=-1 Then MsgBox(16,"Error","Prozess wurde nicht gefunden!")
    $code = _MemoryOpen($Prozess)
    If @error Then MsgBox(16,"Error","Folgender Fehler ist aufgetreten: "&@error)
    $Write=_MemoryWrite(0xB93CD4, $code, $ReadInput)
    $Write=_MemoryWrite(0xD0AEBA, $code, $ReadInput)

    Ok , ich erkläre es euch nun :

    PHP
    $ReadInput = GUICtrlRead($Input1)


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

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


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

    PHP
    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
    $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
    If @error Then MsgBox(16,"Error","Folgender Fehler ist aufgetreten: "&@error)


    Error Meldung

    PHP
    $Write=_MemoryWrite(0xB93CD4, $code, $ReadInput)
    $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
    Case $SetPoints
    			_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


    Ich hoffe es hat euch gefallen , und ihr hab etwas davon gelernt.
    Liebe grüße Fuyo


  • Also das is schon ganz lustig ;)

    aber man kann acuh einfach am anfang schnell
    " hidden test " eingeben
    dann kannste alles mit mouse machen


    mfg

    [FONT="Fixedsys"][SIZE="4"][CENTER]:wtfsmilie:ICH spiele Flyff.:D [/CENTER][/SIZE][/FONT]

  • Aber hidden test , ist nur ein gammeliger Cheat.
    Es geht daraum , das man so , in autoit einfach Spiele manipulieren kann.
    Bei Pinball wird nichtmal ein Pointer benötigt :)
    Außerdem , wenn das Programm 1x fertig ist , kann man sich das CE adressen gesuche ersparen.


  • Zitat von Fuyo;108136


    Außerdem , wenn das Programm 1x fertig ist , kann man sich das CE adressen gesuche ersparen.

    Es gibt doch noch cheat tables ;-)
    Aber, so ein eigenes Programm ist schon schöner :-)

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

    Zitat von Fuyo

    $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]

  • hi,

    bin gerade auf diesen thread gestoßen erstmal gut erklärt. Aber viel lustiger ist es wenn man den ersten platz immer um die eingegebene punktzahl übertrumpft.

    mfg Cery


    [COLOR="Red"]entfernt[/COLOR]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!