Hex zahlen an Addresse auslesen
-
Hallo

hier ist ein Screen: http://img9.imageshack.us/img9/213/unbenanntoiq.png
es geht um die markierte Zeile.
Wie kann ich alle Opcodes, in diesem Fall A3 78A94000, durch die Addresse mit C++ auslesen?
-
kann das jemand ins WINAPI forum verschieben, gehört sich glaube ich dahin.
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
WinAPI: ReadProcessMemory, 5 Bytes bei Adresse 0x00401474.
-
Das sieht schwer nach OllyDbg aus.

-
+gjm+ das ist denke ich nicht richtig. Wieso soll ich im Prozessspeicher der Anwendung suchen?? Die Codes sind doch in der .exe also muss ich die irgendwie aus der exe bekommen
-
EOP schrieb:
Das sieht schwer nach OllyDbg aus.

Und?
Tobi@loggedoff schrieb:
+gjm+ das ist denke ich nicht richtig. Wieso soll ich im Prozessspeicher der Anwendung suchen?? Die Codes sind doch in der .exe also muss ich die irgendwie aus der exe bekommen
Es ist richtig, hol dir ein handle auf den Prozess, und benutz ReadMemory wie gjm schon gesagt hat.
-
Nee, der Code wird doch in den RAM gemapped, sonst wären wir langsam unterwegs

Passt schon, das was du dort siehst, ist die Code-Section.Allerdings habe ich mich immer gefragt, wie unter der selben Adresse Code und gleichzeitig Speicherwerte sein können. Also unter Adresse X steht OP-Code, aber im Memory-Browser ist under derselben Adresse auch eine Variable abgespeichert.
Oder gibt es für die Sections (Code, Data, kA..) jeweils eigene Addressräume?
-
an 0x40A978 steht kein OP Code sondern nur die Variable
greetz KN4CK3R
-
Meinst du mich? Das ist mir schon klar, das meinte ich nicht.
-
fricky-Fake schrieb:
Allerdings habe ich mich immer gefragt, wie unter der selben Adresse Code und gleichzeitig Speicherwerte sein können. Also unter Adresse X steht OP-Code, aber im Memory-Browser ist under derselben Adresse auch eine Variable abgespeichert.
Das ist nicht gleichzeitig, sondern nur eine Interpretationsfrage.
-
Ich weiß noch von einer Situation, da hatte ich einen Speicherwert gesucht und gefunden. Definitiv eine Programmvariable. Und unter genau dieser Adresse war auch ein OP-Code.
Aber habe von Adressierung nicht so viel Ahnung. Vielleicht könnte das mal jemand kurz erläutern (Wie das zB. in OllyDbg ist, physikalische/virtuelle Adresse oder wie?).
-
z.B. 0x49 kann sowohl als DEC ECX als auch als das ASCII-Zeichen 'I' intepretiert werden.
Hängt immer davon ab, wo es gespeichert ist. .CODE, .DATA,...
-
EOP schrieb:
z.B. 0x49 kann sowohl als DEC ECX als auch als das ASCII-Zeichen 'I' intepretiert werden.
... oder als REX-Prefix.

-
EOP schrieb:
Hängt immer davon ab, wo es gespeichert ist. .CODE, .DATA,...
Aha, und die haben jeweils einen eigenen Adressraum?
-
fricky-Fake schrieb:
EOP schrieb:
Hängt immer davon ab, wo es gespeichert ist. .CODE, .DATA,...
Aha, und die haben jeweils einen eigenen Adressraum?
Im Prinzip ja (Segmente).
Öffne mit OllyDbg irgendein Programm, dann [Windows]+[Memory Map]: section ist das, was du meinst.
-
so ein blödsinn, wie sage ich dann ReadProcessMemory, dass es aus der Code section ließt und nicht aus der Data section ??
-
Stimmt, jetzt kapier ich wieder nix

-
Tobi@loggedoff schrieb:
so ein blödsinn, wie sage ich dann ReadProcessMemory, dass es aus der Code section ließt und nicht aus der Data section ??
Das liegt in deiner Verantwortung.
ReadProcessMemory kopiert nur die binären Daten einer Adresse.
Ansonsten:
http://en.wikipedia.org/wiki/Portable_Executable#Layout
http://webster.cs.ucr.edu/AoA/index.html
-
Tobi@loggedoff schrieb:
+gjm+ das ist denke ich nicht richtig. Wieso soll ich im Prozessspeicher der Anwendung suchen?? Die Codes sind doch in der .exe also muss ich die irgendwie aus der exe bekommen
Möglicherweise zeigt ja der Stan+OllyDbg die RVA (0x00401474) auf Wunsch auch als relativen Offset in der EXE an ?
fricky-Fake schrieb:
Ich weiß noch von einer Situation, da hatte ich einen Speicherwert gesucht und gefunden. Definitiv eine Programmvariable. Und unter genau dieser Adresse war auch ein OP-Code.
Möglicherweise ist das Problem nur, ob (und wie) man "OP-Codes" von "Speicherwerten" unterscheiden kann. Poste mal die genaue Vorgehensweise.