Supponiamo di aver assegnato l'indirizzo in cui è stato inserito il mio codecave utilizzando VirtualAllocEx
(restituisce l'indirizzo) e scrivo il mio codice in quell'indirizzo utilizzando WriteProcessMemory()
.C# Teorico: scrivere un JMP su una codecave in asm
ecco la domanda:
Come faccio a scrivere un salto al mio CodeCave? So che i salti iniziano con "E9
", ma come faccio a convertire l'indirizzo restituito da VirtualAllocEx
in un UInt32 corretto (dword) in modo che il debugger/compilatore capirà l'istruzione?
Ad esempio:
Sono all'indirizzo 00402020
(OEP dell'app nativa). Scrivo un salto a 004028CF
(luogo vuoto) "JMP 004028CF
". L'istruzione in byte si presenta così:
CPU Disasm
Address Hex dump Command Comments
00402020 E9 AA080000 JMP 004028CF
"E9
" è come indichiamo un JMP. Che dire di "AA080000
", come posso generare questo?
Ho bisogno di fare qualcosa di simile, così posso inizializzare un JMP con il mio codecave, che sarà localizzato all'indirizzo restituito da VirtualAllocEx()
.
Qualsiasi aiuto sarà apprezzato con gratitudine!
Grazie in anticipo.
Qual è il C# po 'a questa domanda? – Steven