Skip to content
shellcodes

Shellcode dekodieren und disassemblieren

Rohe Shellcode-Bytes zurück in Assembly verwandeln — Hex- und Escape-Formate dekodieren, mit Capstone disassemblieren und Bad Chars finden, bevor du ihn ausführst.

Veröffentlicht am 2 Min. Lesezeit

Führe niemals Bytes aus, die du nicht gelesen hast — besonders nicht Bytes, die du nicht selbst geschrieben hast. Shellcode zu dekodieren und zu disassemblieren zeigt dir, was er tatsächlich tut, und bringt Probleme ans Licht, bevor sie einen Exploit-Versuch kosten. Zum Hintergrund siehe Was Shellcode ist.

Warum Shellcode dekodieren

Drei Gründe:

  • Vertrauen — ein Beispiel aus dem Internet tut vielleicht mehr, als es behauptet.
  • Debugging — dein eigener Payload "funktioniert nicht" und du musst sehen, was assembliert wurde.
  • Bad-Char-Jagd — verbotene Bytewerte vor der Auslieferung finden, nicht danach.

Gängige Kodierungen

Shellcode reist in mehreren Verkleidungen. Du dekodierst meist zuerst zu rohen Bytes:

FormatSieht aus wie
Escaped Hex\x31\xc0\x50…
C-Array0x31, 0xc0, 0x50…
Plain Hex31c05068…
Base64McBQaC8v…

Entferne den Wrapper, hol dir die Bytes, dann disassembliere.

Zu Mnemonics disassemblieren

Rohe Bytes bedeuten nichts, bis du sie zurück in Instruktionen verwandelst. Ein Disassembler dekodiert sie zu Assembly, sodass \x31\xc0 als xor eax, eax lesbar wird. Der Shellcodes-Converter tut dies mit Capstone-Mnemonics und erkennt, wo eine Instruktion endet und die nächste beginnt — so fängst du einen Payload, der etwas anderes tut als angegeben.

Die Bytes lesen

Die Disassemblierung zeigt dir die Logik; eine Hex-Ansicht zeigt dir die Bytes selbst — eingebettete Strings, verdächtige Werte und verbotene Zeichen. Worauf du achten solltest, bevor du etwas kopierst, steht in Was der Hex-Viewer dir verrät.

Eine Falle ist erwähnenswert: Disassemblierst du im falschen CPU-Modus, bekommst du plausibel aussehenden Müll. Dieselben Bytes dekodieren als 32-Bit und 64-Bit unterschiedlich, sodass ein x64-Payload, als x86 gelesen, Instruktionen erzeugt, die echt, aber falsch sind. Setze immer die Architektur passend zum Payload, bevor du auch nur einer Zeile der Ausgabe vertraust.

Jetzt dekodieren

Füge einen escapten oder Hex-Blob in den Shellcodes-Converter ein, um das Format zu normalisieren und ihn zu disassemblieren. Bestätige, dass er deiner Absicht entspricht, prüfe ihn gegen dein Bad-Char-Set und führe ihn erst dann aus — in einem isolierten Lab, das du kontrollierst. Nur autorisiertes Testen: verantwortungsvolle Nutzung.

Verwandte Artikel

Kommentierte Shellcode-Beispiele für Linux x86 und x64 — execve /bin/sh und Reverse TCP — mit den Bytes, der Disassemblierung und den Fallstricken.
Wie Linux-Shellcode funktioniert — Syscalls, Register und positionsunabhängiger Code — und wie man ihn sicher assembliert, kodiert und testet.
Wege zum Erzeugen von Shellcode im Vergleich — msfvenom, handgeschriebenes Assembly und ein browserbasierter Generator — mit den Abwägungen und wann man welchen nutzt.