radare2/binr/rarc2/rarc2-tool

59 lines
1003 B
Plaintext
Raw Normal View History

#!/bin/sh
# pancake / nopcode.org
[ -z "${ARCH}" ] && ARCH=`rarc2 -A`
compile() {
spp -h 2>&1 >/dev/null
if [ $? = 0 ]; then
spp -Darch=${ARCH} $@ | rarc2 -s -${ARCH} > .a.S || exit $?
else
rarc2 -s -${ARCH} $@ > .a.S || exit $?
fi
}
flg=$1
shift
case "$flg" in
"-b")
compile $@
gcc -nostdlib .a.S -o .a.out
if [ -e .a.out ]; then
rabin2 -o d/S/.text .a.out
rm -f .a.S .a.out
fi
;;
"-S")
compile $@
;;
* Rename r2rc to rarc2 - Moved into binr/rarc2 - Integrated with symstall - rarc2-tool now support -xc and -cx combo - Add rarc2.1 manpage * Add some bugs to review in TODO --HG-- rename : r2rc/Makefile => binr/rarc2/Makefile rename : r2rc/README => binr/rarc2/README rename : r2rc/TODO => binr/rarc2/TODO rename : r2rc/emit_arm.c => binr/rarc2/emit_arm.c rename : r2rc/emit_x64.c => binr/rarc2/emit_x64.c rename : r2rc/emit_x86.c => binr/rarc2/emit_x86.c rename : r2rc/i/libc.r => binr/rarc2/i/libc.r rename : r2rc/i/socket.r => binr/rarc2/i/socket.r rename : r2rc/out.c => binr/rarc2/out.c rename : r2rc/r2rc-tool => binr/rarc2/rarc2-tool rename : r2rc/r2rc.c => binr/rarc2/rarc2.c rename : r2rc/rcc.h => binr/rarc2/rarc2.h rename : r2rc/t/Makefile => binr/rarc2/t/Makefile rename : r2rc/t/argv.r => binr/rarc2/t/argv.r rename : r2rc/t/bytedump.r => binr/rarc2/t/bytedump.r rename : r2rc/t/data.r => binr/rarc2/t/data.r rename : r2rc/t/dump.r => binr/rarc2/t/dump.r rename : r2rc/t/hello.r => binr/rarc2/t/hello.r rename : r2rc/t/if.r => binr/rarc2/t/if.r rename : r2rc/t/inline.r => binr/rarc2/t/inline.r rename : r2rc/t/input.r => binr/rarc2/t/input.r rename : r2rc/t/loop.r => binr/rarc2/t/loop.r rename : r2rc/t/ptr.r => binr/rarc2/t/ptr.r rename : r2rc/t/rawsys.r => binr/rarc2/t/rawsys.r rename : r2rc/t/rawsys64.r => binr/rarc2/t/rawsys64.r rename : r2rc/t/regs.r => binr/rarc2/t/regs.r rename : r2rc/t/ret.r => binr/rarc2/t/ret.r rename : r2rc/t/room.r => binr/rarc2/t/room.r rename : r2rc/t/segfault.r => binr/rarc2/t/segfault.r rename : r2rc/t/shell.r => binr/rarc2/t/shell.r rename : r2rc/t/sub.r => binr/rarc2/t/sub.r rename : r2rc/t/syscall.r => binr/rarc2/t/syscall.r rename : r2rc/test.r => binr/rarc2/test.r
2010-06-28 18:30:20 +00:00
"-cx"|"-xc")
compile $@
gcc .a.S -o .a.out
[ -e .a.out ] && ./.a.out
rm -f .a.S .a.out
;;
"-c")
compile $@
gcc .a.S -o .a.out
* Rename r2rc to rarc2 - Moved into binr/rarc2 - Integrated with symstall - rarc2-tool now support -xc and -cx combo - Add rarc2.1 manpage * Add some bugs to review in TODO --HG-- rename : r2rc/Makefile => binr/rarc2/Makefile rename : r2rc/README => binr/rarc2/README rename : r2rc/TODO => binr/rarc2/TODO rename : r2rc/emit_arm.c => binr/rarc2/emit_arm.c rename : r2rc/emit_x64.c => binr/rarc2/emit_x64.c rename : r2rc/emit_x86.c => binr/rarc2/emit_x86.c rename : r2rc/i/libc.r => binr/rarc2/i/libc.r rename : r2rc/i/socket.r => binr/rarc2/i/socket.r rename : r2rc/out.c => binr/rarc2/out.c rename : r2rc/r2rc-tool => binr/rarc2/rarc2-tool rename : r2rc/r2rc.c => binr/rarc2/rarc2.c rename : r2rc/rcc.h => binr/rarc2/rarc2.h rename : r2rc/t/Makefile => binr/rarc2/t/Makefile rename : r2rc/t/argv.r => binr/rarc2/t/argv.r rename : r2rc/t/bytedump.r => binr/rarc2/t/bytedump.r rename : r2rc/t/data.r => binr/rarc2/t/data.r rename : r2rc/t/dump.r => binr/rarc2/t/dump.r rename : r2rc/t/hello.r => binr/rarc2/t/hello.r rename : r2rc/t/if.r => binr/rarc2/t/if.r rename : r2rc/t/inline.r => binr/rarc2/t/inline.r rename : r2rc/t/input.r => binr/rarc2/t/input.r rename : r2rc/t/loop.r => binr/rarc2/t/loop.r rename : r2rc/t/ptr.r => binr/rarc2/t/ptr.r rename : r2rc/t/rawsys.r => binr/rarc2/t/rawsys.r rename : r2rc/t/rawsys64.r => binr/rarc2/t/rawsys64.r rename : r2rc/t/regs.r => binr/rarc2/t/regs.r rename : r2rc/t/ret.r => binr/rarc2/t/ret.r rename : r2rc/t/room.r => binr/rarc2/t/room.r rename : r2rc/t/segfault.r => binr/rarc2/t/segfault.r rename : r2rc/t/shell.r => binr/rarc2/t/shell.r rename : r2rc/t/sub.r => binr/rarc2/t/sub.r rename : r2rc/t/syscall.r => binr/rarc2/t/syscall.r rename : r2rc/test.r => binr/rarc2/test.r
2010-06-28 18:30:20 +00:00
[ -e .a.out ] && cp .a.out $1.out
rm -f .a.S .a.out
;;
"-x")
compile $@
gcc -nostdlib .a.S -o .a.out
if [ -e .a.out ]; then
* Rename r2rc to rarc2 - Moved into binr/rarc2 - Integrated with symstall - rarc2-tool now support -xc and -cx combo - Add rarc2.1 manpage * Add some bugs to review in TODO --HG-- rename : r2rc/Makefile => binr/rarc2/Makefile rename : r2rc/README => binr/rarc2/README rename : r2rc/TODO => binr/rarc2/TODO rename : r2rc/emit_arm.c => binr/rarc2/emit_arm.c rename : r2rc/emit_x64.c => binr/rarc2/emit_x64.c rename : r2rc/emit_x86.c => binr/rarc2/emit_x86.c rename : r2rc/i/libc.r => binr/rarc2/i/libc.r rename : r2rc/i/socket.r => binr/rarc2/i/socket.r rename : r2rc/out.c => binr/rarc2/out.c rename : r2rc/r2rc-tool => binr/rarc2/rarc2-tool rename : r2rc/r2rc.c => binr/rarc2/rarc2.c rename : r2rc/rcc.h => binr/rarc2/rarc2.h rename : r2rc/t/Makefile => binr/rarc2/t/Makefile rename : r2rc/t/argv.r => binr/rarc2/t/argv.r rename : r2rc/t/bytedump.r => binr/rarc2/t/bytedump.r rename : r2rc/t/data.r => binr/rarc2/t/data.r rename : r2rc/t/dump.r => binr/rarc2/t/dump.r rename : r2rc/t/hello.r => binr/rarc2/t/hello.r rename : r2rc/t/if.r => binr/rarc2/t/if.r rename : r2rc/t/inline.r => binr/rarc2/t/inline.r rename : r2rc/t/input.r => binr/rarc2/t/input.r rename : r2rc/t/loop.r => binr/rarc2/t/loop.r rename : r2rc/t/ptr.r => binr/rarc2/t/ptr.r rename : r2rc/t/rawsys.r => binr/rarc2/t/rawsys.r rename : r2rc/t/rawsys64.r => binr/rarc2/t/rawsys64.r rename : r2rc/t/regs.r => binr/rarc2/t/regs.r rename : r2rc/t/ret.r => binr/rarc2/t/ret.r rename : r2rc/t/room.r => binr/rarc2/t/room.r rename : r2rc/t/segfault.r => binr/rarc2/t/segfault.r rename : r2rc/t/shell.r => binr/rarc2/t/shell.r rename : r2rc/t/sub.r => binr/rarc2/t/sub.r rename : r2rc/t/syscall.r => binr/rarc2/t/syscall.r rename : r2rc/test.r => binr/rarc2/test.r
2010-06-28 18:30:20 +00:00
bytes=`rabin2 -o d/S/.text .a.out`
rasc -s $bytes -X
fi
rm -f .a.S .a.out
;;
*)
* Rename r2rc to rarc2 - Moved into binr/rarc2 - Integrated with symstall - rarc2-tool now support -xc and -cx combo - Add rarc2.1 manpage * Add some bugs to review in TODO --HG-- rename : r2rc/Makefile => binr/rarc2/Makefile rename : r2rc/README => binr/rarc2/README rename : r2rc/TODO => binr/rarc2/TODO rename : r2rc/emit_arm.c => binr/rarc2/emit_arm.c rename : r2rc/emit_x64.c => binr/rarc2/emit_x64.c rename : r2rc/emit_x86.c => binr/rarc2/emit_x86.c rename : r2rc/i/libc.r => binr/rarc2/i/libc.r rename : r2rc/i/socket.r => binr/rarc2/i/socket.r rename : r2rc/out.c => binr/rarc2/out.c rename : r2rc/r2rc-tool => binr/rarc2/rarc2-tool rename : r2rc/r2rc.c => binr/rarc2/rarc2.c rename : r2rc/rcc.h => binr/rarc2/rarc2.h rename : r2rc/t/Makefile => binr/rarc2/t/Makefile rename : r2rc/t/argv.r => binr/rarc2/t/argv.r rename : r2rc/t/bytedump.r => binr/rarc2/t/bytedump.r rename : r2rc/t/data.r => binr/rarc2/t/data.r rename : r2rc/t/dump.r => binr/rarc2/t/dump.r rename : r2rc/t/hello.r => binr/rarc2/t/hello.r rename : r2rc/t/if.r => binr/rarc2/t/if.r rename : r2rc/t/inline.r => binr/rarc2/t/inline.r rename : r2rc/t/input.r => binr/rarc2/t/input.r rename : r2rc/t/loop.r => binr/rarc2/t/loop.r rename : r2rc/t/ptr.r => binr/rarc2/t/ptr.r rename : r2rc/t/rawsys.r => binr/rarc2/t/rawsys.r rename : r2rc/t/rawsys64.r => binr/rarc2/t/rawsys64.r rename : r2rc/t/regs.r => binr/rarc2/t/regs.r rename : r2rc/t/ret.r => binr/rarc2/t/ret.r rename : r2rc/t/room.r => binr/rarc2/t/room.r rename : r2rc/t/segfault.r => binr/rarc2/t/segfault.r rename : r2rc/t/shell.r => binr/rarc2/t/shell.r rename : r2rc/t/sub.r => binr/rarc2/t/sub.r rename : r2rc/t/syscall.r => binr/rarc2/t/syscall.r rename : r2rc/test.r => binr/rarc2/test.r
2010-06-28 18:30:20 +00:00
echo "Usage: rarc2-tool [-flag] [file]"
echo " -b dump bytes"
echo " -x execute"
echo " -c compile against libc"
echo " -S only generate .S file"
* Rename r2rc to rarc2 - Moved into binr/rarc2 - Integrated with symstall - rarc2-tool now support -xc and -cx combo - Add rarc2.1 manpage * Add some bugs to review in TODO --HG-- rename : r2rc/Makefile => binr/rarc2/Makefile rename : r2rc/README => binr/rarc2/README rename : r2rc/TODO => binr/rarc2/TODO rename : r2rc/emit_arm.c => binr/rarc2/emit_arm.c rename : r2rc/emit_x64.c => binr/rarc2/emit_x64.c rename : r2rc/emit_x86.c => binr/rarc2/emit_x86.c rename : r2rc/i/libc.r => binr/rarc2/i/libc.r rename : r2rc/i/socket.r => binr/rarc2/i/socket.r rename : r2rc/out.c => binr/rarc2/out.c rename : r2rc/r2rc-tool => binr/rarc2/rarc2-tool rename : r2rc/r2rc.c => binr/rarc2/rarc2.c rename : r2rc/rcc.h => binr/rarc2/rarc2.h rename : r2rc/t/Makefile => binr/rarc2/t/Makefile rename : r2rc/t/argv.r => binr/rarc2/t/argv.r rename : r2rc/t/bytedump.r => binr/rarc2/t/bytedump.r rename : r2rc/t/data.r => binr/rarc2/t/data.r rename : r2rc/t/dump.r => binr/rarc2/t/dump.r rename : r2rc/t/hello.r => binr/rarc2/t/hello.r rename : r2rc/t/if.r => binr/rarc2/t/if.r rename : r2rc/t/inline.r => binr/rarc2/t/inline.r rename : r2rc/t/input.r => binr/rarc2/t/input.r rename : r2rc/t/loop.r => binr/rarc2/t/loop.r rename : r2rc/t/ptr.r => binr/rarc2/t/ptr.r rename : r2rc/t/rawsys.r => binr/rarc2/t/rawsys.r rename : r2rc/t/rawsys64.r => binr/rarc2/t/rawsys64.r rename : r2rc/t/regs.r => binr/rarc2/t/regs.r rename : r2rc/t/ret.r => binr/rarc2/t/ret.r rename : r2rc/t/room.r => binr/rarc2/t/room.r rename : r2rc/t/segfault.r => binr/rarc2/t/segfault.r rename : r2rc/t/shell.r => binr/rarc2/t/shell.r rename : r2rc/t/sub.r => binr/rarc2/t/sub.r rename : r2rc/t/syscall.r => binr/rarc2/t/syscall.r rename : r2rc/test.r => binr/rarc2/test.r
2010-06-28 18:30:20 +00:00
echo "ARCH: environ to set architecture: arm, x86, x64"
;;
esac