other versions
- wheezy 0.9-3
- jessie 0.9.6-3.1+deb8u1
- testing 1.1.0+dfsg-5
- unstable 1.1.0+dfsg-5
- experimental 1.5.0+dfsg-1
| RAGG2-CC(1) | General Commands Manual | RAGG2-CC(1) |
NAME¶
ragg2-cc — CC frontend for compiling shellcodesSYNOPSIS¶
| ragg2-cc | [-a arch] [-b bits] [-k kernel] [-o file] [-dscxvh] |
DESCRIPTION¶
ragg2-cc is a frontend of CC. It is used to creates tiny binaries (1KB) or shellcodes in binary or hexpairs from a C source. The compiler used is the one configured by the CC environment. This has been tested with gcc, llvm-gcc and clang. Uses sflib (shellforge4) includes to get the syscall definitions. Only linux/darwin x86-32/64 is supported at the moment. Planned support for more architectures.OPTIONS¶
- -a arch
- set architecture x86, arm
- -b bits
- 32 or 64
- -k kernel
- windows, linux or osx
- -o file
- output file to write result of compilation
- -h
- show help message
- -v
- show version
- -d
- show assembler code
- -s
- generate assembly file
- -c
- generate compiled shellcode
- -x
- show hexpair bytes
EXAMPLE¶
$ cat hi.c
int main() {
write (1, "Hello World\n", 12);
exit (0);
}
$ ragg2-cc hi.c
hi.c.bin
# Linked into a tiny binary. This is 294 bytes
$ wc -c < hi.c.bin
294
$ ./hi.c.bin
Hello World
# The compiled shellcode has zeroes
$ ragg2-cc -x hi.c
e90000000083ec0ce800000000588d882a000000b804000000606a0651
6a0150cd8083c41061b8010000006a0050cd8083c40883c40cc368656c
6c6f0a00
# Use a xor encoder with key 32 to bypass
$ ragg2 -e xor -c key=32 -B `ragg2-cc -x hi.c`
6a3e596a205be8ffffffffc15e4883c60d301e48ffc6e2f9c920202020
a3cc2cc82020202078ada80a2020209824202020404a26714a2170eda0
a3e4304198212020204a2070eda0a3e428a3e42ce348454c4c4f2a20
SEE ALSO¶
radare2(1), rahash2(1), rafind2(1), rabin2(1), rafind2(1), ranal2(1), radiff2(1), rasm2(1), ragg2cc(1),AUTHORS¶
pancake <pancake@nopcode.org>| December 5, 2011 | Debian |