summaryrefslogtreecommitdiff
path: root/tools/ffuzzer/ffuzzer.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/ffuzzer/ffuzzer.sh')
-rw-r--r--tools/ffuzzer/ffuzzer.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/tools/ffuzzer/ffuzzer.sh b/tools/ffuzzer/ffuzzer.sh
new file mode 100644
index 0000000..aab0705
--- /dev/null
+++ b/tools/ffuzzer/ffuzzer.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+MAX_FORMATS=20
+
+export PYTHONPATH=$(readlink -f "$PWD/../../plugins/pychrysa/.libs")
+
+if [ ! -e "$PYTHONPATH/pychrysalide.so" ]; then
+ echo '[!] PyChrysalide module not found, exiting...'
+ exit 1
+else
+ echo "[i] PyChrysalide module found in $PYTHONPATH."
+fi
+
+which melkor 2>&1 > /dev/null
+
+if [ "$?" -ne 0 ]; then
+ echo '[!] melkor not found, exiting...'
+ exit 1
+else
+ echo '[i] melkor found!'
+fi
+
+if [ -z "$FFUZZ_TEMPLATE" ]; then
+ echo '[!] $FFUZZ_TEMPLATE is not set, exiting...'
+ exit 1
+else
+ echo "[i] Using $FFUZZ_TEMPLATE as template."
+fi
+
+WORKING_DIR="orcs_$(basename $FFUZZ_TEMPLATE)"
+rm -rf $WORKING_DIR
+
+melkor -A -n $MAX_FORMATS -l 15 -q $FFUZZ_TEMPLATE
+
+ulimit -c unlimited
+
+cd $WORKING_DIR
+
+chmod a+x *
+chmod a-x Report_*
+
+core_count=0
+
+for f in `find . -type f -perm +111`; do
+
+ target=`basename $f`
+
+ echo "[*] Processing '$WORKING_DIR/$target'..."
+
+ python3-dbg ../process.py $target > /dev/null
+
+ if [ "$?" -eq 0 ]; then
+ echo ' --> disassembly done!'
+ fi
+
+ if [ -e core ]; then
+ echo ' --> renaming core...'
+ mv core $target.core
+ core_count=$((core_count + 1))
+ fi
+
+done
+
+echo '[i] Done.'
+
+echo "[i] Got $core_count core(s) for $MAX_FORMATS input files."