首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何反汇编原始MIPS代码?

如何反汇编原始MIPS代码?
EN

Stack Overflow用户
提问于 2012-03-29 05:45:40
回答 3查看 16K关注 0票数 6

类似于How do I disassemble raw x86 code?,但是对于MIPS架构:如何用objdump反汇编原始MIPS代码?我想检查vmlinux映像中的指令,但现在我必须这样做:

代码语言:javascript
运行
复制
: > 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

有没有更简单的方法呢?我已经尝试了下面的方法,但都没有用:

代码语言:javascript
运行
复制
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

它只是吐出来:

代码语言:javascript
运行
复制
mipsel-linux-gnu-objdump: vmlinux: File format not recognized

如果有帮助,下面是一些命令的输出:

代码语言:javascript
运行
复制
$ 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处理器。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-29 06:23:15

嗯,看起来比这更简单。-b elf32-tradlittlemips无法工作,因为该文件不是ELF可执行文件,而是二进制文件。因此,使用的正确选项是-b binary。另一个选项是,-mmips使objdump将文件识别为MIPS的二进制文件。因为目标机器是小端的,所以我还必须添加-EL以使输出与x.o的输出相匹配。

-mmips只包含基本指令集。AR7有一个MIPS32处理器,它的has more instructions比仅仅mips。要解码这些较新的MIPS32指令,请使用-mmips:isa32。可以使用objdump -i -m列出可用ISA的列表。

最后的命令变成:

代码语言:javascript
运行
复制
mipsel-linux-gnu-objdump -b binary -mmips:isa32 -EL -D vmlinux

这将显示像$3这样的寄存器,而不是它们的名称。为了调整这一点,我使用了mipsel-linux-gnu-objdump --help中提到的下一个附加选项

代码语言:javascript
运行
复制
-Mgpr-names=32,cp0-names=mips32,cp0-names=mips32,hwr-names=mips32,reg-names=mips32

在阅读之后,我选择了mips32

票数 7
EN

Stack Overflow用户

发布于 2012-03-29 05:49:51

???just有什么问题:

代码语言:javascript
运行
复制
mipsel-linux-gnu-gcc -c -o x.o x.c
mipsel-linux-gnu-objdump -D x.o

-D反汇编所有部分的问题是不是代码?那就用-d吧。或者使用-S来显示与源代码交错的程序集(暗示-d)。

或者从gcc那里获取汇编代码:

代码语言:javascript
运行
复制
mipsel-linux-gnu-gcc -S x.c
票数 0
EN

Stack Overflow用户

发布于 2013-08-02 08:14:21

使用ODA,在线反汇编程序:

http://www.onlinedisassembler.com

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9916130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档