
Patchen von ROP-codierten Shellcodes in PEs
Ein in C (Win32) geschriebenes Werkzeug, um beliebigen Shellcode in ROP zu konvertieren und in eine gegebene portable executable (PE) zu patchen. Es unterstützt nur 32-Bit-Ziel-PEs und den x86-Befehlssatz.
Veröffentlicht auf der Blackhat USA 2015, "ROPInjector: Using Return Oriented Programming for Polymorphism and Antivirus Evasion" Weitere Informationen:
ropinjector <file-to-infect> <shellcode-file> <output-file>* [options]*
(* kennzeichnet optionale Argumente)
z. B.
ropinjector.exe firefox.exe revshell.txt
file-to-infect : jede 32-Bit-, nicht gepackte PE
shellcode-file : der Shellcode, der in die PE-Datei eingefügt werden soll
output-file (optional) : Der Name der Ausgabedatei. Falls nicht angegeben, wählt ROPInjector einen passenden Dateinamen, der die Art der durchgeführten Injektion angibt.
options :
text Erzwingt das Lesen der Shellcode-Datei als Textdatei. Shellcode in Textform
muss im Format \xHH\xHH\xHH vorliegen.
norop Wandelt den Shellcode nicht in ROP um.
nounroll Führt kein Entrollen der SIBs durch.
noinj Fügt keine fehlenden Gadgets ein.
getpc Ersetzt keine getPC-Konstrukte im Shellcode.
entry Lässt den Shellcode vor dem ursprünglichen PE-Code ausführen. Ohne diese
Option versucht ROPInjector, Aufrufe von ExitProcess(), exit() und ähnlichen
Funktionen zu hooken, sodass der Shellcode zuletzt, unmittelbar vor
Prozessende, ausgeführt wird.
-d<secs> Anzahl der Sekunden, die Sleep() vor der Ausführung des Shellcodes gewartet wird.
Wenn diese Option angegeben wird, wird implizit auch "entry" verwendet.
ROPInjector gibt am Ende einige durch Kommas getrennte Statistiken aus. Diese sind (in der Reihenfolge ihres Erscheinens):