From 118c61510ba0d73ccb0bef7304d695abf3226857 Mon Sep 17 00:00:00 2001 From: jdh8d <jdh8d@git.zephyr-software.com> Date: Fri, 15 Feb 2013 20:17:09 +0000 Subject: [PATCH] added support for main obj. as shared object Former-commit-id: b7d1a1d2db318f44e04914b5fbce06237706b144 --- .gitattributes | 1 + tools/is_so.sh | 9 ++++++ tools/ps_analyze.sh | 71 +++++++++++++++++++++++---------------------- tools/ps_run.sh | 1 + 4 files changed, 48 insertions(+), 34 deletions(-) create mode 100755 tools/is_so.sh diff --git a/.gitattributes b/.gitattributes index 22d7ee124..c1862e20e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -147,6 +147,7 @@ tools/getlibs.sh -text tools/getsyms.sh -text tools/grace_utils.sh -text tools/integer_replay.sh -text +tools/is_so.sh -text tools/libc_functions.txt -text tools/manual_cover.sh -text tools/manual_test_import.sh -text diff --git a/tools/is_so.sh b/tools/is_so.sh new file mode 100755 index 000000000..a1cc796c4 --- /dev/null +++ b/tools/is_so.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +file $1 | grep "LSB shared object" > /dev/null + +if [ $? = 0 ]; then + echo 1 +else + echo 0 +fi diff --git a/tools/ps_analyze.sh b/tools/ps_analyze.sh index 3a6189710..e7cd8f290 100755 --- a/tools/ps_analyze.sh +++ b/tools/ps_analyze.sh @@ -278,17 +278,19 @@ perform_step() { step=$1 shift + manditory=$1 + shift command="$*" is_step_on $step if [ $? -eq 0 ]; then - echo Skipping step $step. + echo Skipping step $step. [manditory=$manditory] return 0 fi logfile=logs/$step.log - echo -n Performing step "$step" ... + echo -n Performing step "$step" [manditory=$manditory] ... starttime=`date --iso-8601=seconds` # If verbose is on, tee to a file @@ -533,22 +535,23 @@ mkdir logs # # create a stratafied binary that does pc confinement. # -perform_step stratafy_with_pc_confine sh $STRATA_HOME/tools/pc_confinement/stratafy_with_pc_confine.sh $newname.ncexe $newname.stratafied +perform_step stratafy_with_pc_confine yes sh $STRATA_HOME/tools/pc_confinement/stratafy_with_pc_confine.sh $newname.ncexe $newname.stratafied # # Let's output the modified binary # This binary will really be a shell script that calls the newly stratafied binary # -perform_step create_binary_script $PEASOUP_HOME/tools/do_makepeasoupbinary.sh $name -perform_step heaprand $PEASOUP_HOME/tools/update_env_var.sh STRATA_HEAPRAND 1 -perform_step controlled_exit $PEASOUP_HOME/tools/update_env_var.sh STRATA_CONTROLLED_EXIT 1 -perform_step double_free $PEASOUP_HOME/tools/update_env_var.sh STRATA_DOUBLE_FREE 1 -perform_step pc_confine $PEASOUP_HOME/tools/update_env_var.sh STRATA_PC_CONFINE 1 -perform_step isr $PEASOUP_HOME/tools/update_env_var.sh STRATA_PC_CONFINE_XOR 1 -perform_step watchdog $PEASOUP_HOME/tools/update_env_var.sh STRATA_WATCHDOG $watchdog_val +perform_step create_binary_script yes $PEASOUP_HOME/tools/do_makepeasoupbinary.sh $name +perform_step heaprand no $PEASOUP_HOME/tools/update_env_var.sh STRATA_HEAPRAND 1 +perform_step controlled_exiti no $PEASOUP_HOME/tools/update_env_var.sh STRATA_CONTROLLED_EXIT 1 +perform_step double_free no $PEASOUP_HOME/tools/update_env_var.sh STRATA_DOUBLE_FREE 1 +perform_step pc_confine no $PEASOUP_HOME/tools/update_env_var.sh STRATA_PC_CONFINE 1 +perform_step isr no $PEASOUP_HOME/tools/update_env_var.sh STRATA_PC_CONFINE_XOR 1 +perform_step watchdog no $PEASOUP_HOME/tools/update_env_var.sh STRATA_WATCHDOG $watchdog_val +perform_step is_so yes $PEASOUP_HOME/tools/update_env_var.sh STRATA_IS_SO $($PEASOUP_HOME/tools/is_so.sh a.ncexe) # turn on sign conversion function monitoring -perform_step signconv_func_monitor $PEASOUP_HOME/tools/update_env_var.sh STRATA_NUM_HANDLE 1 +perform_step no signconv_func_monitor $PEASOUP_HOME/tools/update_env_var.sh STRATA_NUM_HANDLE 1 # @@ -563,13 +566,13 @@ STRATA_PC_CONFINE_XOR=0 # # copy the .so files for this exe into a working directory. # -perform_step gather_libraries $PEASOUP_HOME/tools/do_gatherlibs.sh +perform_step gather_libraries yes $PEASOUP_HOME/tools/do_gatherlibs.sh # # Running IDA Pro static analysis phase ... # -perform_step meds_static $PEASOUP_HOME/tools/do_idapro.sh +perform_step meds_static yes $PEASOUP_HOME/tools/do_idapro.sh if [ ! -f $newname.ncexe.annot ] ; then fail_gracefully "idapro step failed, exiting early. Is IDAPRO installed? " fi @@ -578,7 +581,7 @@ fi # # Run concolic engine # -perform_step concolic $PEASOUP_HOME/tools/do_concolic.sh a -z $PEASOUP_UMBRELLA_DIR/grace.conf +perform_step concolic no $PEASOUP_HOME/tools/do_concolic.sh a -z $PEASOUP_UMBRELLA_DIR/grace.conf ## ## Populate IR Database @@ -594,18 +597,18 @@ MD5HASH=`md5sum $newname.ncexe | cut -f1 -d' '` # # register the program # -perform_step pdb_register "$PEASOUP_HOME/tools/db/pdb_register.sh $DB_PROGRAM_NAME `pwd`" registered.id +perform_step pdb_register yes "$PEASOUP_HOME/tools/db/pdb_register.sh $DB_PROGRAM_NAME `pwd`" registered.id varid=`cat registered.id` if [ ! $varid -gt 0 ]; then fail_gracefully "Failed to write Variant into database. Exiting early. Is postgres running? Can $PGUSER access the db?" fi # build basic IR -perform_step fill_in_cfg $SECURITY_TRANSFORMS_HOME/libIRDB/test/fill_in_cfg.exe $varid -perform_step fill_in_indtargs $SECURITY_TRANSFORMS_HOME/libIRDB/test/fill_in_indtargs.exe $varid +perform_step fill_in_cfg yes $SECURITY_TRANSFORMS_HOME/libIRDB/test/fill_in_cfg.exe $varid +perform_step fill_in_indtargs yes $SECURITY_TRANSFORMS_HOME/libIRDB/test/fill_in_indtargs.exe $varid # finally create a clone so we can do some transforms -perform_step clone $SECURITY_TRANSFORMS_HOME/libIRDB/test/clone.exe $varid clone.id +perform_step clone yes $SECURITY_TRANSFORMS_HOME/libIRDB/test/clone.exe $varid clone.id cloneid=`cat clone.id` # @@ -616,21 +619,21 @@ if [ -z "$cloneid" -o ! "$cloneid" -gt 0 ]; then fi # do the basic tranforms we're performing for peasoup -perform_step fix_calls $SECURITY_TRANSFORMS_HOME/libIRDB/test/fix_calls.exe $cloneid +perform_step fix_calls yes $SECURITY_TRANSFORMS_HOME/libIRDB/test/fix_calls.exe $cloneid # look for strings in the binary -perform_step find_strings $SECURITY_TRANSFORMS_HOME/libIRDB/test/find_strings.exe $cloneid +perform_step find_strings no $SECURITY_TRANSFORMS_HOME/libIRDB/test/find_strings.exe $cloneid # # analyze binary for string signatures # -perform_step appfw $PEASOUP_HOME/tools/do_appfw.sh $newname.ncexe logs/find_strings.log +perform_step appfw no $PEASOUP_HOME/tools/do_appfw.sh $newname.ncexe logs/find_strings.log # # Run script to setup manual tests # -perform_step manual_test $PEASOUP_HOME/tools/do_manualtests.sh $name $stratafied_exe $manual_test_script $manual_test_coverage_file +perform_step manual_test no $PEASOUP_HOME/tools/do_manualtests.sh $name $stratafied_exe $manual_test_script $manual_test_coverage_file # FIXME BEN: Please isolate these diff steps into a single script. Pass $? if you need to. @@ -639,34 +642,34 @@ perform_step manual_test $PEASOUP_HOME/tools/do_manualtests.sh $name $stratafied # is_step_on manual_test if [ $? -eq 0 ]; then - perform_step p1transform $PEASOUP_HOME/tools/do_p1transform.sh $cloneid $newname.ncexe $newname.ncexe.annot $PEASOUP_HOME/tools/p1xform_v2.sh $PN_TIMEOUT_VALUE $DO_CANARIES + perform_step p1transform no $PEASOUP_HOME/tools/do_p1transform.sh $cloneid $newname.ncexe $newname.ncexe.annot $PEASOUP_HOME/tools/p1xform_v2.sh $PN_TIMEOUT_VALUE $DO_CANARIES else grep manual_test_import $manual_test_script if [ $? -eq 0 ]; then - perform_step p1transform $PEASOUP_HOME/tools/do_p1transform.sh $cloneid $newname.ncexe $newname.ncexe.annot $PEASOUP_HOME/tools/bed_manual.sh $PN_TIMEOUT_VALUE $DO_CANARIES + perform_step p1transform no $PEASOUP_HOME/tools/do_p1transform.sh $cloneid $newname.ncexe $newname.ncexe.annot $PEASOUP_HOME/tools/bed_manual.sh $PN_TIMEOUT_VALUE $DO_CANARIES else - perform_step p1transform $PEASOUP_HOME/tools/do_p1transform.sh $cloneid $newname.ncexe $newname.ncexe.annot $PEASOUP_HOME/tools/bed_blackbox.sh $PN_TIMEOUT_VALUE $DO_CANARIES + perform_step p1transform no $PEASOUP_HOME/tools/do_p1transform.sh $cloneid $newname.ncexe $newname.ncexe.annot $PEASOUP_HOME/tools/bed_blackbox.sh $PN_TIMEOUT_VALUE $DO_CANARIES fi fi -perform_step integertransform $PEASOUP_HOME/tools/do_integertransform.sh $cloneid $CONCOLIC_DIR $INTEGER_TRANSFORM_TIMEOUT_VALUE -#perform_step calc_conflicts $SECURITY_TRANSFORMS_HOME/libIRDB/test/calc_conflicts.exe $cloneid a.ncexe -perform_step ilr $SECURITY_TRANSFORMS_HOME/libIRDB/test/ilr.exe $cloneid +perform_step integertransform no $PEASOUP_HOME/tools/do_integertransform.sh $cloneid $CONCOLIC_DIR $INTEGER_TRANSFORM_TIMEOUT_VALUE +#perform_step calc_conflicts no $SECURITY_TRANSFORMS_HOME/libIRDB/test/calc_conflicts.exe $cloneid a.ncexe +perform_step ilr no $SECURITY_TRANSFORMS_HOME/libIRDB/test/ilr.exe $cloneid # generate aspri, and assemble it to bspri -perform_step generate_spri $SECURITY_TRANSFORMS_HOME/libIRDB/test/generate_spri.exe $cloneid a.irdb.aspri -perform_step spasm $SECURITY_TRANSFORMS_HOME/tools/spasm/spasm a.irdb.aspri a.irdb.bspri stratafier.o.exe libstrata.so.symbols -perform_step fast_spri $PEASOUP_HOME/tools/fast_spri.sh a.irdb.bspri a.irdb.fbspri +perform_step generate_spri yes $SECURITY_TRANSFORMS_HOME/libIRDB/test/generate_spri.exe $cloneid a.irdb.aspri +perform_step spasm yes $SECURITY_TRANSFORMS_HOME/tools/spasm/spasm a.irdb.aspri a.irdb.bspri stratafier.o.exe libstrata.so.symbols +perform_step fast_spri no $PEASOUP_HOME/tools/fast_spri.sh a.irdb.bspri a.irdb.fbspri # preLoaded_ILR step -perform_step preLoaded_ILR1 $STRATA_HOME/tools/preLoaded_ILR/generate_hashfiles.exe a.irdb.fbspri -perform_step preLoaded_ILR2 $PEASOUP_HOME/tools/generate_relocfile.sh a.irdb.fbspri +perform_step preLoaded_ILR1 no $STRATA_HOME/tools/preLoaded_ILR/generate_hashfiles.exe a.irdb.fbspri +perform_step preLoaded_ILR2 no $PEASOUP_HOME/tools/generate_relocfile.sh a.irdb.fbspri # # remove the parts of the aannotation file not needed at runtime # -perform_step fast_annot $PEASOUP_HOME/tools/fast_annot.sh +perform_step fast_annot no $PEASOUP_HOME/tools/fast_annot.sh # # create a report for all of ps_analyze. diff --git a/tools/ps_run.sh b/tools/ps_run.sh index 9689af762..f684bb1e0 100755 --- a/tools/ps_run.sh +++ b/tools/ps_run.sh @@ -35,6 +35,7 @@ STRATA_PC_CONFINE=0 STRATA_PC_CONFINE_XOR=0 STRATA_PC_CONFINE_XOR_KEY_LENGTH=1024 STRATA_ANNOT_FILE=$datapath/a.ncexe.annot +STRATA_IS_SO=0 STRATA_SIEVE=1 STRATA_RC=1 STRATA_PARTIAL_INLINING=0 -- GitLab