Лабораторная работа №12 / bin
.doc#!/bin/bash
case $1 in
-1)echo "Vivod vseh ELF failov v deriktorii" $2
if ! [ -d $dir ]
then
echo "$2 ne yavlaetsa directoriey"
fi
in_dir=$(ls $2)
for file in $in_dir
do
if (file $2/$file | grep ELF)
then echo $2/$file "-ELF file"
fi
done;;
-2)echo "Tochka vhoda ispolnaemogo fayla"
if ! [ -f $2 ]
then
echo "$2 ne yavlaetsa faylom"
fi
`objdump -f $2 > 1.txt`
start=`tail -c 10 1.txt`
rm 1.txt
start=`hex2dec $start`
stop=`hex2dec $start +10`
objdump -d --start-address=$start --stop-address=$stop;;
-3)echo "Vivod vseh sekciy ELF fayla" $2
if ! [ -f $2 ]
then
echo "Parametr ne yavlaetsa filom"
fi
readelf -S $2;;
-4)echo "Proverka nalichiya stroki" $3 "v sekcii .dynstr fayla" $2
objdump -d -j .dynstr $2>f1
if (grep $3 f1)
then
echo "Sroka v sekcii presutstvuet."
else
echo "Stroki v sekcii ne obnarujeno."
fi
rm f1;;
-5)echo "Obyedenenie strok iz sekciy .dynstr v fayle dynstr_file"
if [ ! -d $2 ]
then
echo "$2 ne yavlaetsa directoriey"
fi
in_dir=$(ls $2)
for file in $in_dir
do
if (file $2/$file | grep ELF)
then
objdump -d -j .dynstr $2/$file>>dynstr_file
fi
done;;
-6)echo "Spisok READ_ONLY sekciy i ih summarniy razmer"
if ! [ -f $2 ]
then
echo "$2 Ne yavlaetsa faylom"
fi
readelf -S $2 | grep -v W >tmp
cut -c 58-64 tmp >tmp1
head -n 2 tmp1>tmp
sum=0
for sizeHex in `grep "" tmp1`
do
sizeDec=`hex2dec $sizeHex`
sum=`expr $sum + $sizeDec`
done
echo "Summarniy razmer sekciy: $sum"
rm tmp
rm tmp1;;
-7)echo "Spisok neopredelennih simvolov"
if ! [ -f $2 ]
then
echo "$2 ne yavlaetsa faylom"
fi
nm -u $2;;
-8)echo "Vivod asm koda dla EXEC faila"
readelf -h $2 | grep -w EXEC
if [ $? ]
then
objdump -d --start-address=$3 --stop-address=$4 $2
else
echo "Error! Eto ne EXEC file!"
fi;;
-HELP)echo "Perviy parametr - vibor deystviya:"
echo "-1 - Vivod vseh ELF faylov v zadannoy derictorii"
echo "-2 - Vivod tochki vhoda zadannogo fayla"
echo "-3 - Vivod vseh sekciy zadannogo ELF fayla"
echo "-4 - Proverka nalichiya stroki v sekcii .dynstr zadannogo fayla"
echo "-5 - Obyedinenie strok iz sekciy .dynstr v fayle dynstr_file"
echo "-6 - Spisok READ_ONLY sekciy i ih summarniy razmer"
echo "-7 - Spisok neopredelennih simvolov"
echo "-8 - Vivod asm koda dla EXEC faila";;
*)echo "Oshibka v parametrah. Vizovite -HELP dla spravki.";;
esac