linux-如何反汇编原始MIPS代码?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux-如何反汇编原始MIPS代码?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1791字,纯文字阅读大概需要3分钟。
内容图文
![linux-如何反汇编原始MIPS代码?](/upload/InfoBanner/zyjiaocheng/948/c609453f3289474eb0e7ac3545f20428.jpg)
类似于How do I disassemble raw x86 code?,但是对于MIPS体系结构:我如何使用objdump分解原始MIPS代码?我想查看vmlinux映像中的说明,但现在我必须这样做:
: > x.c
mipsel-linux-gnu-gcc -c -o x.o x.c
mipsel-linux-gnu-objcopy --add-section raw=vmlinux x.o
mipsel-linux-gnu-objcopy --remove-section .comment x.o
mipsel-linux-gnu-objdump -D x.o | less
有更简单的方法吗?我尝试了以下无济于事:
mipsel-linux-gnu-objdump -b elf32-tradlittlemips -mmips -Mgpr-names=O32,cp0-names=mips1,cp0-names=mips1,hwr-names=mips1,reg-names=mips1 -D vmlinux | less
它只是吐出来:
mipsel-linux-gnu-objdump: vmlinux: File format not recognized
如果有帮助,这是一些命令的输出:
$file x.o
x.o: ELF 32-bit LSB relocatable, MIPS, MIPS-I version 1 (SYSV), with unknown capability 0xf41 = 0x756e6700, with unknown capability 0x70100 = 0x1040000, not stripped
$mipsel-linux-gnu-objdump -p x.o
x.o: file format elf32-tradlittlemips
private flags = 1006: [abi=O32] [mips1] [not 32bitmode] [PIC] [CPIC]
目标是AR7 CPU.
解决方法:
嗯,似乎比这容易. -b elf32-tradlittlemips不起作用,因为该文件不是ELF可执行文件,而是二进制文件.因此,要使用的正确选项是-b binary.另一个选项-mmips使objdump将文件识别为MIPS的二进制文件.由于目标计算机是小端字节序,因此我还必须添加-EL以使输出与x.o的输出匹配.
-mmips仅包括基本指令集. AR7拥有一个MIPS32处理器,比仅仅mips的has more instructions还多.要解码这些较新的MIPS32指令,请使用-mmips:isa32.可用ISA的列表可以用objdump -i -m列出.
最后的命令变为:
mipsel-linux-gnu-objdump -b binary -mmips:isa32 -EL -D vmlinux
这将显示$3之类的寄存器,而不是其名称.为了进行调整,我使用了mipsel-linux-gnu-objdump –help中提到的下一个附加选项:
-Mgpr-names=32,cp0-names=mips32,cp0-names=mips32,hwr-names=mips32,reg-names=mips32
阅读后,我选择了mips32:
> http://www.linux-mips.org/wiki/AR7
> http://www.linux-mips.org/wiki/Instruction_Set_Architecture
内容总结
以上是互联网集市为您收集整理的linux-如何反汇编原始MIPS代码?全部内容,希望文章能够帮你解决linux-如何反汇编原始MIPS代码?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。