diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2020-05-24 16:48:22 +0200 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2020-05-25 21:57:14 +0200 |
commit | 31c69b6ca1b91e7fd9fd8e14082fd2584c5f538c (patch) | |
tree | 16e789c7d68608831b498f41f54d9482b82a711a /batch/old/genShellcode.sh |
first public release
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'batch/old/genShellcode.sh')
-rwxr-xr-x | batch/old/genShellcode.sh | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/batch/old/genShellcode.sh b/batch/old/genShellcode.sh new file mode 100755 index 0000000..bf0327a --- /dev/null +++ b/batch/old/genShellcode.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -e + +OBJDUMP="$(dirname $0)/../deps/sysroot/bin/i686-w64-mingw32-objdump" +OBJDUMP_ARGS="-z -D" +TMPFILE="$(mktemp)" + + +if [ ! -x ${OBJDUMP} ]; then + echo "$0: ${OBJDUMP} not found!" + false +fi + +if [ "x$1" != "x" -a "x$2" != "x" -a "x$3" != "x" -a "x$4" != "x" ]; then + echo "$0: create tmpfile ${TMPFILE}" + OBJECTFILE="${1}" + OUTPUT="${2}" + DEFINE="${3}" + OBJDUMP_ARGS="${OBJDUMP_ARGS} -j ${4}" + + DO_APPEND=0 + if [ "x$5" != "x" ]; then + echo "$5" | egrep -qi 'append.*=.*true' && DO_APPEND=1 || true + fi + + if [ ! -r ${OBJECTFILE} ]; then + echo "$0: ${OBJECTFILE} not found or not readable" + false + fi + + echo "$0: objdump command: \`${OBJDUMP} ${OBJDUMP_ARGS} ${OBJECTFILE}\`" + export SIZE=0 + if [ ${DO_APPEND} -eq 1 ]; then + echo "$0: APPENDING to ${OUTPUT}" + cp ${OUTPUT} ${TMPFILE} + echo >> ${TMPFILE} + echo '#undef '"${DEFINE}" >> ${TMPFILE} + else + echo '#undef '"${DEFINE}" > ${TMPFILE} + fi + echo -n '#define '"${DEFINE}"' "' >> ${TMPFILE} + # TODO: use objdump -s to show everything (-d shows only valid opcodes) + for i in $(${OBJDUMP} ${OBJDUMP_ARGS} ${OBJECTFILE} |grep "^ " |cut -f2); do + echo -n '\x'$i >>${TMPFILE} + SIZE=$(expr $SIZE + 1) + done + if [ $SIZE -eq 0 ]; then + echo "$0: Whoops! Something went wrong (SIZE=0)." + echo "$0: Check output manually with: \`${OBJDUMP} ${OBJDUMP_ARGS} ${OBJECTFILE}\`" + false + fi + echo '"' >>${TMPFILE} + echo '#undef '"${DEFINE}"'_SIZE' >> ${TMPFILE} + echo '#define '"${DEFINE}"'_SIZE '"${SIZE}" >> ${TMPFILE} + mv ${TMPFILE} ${OUTPUT} + echo "$0: moved ${TMPFILE} to ${OUTPUT}" +else + echo "usage: $0 [OBJECT-FILE or STATIC-LIB] [OUTPUT-HEADER] [OUTPUT-DEFINE] [LOADER-SECTION] [DO-APPEND=[TRUE|FALSE]]" + exit 1 +fi |