Shellcode Encryption

Hi,

ich habe eine kürze Frage zum shellcode verschlüsseln:

Worher weiß der decrypter eines verschlüsselten Shellcodes, an welcher Position er mit dem Entschlüsseln anfangen muss?

Die Position in den der Shellcode gelanden wird kann ja variieren, somit kann man das Offset ja nicht einfach angeben.

mfG

meta
 
Relative Positionsangabe.
Z.B sind Adressen bei Calls, Jmps oft relativ angegeben (auch wenn der Disassembler/Debugger diese i.d.R absolut anzeigt).
Ferner gibt es den "klassischen" Trick, um die aktuelle Position im (Shell)Code heraus zu bekommen:
Code:
call delta #Rücksprungadresse landet auf dem Stack
delta: pop esi 
foobar [esi + (delta - shellcode_pos) ] # Position des Shellcodes relativ zum 
# (Delta - label)  sollte zum Assemblierungszeitpunkt schon bekannt sein
oder "realistischer", da "call delta" im obigen Beispiel zu einem e8 00 00 00 00 werden dürfte:
Code:
jmp .next 
delta:
pop esi
jmp .foobar
next:
call delta <= label "delta" ist vor dem call, also wird e8 xx ff ff ff Opcode daraus generiert.
delta/shellcode_pos sind dabei Labels (die meisten Assembler können damit etwas anfangen und man braucht nicht "zu Fuß", aus Größenangaben und Ähnlichem die rel. Position zu berechnen).
 
Zuletzt bearbeitet:
Zurück
Oben