Nehmen wir an, ich habe die Adresse zugewiesen, wo mein Codecave platziert VirtualAllocEx
(es gibt die Adresse zurück) und ich schreibe meinen Code in diese Adresse mit WriteProcessMemory()
.C# Theoretisch: Schreibe einen JMP in einen Codecave in asm
Hier ist die Frage:
Wie schreibe ich einen Sprung zu meinem codecave? Ich weiß, dass Sprünge mit "E9
" beginnen, aber wie konvertiere ich die Adresse, die von VirtualAllocEx
zurückgegeben wird, in ein korrektes UInt32 (dword), damit der Debugger/Compiler den Befehl versteht?
Zum Beispiel:
ich an der Adresse bin 00402020
(OEP der nativen App). Ich schreibe einen Sprung zu 004028CF
(leere Stelle) "JMP 004028CF
". Die Anweisung in Bytes wie folgt aussieht:
CPU Disasm
Address Hex dump Command Comments
00402020 E9 AA080000 JMP 004028CF
"E9
" ist, wie wir eine JMP zeigen. Was ist mit "AA080000
", wie erzeuge ich das?
Ich muss etwas Ähnliches tun, damit ich einen JMP zu meinem Codecave initialisieren kann, der an einer von VirtualAllocEx()
zurückgegebenen Adresse gefunden wird.
Jede Hilfe wird dankbar geschätzt!
Vielen Dank im Voraus.
Was ist die C# Bit auf diese Frage? – Steven