Probleme mit Memory.au3

  • Ja ich weis da stehen viele Beispiele im Tutorial.
    Trotzdem funktioniert das bei mir nicht.

    Folgendes kleine Skript habe ich mir gebastelt.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <Memory.au3>

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("Blub",300,185)
    $gui_input = GUICtrlCreateInput("",6,6,100,20)
    $gui_label = GUICtrlCreateLabel("",6,30,200,25)
    $gui_button= GUICtrlCreateButton("Klick",120,6,100,25)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    $prozess = WinGetProcess("Cheat Engine 5.3")
    $speicher = _MemoryOpen($prozess)
    $addresse = 0x005AB0A2
    $wert = _MemoryRead($addresse,$speicher)

    [/autoit] [autoit][/autoit] [autoit]

    Global $random=1

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $gui_event_close
    _MemoryClose($speicher)
    Exit
    Case $msg = $gui_button
    ;~ $addresse = GUICtrlRead($gui_input)
    $wert = _MemoryRead($addresse,$speicher)
    GUICtrlSetData($gui_label,$wert)
    EndSelect
    WEnd

    [/autoit]


    Die Speicheradresse 005AB0A2 habe ich mir via Cheat Engine 5.3 rausgesucht ( hab einfach nach 101 gesucht und den ersten Wert genommen) - der Prozess bezieht sich auf Cheat Engine selbst.
    Wenn ich das dann alles schön starte kommt das:

    Spoiler anzeigen


    Wie man sieht wird eine sehr große Zahl als Wert ausgegeben, obwohl da 101 stehen sollte.
    Was mache ich falsch ? :)

    Und wie kann ich es hinbekommen das man Hexadezimalzahlen eingeben kann? Kann ich einfach einen String ins Inputfeld eingeben lassen und bei _MemoryRead wird das dann richtig konvertiert?

    • Offizieller Beitrag

    Hallo,

    das Ergebnis ist korrekt! Der Wert 101 (0x65) ist ein Byte groß, der von dir von dir ausgelesen Wert 1919230053 (0x72652065) ist 4 Byte groß. In der Hexadezimalen Schreibweise fällt sofort auf das das niederwertige Byte von deinem Wert gleich dem Wert von Cheat Engine ist.

  • Zitat

    Original von bernd670
    Hallo,

    das Ergebnis ist korrekt! Der Wert 101 (0x65) ist ein Byte groß, der von dir von dir ausgelesen Wert 1919230053 (0x72652065) ist 4 Byte groß. In der Hexadezimalen Schreibweise fällt sofort auf das das niederwertige Byte von deinem Wert gleich dem Wert von Cheat Engine ist.


    könntest du das auch für dumme wie mich nochmal erklären?^^
    ich verstehe an dem satz 0.. und genau das gleiche problem wie unser beitrag starter habe ich vorherige woche noch gehabt.

  • Zitat

    Original von bernd670
    Hallo,

    das Ergebnis ist korrekt! Der Wert 101 (0x65) ist ein Byte groß, der von dir von dir ausgelesen Wert 1919230053 (0x72652065) ist 4 Byte groß. In der Hexadezimalen Schreibweise fällt sofort auf das das niederwertige Byte von deinem Wert gleich dem Wert von Cheat Engine ist.


    Danke für die Antwort:)
    Also habe ich ungünstig mit der Cheat Engine gesucht?
    0x65
    0x72652065
    Da ich nur nach ein Byte großen Zahlen gesucht habe.
    Würde ich mit Cheat Engine nach einer 4-Byte-Zahl mit dem Wert 0x726520 müsste irgendwo die gleiche Adresse dabei sein wie bei meinen 101?
    Kann grad nicht testen da ich in der Schule bin ;)