File tree 1 file changed +18
-12
lines changed
1 file changed +18
-12
lines changed Original file line number Diff line number Diff line change @@ -7,18 +7,24 @@ if [ -z "${OAT}" ]; then
7
7
echo " Usage: $0 <file.oat>"
8
8
exit 0
9
9
fi
10
- HIT= $( r2 -n -q -c ' / dex\n035' " ${OAT} " 2> /dev/null | grep hit0_0 | awk ' {print $1}' )
11
- if [ -z " ${HIT} " ]; then
12
- echo " [-] ERROR: Can't find dex header "
10
+ HITS=( $( r2 -n -q -c ' / dex\n035' " ${OAT} " 2> /dev/null | grep hit | awk ' {print $1}' ) )
11
+ if [ ${ # HITS[@]} -eq 0 ]; then
12
+ echo " [-] ERROR: Can't find dex headers "
13
13
exit 1
14
+ elif [ ${# HITS[@]} -eq 1 ]; then
15
+ echo " [+] DEX header found at address: ${HITS[0]} "
14
16
else
15
- echo " [+] DEX header found at address: ${HIT} "
16
- fi
17
- SIZE=$( r2 -n -q -c " pf i @${HIT} +32 ~[2]" " ${OAT} " 2> /dev/null)
18
- echo " [+] Dex file size: ${SIZE} bytes"
19
- r2 -q -c " pr ${SIZE} @${HIT} > ${OAT} .dex" " ${OAT} " 2> /dev/null
20
- if [ $? -eq 0 ]; then
21
- echo " [+] Dex file dumped to: ${OAT} .dex"
22
- else
23
- echo " [-] ERROR: Something went wrong :("
17
+ echo " [+] Multiple DEX headers found at addresses:"
18
+ for addr in ${HITS[@]} ; do echo " $addr " ; done
24
19
fi
20
+
21
+ for DEX_ADDR in ${HITS[@]} ; do
22
+ SIZE=$( r2 -n -q -c " pf i @${DEX_ADDR} +32 ~[2]" " ${OAT} " 2> /dev/null)
23
+ echo " [+] Dex file size: ${SIZE} bytes"
24
+ r2 -q -c " pr ${SIZE} @${DEX_ADDR} > ${OAT} .${DEX_ADDR} .dex" " ${OAT} " 2> /dev/null
25
+ if [ $? -eq 0 ]; then
26
+ echo " [+] Dex file dumped to: ${OAT} .${DEX_ADDR} .dex"
27
+ else
28
+ echo " [-] ERROR: Something went wrong :("
29
+ fi
30
+ done
You can’t perform that action at this time.
0 commit comments