IDA Pro,如何强行拆解“mips 32”而不是“mips 16”?

逆向工程 艾达 二进制 米普
2021-06-21 13:57:49

在反汇编 mips 二进制文件时,IDA Pro 尝试反汇编为mips 16模式,即使它是mips 32ISA。
下面是那个代码片段。

.text:XXXXXXXX       .set nomips16 # <= ??
.text:XXXXXXXX 3C    .byte 0x3C        
.text:XXXXXXXX 02    .byte    2
.text:XXXXXXXX       .set mips16   # <= ??
.text:XXXXXXXX 80    .byte 0x80
.text:XXXXXXXX 87    .byte 0x87
.text:XXXXXXXX 8C    .byte 0x8C
.text:XXXXXXXX 42    .byte 0x42 
...

IDA随意设置这个为mips16,这里反复反汇编为mips16。
这让我发疯。

问题:
这里如何强行拆解为mips 32ISA?
(手动?还是自动使用 IDA 插件?)

1个回答

两种选择:

  1. 在该.set mips16行,按Alt-G,选择 mips16 并将值设置为 0。
    在此处输入图片说明
  2. Ctrl-G显示段寄存器更改点列表,选择 mips16 列表并删除值为 1 的错误条目。 在此处输入图片说明

注意:最好在更改 mips16 伪寄存器值的地址处没有现有指令,因此建议先取消定义这些区域,然后在适当的 ISA 中重新创建指令。