Skip to content
Snippets Groups Projects
Commit b3c712ef authored by Clark Coleman's avatar Clark Coleman
Browse files

Add shell script for use of FastDeadregs mode in STARS/IDA.

parent b2763719
No related branches found
No related tags found
No related merge requests found
Pipeline #17934 passed
#!/bin/sh
# Make terminal ansi-color
export TVOPT=ansi
# Fix screwed-up LD environment on power machines.
# export LD_LIBRARY_PATH=/uf1/jdh8d/RA/NICECAP/idapro_lib/
export LD_LIBRARY_PATH=${IDAROOT}
# Set IDA path.
export IDADIR=$IDAROOT
# Make sure that the idal executable can be reached from PATH.
export PATH=$PATH:$IDADIR
export STARS_ROOT_FILENAME=$1
export IDALOG=$1.log
# export IDALOG_SILENT=1
# Extract the code addresses with objdump.
objdump -d --prefix-addresses $1 | grep "^[0-9]" > $1.SMPobjdump
# Extract the exception-handling function target addresses.
# dwarfdump -F $1 | grep "^<" | cut --delimiter="<" --field=3 | cut --delimiter=":" --field=1 | cut --bytes 4-10 > $1.eh_frame_addrs
# Make readelf do the same thing as the above dwarfdump command, to
# eliminate configuration dependence on dwarfdump.
readelf -wF $1 | grep "pc=" | cut --delimiter="=" --field=3 | cut --delimiter="." --field=1 > $1.eh_frame_addrs
if [ "${IDAROOT}"X = "X" ]; then echo Please set IDAROOT; exit 1; fi
if [ ! -f ${IDAROOT}/libida.so ]; then echo IDAROOT is set poorly, please fix.; exit 1; fi
# remove tmp files
rm -f $1.id? $1.{i64,nam,til,log,syms}
rm -f `basename $1 .psexe`.{i64,nam,til} `basename $1 .psexe`.id?
rm -f `basename $1 .ncexe`.{i64,nam,til} `basename $1 .ncexe`.id?
rm -f `basename $1 .exe`.{i64,nam,til} `basename $1 .exe`.id?
# old_stty=`stty -g`
# Run the linux IDA Pro with the SMPStaticAnalyzer plugin.
# jdh - added -B for batch mode, avoids any prompts.
# jdh - note: can't use -B, as the plugin doesn't run!
# TVHEADLESS=1 time ${IDAROOT}/idat64 -A -Telf -OSMPStaticAnalyzer:run $1 2>&1 >/dev/null
# TVHEADLESS=1 time ${IDAROOT}/idat64 -A -SSMP.idc -OSMPStaticAnalyzer:ShadowFuncPtrs:ShadowArgs:ImproveCFG:AnalyzeLoops:SCCP:NoGenAsm $1 > $1.idaoutput
# TVHEADLESS=1 time ${IDAROOT}/idat64 -A -SSMP7noasm.idc -OSMPStaticAnalyzer:ShadowFuncPtrs:ShadowArgs:ImproveCFG:AnalyzeLoops:SCCP:NoGenAsm $1 > $1.idaoutput
TVHEADLESS=1 time ${IDAROOT}/idat64 -A -SSMP7noasm.idc -OSMPStaticAnalyzer:ShadowFuncPtrs:ShadowArgs:ImproveCFG:NoGenAsm:FastDeadRegs $1 > $1.idaoutput
# TVHEADLESS=1 time ${IDAROOT}/idat64 -A -SSMP7.idc -OSMPStaticAnalyzer:ShadowFuncPtrs:ShadowArgs:ImproveCFG:AnalyzeLoops:SCCP:NoGenAsm $1 > $1.idaoutput
# TVHEADLESS=1 valgrind -v --leak-check=full --show-reachable=yes --track-origins=yes --log-file=$1.valgrind.log ${IDAROOT}/idat64 -A -SSMP7.idc $1
# SMP seems to mess up the terminal, using this to fix it.
# /usr/bin/reset
# stty $old_stty
# Get the output file SMP.syms into $1.syms.
# mv SMP.annot $1.annot
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment