反汇编uimage和查看符号表的方法

时间:2021-07-21 06:04:19

当只有uImage,而没有vmlinux,遇到问题时,可以通过这样的方法来查看反汇编。

1. 从uImage中提到压缩后的image

用UE打开uImage文件,找到1f 8b位置,如下,从0x58d4开始是gzip压缩的文件,使用dd将前面内容截掉。

000058c0h: 75 6E 63 6F 6D 70 72 65 73 73 69 6F 6E 20 65 72 ; uncompression er
000058d0h: 72 6F 72 00 1F 8B 08 00 00 00 00 00 02 03 E4 FD ; ror..?.......潺
000058e0h: 09 98 54 D5 B5 37 0E EF 53 43 77 75 77 D1 7D 7A ; .楾盏7.颯Cwuw複z
000058f0h: 40 5A 40 28 06 15 05 B5 18 54 62 50 0A 45 21 69 ; @Z@(...?TbP.E!i


2. 解压得到原始image

gzip -dc zimage > image


3. 反汇编

arm-linux-objcopy --change-addresses=0x80008000 -I binary -O elf32-littlearm -B arm image out
arm-linux-objdump -D out > dump.dis


4. 内核符号表

cat /proc/kallsyms可列出内核中所有的符号和对应的地址。

android下如果地址为0,需要输入:

echo 0 > /proc/sys/kernel/kptr_restrict