我试图找到myfunc
可执行文件中的位置:
#includevoid myfunc(){ printf("Hello"); } int main(){ }
我写了这个脚本:
#!/bin/bash -x start=$(nm -S a.out|grep -w _start) start_addr=$(echo $start | awk '{print $1}') myfun=$(nm -S a.out|grep $1) myfun_addr=$(echo $myfun | awk '{print $1}') myfun_length=$(echo $myfun | awk '{print $2}') echo $myfun_length myfun_end=$(echo "obase=16;ibase=16;$myfun_addr + $myfun_length" | bc) offset=$(echo "obase=16;ibase=16;$myfun_addr - $start_addr" | bc)
最后一行运行,但前面的行没有:
++ echo 'obase=16;ibase=16;0000000000400900 + 00000000000000bc' ++ bc (standard_in) 1: syntax error + myfun_end= ++ echo 'obase=16;ibase=16;0000000000400900 - 0000000000400710' ++ bc + offset=1F0
pmg.. 6
bc中的十六进制数用大写字母表示.
尝试添加tr
一些管道
... | tr "a-z" "A-Z" | ...
不要使用IBASE和OBASE,这些必须是小写的.
bc中的十六进制数用大写字母表示.
尝试添加tr
一些管道
... | tr "a-z" "A-Z" | ...
不要使用IBASE和OBASE,这些必须是小写的.