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.
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:
| Format | Sieht aus wie |
|---|---|
| Escaped Hex | \x31\xc0\x50… |
| C-Array | 0x31, 0xc0, 0x50… |
| Plain Hex | 31c05068… |
| Base64 | McBQaC8v… |
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.