Assembler - call dword ptr [eax+00000298]
Übersicht

![]() |
Der EisvogelBetreff: Assembler - call dword ptr [eax+00000298] |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group