Frage zu Jmp
-
Hi Leute,
und zwar hab ich ein Problem.
Ich versteh den "jmp" Befehl ned richtig
z.B.0042EA78 $ /E9 83B70100 JMP prog.memcpy
wenn ich den jmp folge, in Olly, lande ich hier:
[b]0044A200[/b] H> > \55 PUSH EBP
wie kommt man auf die 0044A200?
Weil ich hab da eine naked Funktion in c mit einem NOP sled drin.Da möchte ich aber da etwas rein schreiben, aber VC++2k8 benutz so "jmp tables" ka wie man das nennen soll und jetzt weiss ich nicht wie ich die richtige Adresse bekommen soll, also in dem Fall "0044A200", damit ich den NOP sled ändern kann.
Mfg Pingu
-
Die Zahl hinter der "E9" ist der Offset zum Sprungziel im "Little-Endian-Format". Gerechnet wird so:
0042EA78 // Adresse vom Opcode E9 xx xx xx xx +0001B783 // Offset +00000005 // Opcodelänge in Bytes --------- 0044A200 // Sprungziel
-
Ich versuche mal zu interpretieren: E9 83B70100 bedeutet JMP mit 32 Bit Displacement. Diese komische Zahl 83B70100 ist Little Endian Darstellung der Zahl 0x0001B783. Diese Zahl muss man zu IP draufaddieren, um die nächste Addresse zu bekommen. 0x0042EA7D plus 0x0001B783 ergibt 0x0044A200.
-
Danke für die schnell Antwort :).
Oh mann da hät ich au selber drauf kommen können
Dann mal guten Rutsch noch und viel Spaß heut AbendGruß Pingu