mirror of
https://github.com/radareorg/radare2.git
synced 2024-12-14 08:49:50 +00:00
7f5a84b57a
rasm2 defaults -o to 0 instead of 0x8048000 fixes in rarun2 to make it more userfriendly update some manpages with examples enhace output of 'afi' command fix 'pi' bug setting blocksize fix 'pdi' bug ignoring user defined len add $C $J $X and $F $I code analysis variables run r2irc.js in sandbox mode
88 lines
1.9 KiB
Groff
88 lines
1.9 KiB
Groff
.Dd Dec 5, 2012
|
|
.Dt RAGG2-CC 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm ragg2-cc
|
|
.Nd CC frontend for compiling shellcodes
|
|
.Sh SYNOPSIS
|
|
.Nm ragg2-cc
|
|
.Op Fl a Ar arch
|
|
.Op Fl b Ar bits
|
|
.Op Fl k Ar kernel
|
|
.Op Fl o Ar file
|
|
.Op Fl dscxvh
|
|
.Sh 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.
|
|
.Pp
|
|
The compiler used is the one configured by the CC environment. This has been tested with gcc, llvm-gcc and clang.
|
|
.Pp
|
|
Uses sflib (shellforge4) includes to get the syscall definitions.
|
|
.Pp
|
|
Only linux/darwin x86-32/64 is supported at the moment. Planned support for more architectures.
|
|
.Sh OPTIONS
|
|
.Pp
|
|
.Bl -tag -width Fl
|
|
.It Fl a Ar arch
|
|
set architecture x86, arm
|
|
.It Fl b Ar bits
|
|
32 or 64
|
|
.It Fl k Ar kernel
|
|
windows, linux or osx
|
|
.It Fl o Ar file
|
|
output file to write result of compilation
|
|
.It Fl h
|
|
show help message
|
|
.It Fl v
|
|
show version
|
|
.It Fl d
|
|
show assembler code
|
|
.It Fl s
|
|
generate assembly file
|
|
.It Fl c
|
|
generate compiled shellcode
|
|
.It Fl x
|
|
show hexpair bytes
|
|
.El
|
|
.Sh EXAMPLE
|
|
.Pp
|
|
$ cat hi.c
|
|
int main() {
|
|
write (1, "Hello World\\n", 12);
|
|
exit (0);
|
|
}
|
|
.Pp
|
|
$ ragg2-cc hi.c
|
|
hi.c.bin
|
|
.Pp
|
|
# Linked into a tiny binary. This is 294 bytes
|
|
$ wc \-c < hi.c.bin
|
|
294
|
|
.Pp
|
|
$ ./hi.c.bin
|
|
Hello World
|
|
.Pp
|
|
# The compiled shellcode has zeroes
|
|
$ ragg2-cc \-x hi.c
|
|
e90000000083ec0ce800000000588d882a000000b804000000606a0651
|
|
6a0150cd8083c41061b8010000006a0050cd8083c40883c40cc368656c
|
|
6c6f0a00
|
|
.Pp
|
|
# Use a xor encoder with key 32 to bypass
|
|
$ ragg2 \-e xor \-c key=32 \-B `ragg2-cc \-x hi.c`
|
|
6a3e596a205be8ffffffffc15e4883c60d301e48ffc6e2f9c920202020
|
|
a3cc2cc82020202078ada80a2020209824202020404a26714a2170eda0
|
|
a3e4304198212020204a2070eda0a3e428a3e42ce348454c4c4f2a20
|
|
.Sh SEE ALSO
|
|
.Pp
|
|
.Xr radare2(1) ,
|
|
.Xr rahash2(1) ,
|
|
.Xr rafind2(1) ,
|
|
.Xr rabin2(1) ,
|
|
.Xr rafind2(1) ,
|
|
.Xr radiff2(1) ,
|
|
.Xr rasm2(1) ,
|
|
.Xr ragg2cc(1) ,
|
|
.Sh AUTHORS
|
|
.Pp
|
|
pancake <pancake@nopcode.org>
|