uImage dump成反汇编
通过Linux调试使用的uImage文件,进行反汇编查看CPU的具体执行指令
uImage的组成
1 | +------+-----------------------------+ |
解压
如果时zImage可以直接进行解压操作
去除64k头信息
1 | dd if=uImage of=Image.gz bs=1 skip=64 |
zip解压
1 | gunzip Image.gz |
生成’Image’,CPU执行的二进制代码
获取二进制的执行指令码
通过gcc的工具将二进制的指令码反汇编,CPU的取指是以word进行,也就是每一个wrod对应一条指令
1 |
|
使用:
1 | gcc m.c -o m |
Image.c
1 |
|
反汇编
1 | $mips-linux-gnu-gcc Image.c -o Image |
Image.S
1 | 00400640 <main>: |
注意:无法进行函数跳转的判断
将PC指针替换成内核入口地址
1 | #!/usr/bin/env python |
1 | python a.py > uImage.S |
注意:文件权限问题,可以无法读取文件数据
结果
uImage.S
1 | 800103f8: 00000000 nop |
vmlinux.S
1 | 80010400 <run_init_process>: |