Assembler - call dword ptr [eax+00000298]

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

Der Eisvogel

Betreff: Assembler - call dword ptr [eax+00000298]

BeitragDi, März 23, 2010 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
Ich versuche mich derzeit daran, ein wenig Assembler zu "verstehen". jetzt hänge ich leider an folgender Zeile:
Code: [AUSKLAPPEN]
call dword ptr [eax+00000298]

Ich weiß, dass dort eine Funktion anhand eines Pointer aufgerufen wird. Aber wenn ich zu der Adresse springe, steht dort ??. Bin ich an dere falschen Stelle, oder wird diese von meinem Programm nicht preisgegeben.
Wie genau finde ich diese Speicherstelle den? Vielleicht mach ich da ja schon etwas falsch.

PS: Das Programm, dass ich auslese, ist nicht von mir.
Ich lese es mit der Cheat Engine aus.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

AMD

BeitragDi, März 23, 2010 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
warum machst du das ganze in assembler und nicht einfach in c++ ? is doch viel einfacher denk ich mal...

in c++ könntest du die addressen ganz einfach mit ReadProcessMemory einlesen und nach belieben verändern oder sonstiges... außerdem müssten die ersten beiden 00 durch 0x ersetzt werden oder?!

also so: 0x000298

MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

Holzchopf

Meisterpacker

BeitragDi, März 23, 2010 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
AMD, ich denke, das liegt daran, dass ihm die Cheat-Engine nur den Assembler-Code der Exe ausspuckt...
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Thunder

BeitragDi, März 23, 2010 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde es so versuchen:
Code: [AUSKLAPPEN]
add eax, 298 ; oder, falls Hexadezimal 0x298
call eax


ptr und [] haben dieselbe Bedeutung, wenn du beide verwendest, dann sollte das zu einem Fehler führen. Nur eins von beidem. Außerdem sind diese Operatoren zur Dereferenzierung von Zeigern gedacht, also weg damit. Da du sonst zu der Int-Adresse springen würdest, die in eax+298 gespeichert ist und nicht zu eax+298.

Falls es nicht geht, wäre es hilfreich zu wissen, welchen Assembler du verwendest.


mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Der Eisvogel

BeitragDi, März 23, 2010 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe keine Ahnung. Dieser Code stammt nicht von mir. Wie gesagt, ich versuche es zu verstehen und nachzuvollziehen. Das steht so im Code. Aber wohin muss ich als nächstes gehen? Wohin zeigt springt diese Zeile?
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Thunder

BeitragDi, März 23, 2010 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich weiß nicht, wie weit du Assembler schon verstehst. Daher möchte ich dir das empfehlen (falls du es nicht schon gelesen hast): http://www-ivs.cs.uni-magdebur...bler.shtml
Das war auch das Erste, was ich gelesen habe.

Nun, in der CPU gibt es die 4 Hauptregister EAX, EBX, ECX und EDX. Jeder von denen kann eine 32-Bit Zahl speichern( Bei neueren 64Bit-CPUs heißen diese schon RAX, RBX, RCX, RDX und können 64 Bit-Zahlen aufnehmen). In diesem Fall wird zu der Adresse gesprungen, die dem Wert von EAX +298 entspricht.
Aber mit der Zeile Code, kann ich nur wenig dazu sagen, weil ich nicht nachvollziehen kann was für ein Wert in EAX steht. Es ist allerdings ziemlich wahrscheinlich, dass davor eine Funktion aufgerufen wurde, die den Wert in EAX bearbeitet hat.

Eine weitere Möglichkeit wäre, dass das ein Schutzmechanismus gegen das Cracken etc. ist, aber das glaube ich eher weniger.


Das Problem ist, du kannst nicht genau sagen, was du dir als nächstes anschauen musst. Du musst in die Zeilen davor schauen ... herausfinden was in EAX stehen kann ... zu all diesen Werten gehen ... kombinieren. Ich kann mir vorstellen, dass es nicht einfach wird, falls es wirklich ein Schutzmechanismus ist.


mfg Thunder

Edit: Jetzt begreife ichs erst. Der Code stand schon so da und du hast ihn nur rauskopiert. Ich finde es trotzdem komisch, da es mit ptr [] eine doppelte Dereferenzierung geben müsste, die ein Assembler normalerweise nicht zulässt.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Der Eisvogel

BeitragDi, März 23, 2010 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Also die Werte der Register lauten:
Code: [AUSKLAPPEN]
EAX: 130CF828
EBX: 04A15A78
ECX: 130CF828
EDX: 00886328


Wobei ich nicht glaube, dass diese von großer bedeutung sind.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Thunder

BeitragDi, März 23, 2010 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn diese Werte exakt vor dem Befehl "call dword ptr [eax+298]" in deinen Registern standen kann man sie als hilfreich bezeichnen.

Code: [AUSKLAPPEN]
call dword ptr [eax+289]


heißt, dass an (0x130CF828 + 289) ein Wert gespeichert ist, genauer gesagt eine Adresse, zu der mit Hilfe von "call" gesprungen wird.

Wie gesagt müsstest du besonderes Augenmerk auf die vorhergehenden Befehle legen, da dort der Wert von EAX festgelegt wird. Ein Absolutwert ist immer nur bedingt hilfreich.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Der Eisvogel

BeitragDi, März 23, 2010 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Jep, diese Werte wurden exakt davor festgelegt.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group