Initial commit
This commit is contained in:
73
InterfaceDiscovery.sh
Normal file
73
InterfaceDiscovery.sh
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/bin/bash
|
||||
|
||||
function check_tool()
|
||||
{
|
||||
tool=$1
|
||||
cmd=$2
|
||||
|
||||
a=`${cmd} 2>/dev/null`
|
||||
if [ ! $? -eq 0 ] ; then
|
||||
echo "${tool} is missing"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function check_tools()
|
||||
{
|
||||
check_tool "readelf" "readelf --version"
|
||||
check_tool "objdump" "objdump --version"
|
||||
check_tool "c++filt" "c++filt --version"
|
||||
|
||||
if [ ! -e ./vtable-dumper ] ; then
|
||||
check_tool "git" "git --version"
|
||||
check_tool "make" "make --version"
|
||||
check_tool "g++" "g++ --version"
|
||||
fi
|
||||
}
|
||||
|
||||
TARGET=$1
|
||||
readelf_target="${TARGET}.readelf"
|
||||
sections_target="${TARGET}.sections"
|
||||
vtable_target="${TARGET}.vtable"
|
||||
|
||||
if [ ! -f "${TARGET}" ] ; then
|
||||
echo "$0 <target>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
check_tools
|
||||
|
||||
if [ ${TARGET} -nt ${readelf_target} ] ; then
|
||||
echo "Regenerating ${readelf_target}"
|
||||
$((readelf -sW ${TARGET}|c++filt > ${readelf_target}))
|
||||
fi
|
||||
|
||||
if [ ${TARGET} -nt ${sections_target} ] ; then
|
||||
echo "Regenerating ${sections_target}"
|
||||
$((readelf --sections ${TARGET}|c++filt > ${sections_target}))
|
||||
fi
|
||||
|
||||
VTABLE_ARG="-V ${vtable_target}"
|
||||
if [ ${TARGET} -nt ${vtable_target} ] ; then
|
||||
`objdump -d ${TARGET} 2>/dev/null`
|
||||
if [ ! $? -eq 0 ]; then
|
||||
echo "Unable to do objdump, maybe ${TARGET} is for another platform"
|
||||
VTABLE_ARG=""
|
||||
else
|
||||
if [ ! -e ./vtable-dumper/vtable-dumper ] ; then
|
||||
git clone XXX || exit 1
|
||||
cd ./vtable-dumper
|
||||
make
|
||||
cd -
|
||||
fi
|
||||
if [ -x ./vtable-dumper/vtable-dumper ] ; then
|
||||
echo "Regenerating ${vtable_target}"
|
||||
$((./vtable-dumper/vtable-dumper --demangle ${TARGET}|c++filt > ${vtable_target}))
|
||||
else
|
||||
echo "./vtable-dumper not available"
|
||||
VTABLE_ARG=""
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
./InterfaceDiscovery.py -f ${TARGET} -S ${readelf_target} -s ${sections_target} ${VTABLE_ARG} -c
|
||||
Reference in New Issue
Block a user