ShellNoob 2.0 is out!
ShellNoob 2.0 is out!! You might now ask with a mix of suspicion and astonishment:
Yep, you got it right! A new version is out!
For those who haven't read the first blog post, ShellNoob is a shellcode writing toolkit that helps you dealing with the boring, error-prone, and painful steps, leaving only the fun part to you! At least that's the goal :)
From when I published the first version (exactly three months ago!) a lot of stuff happened. First, I'll be lucky enough to have a chance to give a demo and to present ShellNoob at Black Hat USA Arsenal! Here is the announcement/abstract: https://www.blackhat.com/us-13/arsenal.html#Fratantonio. Second, a shitton of new features got added!
Here it is the new updated feature list:
- convert shellcode between different formats and sources. Formats currently supported: asm, bin, hex, obj, exe, C, python, ruby, pretty, safeasm, completec, shellstorm. (All the details are in the README.)
- interactive asm-to-opcode conversion (and viceversa) mode. This is useful when you cannot use specific bytes in the shellcode and you want to figure out if a specific assembly instruction will cause problems.
- support for both ATT & Intel syntax. Check the --intel switch.
- support for 32 and 64 bits (when playing on x86_64 machine). Check the --64 switch.
- resolve syscall numbers, constants, and error numbers (now implemented for real! :-)).
- portable and easily deployable (it only relies on gcc/as/objdump and python). And it just one self-contained python script!
- in-place development: you run ShellNoob directly on the target architecture!
- built-in support for Linux/x86, Linux/x86_64, Linux/ARM, FreeBSD/x86, FreeBSD/x86_64.
- "prepend breakpoint" option. Check the -c switch. read from stdin / write to stdout support (use "-" as filename)
- uber cheap debugging: check the --to-strace and --to-gdb option!
- Use ShellNoob as a Python module in your scripts!
- Verbose mode shows the low-level steps of the conversion: useful to debug / understand / learn!
- Extra plugins: binary patching made easy with the --file-patch, --vm-patch, --fork-nopper options!
The source code and a (hopefully enough) informative README (with all the details, use cases, etc) is on github: https://github.com/reyammer/shellnoob. Check it out! Please send all the bug reports and swears to yanick [AT] fratantonio.me / @reyammer. All feedback is welcome :-)