radare2/binr/ragg2/ragg2-cc

241 lines
3.8 KiB
Plaintext
Raw Normal View History

#!/bin/sh
# ragg2-cc : a shellcode compiler -- pancake<nopcode.org> 2011
# - for bsd, linux and osx
# TODO
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
# remove temporary files
# add support for arm
# add support for nested shellcodes
if [ -z "${CC}" ]; then
for a in llvm-gcc clang gcc ; do
$a --version >/dev/null 2>&1
if [ $? = 0 ]; then
CC="$a"
break
fi
done
if [ -z "${CC}" ]; then
echo "Cannot find CC" > /dev/stderr
exit 1
fi
fi
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
A=x86
SFLIBPATH=`ragg2 -v | cut -d ' ' -f 3-`
if [ ! -d "${SFLIBPATH}" ]; then
echo "Cannot find ${SFLIBPATH}"
exit 1
fi
case "`uname -m`" in
"x86_64")
B=64
;;
*)
B=32
;;
esac
dohelp() {
echo "Usage: ragg2-cc [-dabkoscxv] [file.c]"
echo " -d enable debug mode"
echo " -a x86 set arch (x86, arm)"
echo " -b 32 bits (32, 64)"
echo " -k linux set kernel (darwin, linux)"
echo " -o file set output file"
echo " -s generate assembly"
echo " -c generate compiled shellcode"
echo " -x show hexpair bytes"
echo " -v show version"
}
case "`uname`" in
Darwin)
K=darwin
;;
*)
K=linux
;;
esac
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
X=0
C=""
D=""
O=""
F=""
ASM=0
while : ; do
[ -z "$1" ] && break
F=$1
case "$F" in
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
-a)
shift
A=$1
[ -z "$A" ] && { echo "Missing argument for -a" ; exit 1; }
;;
-b)
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
shift
B=$1
[ -z "$B" ] && { echo "Missing argument for -b" ; exit 1; }
;;
-k)
shift
K=$1
[ -z "$K" ] && { echo "Missing argument for -k" ; exit 1; }
;;
-x)
X=1
;;
-c)
C=1
;;
-d)
D=1
;;
-s)
ASM=1
;;
-o)
shift
O=$1
if [ -z "$O" ]; then
echo "Missing argument for -o"
exit 1
fi
;;
-h)
dohelp
exit 0
;;
-v)
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
ragg2 -v | sed -e 's,2,2-cc,'
exit 0
;;
esac
shift
done
if [ -z "$F" ]; then
dohelp
exit 1
fi
if [ "`uname`" = Darwin ]; then
OBJCOPY=gobjcopy
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
case "$B" in
32)
CFLAGS="-arch i386 "
LDFLAGS="-arch i386 -shared -c"
ARCH=darwin-x86-32
;;
64)
CFLAGS="-arch x86_64"
LDFLAGS="-arch x86_64 -shared -c"
ARCH=darwin-x86-64
;;
esac
SHDR="
.text
jmp _main"
else
OBJCOPY=objcopy
CFLAGS="-fPIC -fPIE -pie"
SHDR="
.section .text
.globl main
.type main, @function
jmp main
"
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
case "$B" in
64)
ARCH=linux-x86-64
;;
*)
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
ARCH=linux-x86-32
;;
esac
fi
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
[ "$A$K" ] && ARCH="$K-$A-$B"
OPT=-Os
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
#/usr/include/libr/sflib/
#CFLAGS="-shared -fPIC -fPIE -pie "
#CFLAGS="${CFLAGS} -shared -fPIC -fPIE -pie "
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
CFLAGS="${CFLAGS} -nostdinc -include ${SFLIBPATH}/${ARCH}/sflib.h"
CFLAGS="${CFLAGS} -fomit-frame-pointer -finline-functions -fno-zero-initialized-in-bss"
LDFLAGS="${LDFLAGS} -nostdlib"
case "$K" in
darwin)
#TEXT="__TEXT.__text"
TEXT="0.__text"
;;
*|linux)
TEXT=".text"
;;
esac
rmtemps() {
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
[ -z "$D" ] && rm -f $F.tmp $F.text $F.s $F.o
}
fail() {
rmtemps
exit 1
}
if [ "$D" ]; then
echo "==> Compile"
echo "${CC} ${CFLAGS} -o $F.tmp -S ${OPT} $F"
fi
rm -f $F.bin
${CC} ${CFLAGS} -o $F.tmp -S ${OPT} $F || fail
echo "${SHDR}" > $F.s
cat $F.tmp \
| sed -e s,rdata,text, -e s,rodata,text, -e 's,get_pc_thunk.bx,__getesp__,g' \
| grep -v .cstring | grep -v size | grep -v ___main | grep -v section \
| grep -v __alloca | grep -v zero | grep -v cfi >> $F.s
rm -f $F.tmp
if [ $ASM = 1 ]; then
echo $F.s
exit 0
fi
if [ "$D" ]; then
echo "==> Assemble"
echo "${CC} -c ${LDFLAGS} -Os -o $F.o $F.s"
fi
${CC} ${LDFLAGS} ${OPT} -o $F.o $F.s || fail
if [ "$D" ]; then
echo "==> Link"
#echo "${OBJCOPY} -j .text -O binary $F.o $.text"
echo "rabin2 -o '$F.text' -O d/S/${TEXT} $F.o"
fi
rabin2 -o "$F.text" -O d/S/${TEXT} $F.o
if [ "`du $F.text|awk '{print $1}'`" = 0 ]; then
# use objcopy as falback for rabin2
${OBJCOPY} -j .text -O binary $F.o $F.text || fail
fi
if [ "$C" = 1 ]; then
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
if [ "$O" ]; then
mv $F.text $O
else
O="$F.text"
fi
echo "$O"
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
exit 0
fi
[ "$X" = 1 ] && exec rax2 -S - < $F.text
if [ "$D" ]; then
# hexdump -C $F.text
rax2 -S - < $F.text
ls -l $F.text
fi
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
[ -z "$O" ] && O=$F.bin
ragg2 -C $F.text -F -o $O || fail
echo $O
* Install includes in windows dist * Import linux-x86-32/64 and darwin-x86-32 sflib includedirs * Simplify data installation for magic, egg, syscall and asm * Set R2_INCDIR in r_userconf * Make ragg2-cc much smarter - use ragg2 -v to get paths and version - accept new flags -a -b -k for arch, bits and kernel - supports crosscompilation --HG-- rename : libr/magic/d/OpenBSD => libr/magic/d/default/OpenBSD rename : libr/magic/d/archive => libr/magic/d/default/archive rename : libr/magic/d/cafebabe => libr/magic/d/default/cafebabe rename : libr/magic/d/cisco => libr/magic/d/default/cisco rename : libr/magic/d/database => libr/magic/d/default/database rename : libr/magic/d/editors => libr/magic/d/default/editors rename : libr/magic/d/elf => libr/magic/d/default/elf rename : libr/magic/d/filesystems => libr/magic/d/default/filesystems rename : libr/magic/d/flash => libr/magic/d/default/flash rename : libr/magic/d/freebsd => libr/magic/d/default/freebsd rename : libr/magic/d/gimp => libr/magic/d/default/gimp rename : libr/magic/d/images => libr/magic/d/default/images rename : libr/magic/d/java => libr/magic/d/default/java rename : libr/magic/d/jpeg => libr/magic/d/default/jpeg rename : libr/magic/d/linux => libr/magic/d/default/linux rename : libr/magic/d/mail.news => libr/magic/d/default/mail.news rename : libr/magic/d/matroska => libr/magic/d/default/matroska rename : libr/magic/d/mime => libr/magic/d/default/mime rename : libr/magic/d/msdos => libr/magic/d/default/msdos rename : libr/magic/d/netbsd => libr/magic/d/default/netbsd rename : libr/magic/d/pdf => libr/magic/d/default/pdf rename : libr/magic/d/perl => libr/magic/d/default/perl rename : libr/magic/d/python => libr/magic/d/default/python rename : libr/magic/d/riff => libr/magic/d/default/riff rename : libr/magic/d/sniffer => libr/magic/d/default/sniffer rename : libr/magic/d/sql => libr/magic/d/default/sql rename : libr/magic/d/sun => libr/magic/d/default/sun rename : libr/magic/d/uuencode => libr/magic/d/default/uuencode
2011-11-29 02:14:27 +00:00
rmtemps
exit 0