让radare2正确加载z80二进制文件

逆向工程 拆卸 雷达2 只读存储器
2021-06-17 20:28:30

我正在尝试拆卸一些世嘉 Master System rom。

为此,我检查了旧 rom 中额外的 512 个字节,一旦我确定它们不在那里,我就继续在其中一个上运行radare2,如下所示:

r2 -A somerom.sms

Radare2 正确检测文件签名并将其加载为 z80 代码,但是当我进入可视模式时,它将指令显示为字节宽偏移量(在每个无效地址处添加大量垃圾指令)但 z80 pc 有 2 个字节宽的步长/指示。

我的问题是:有没有办法过滤那些额外的地址,以便正确显示代码?

我试过使用:

r2 -A -b 16 somerom.sms

但它不会改变任何东西。

1个回答

正如我所评论的,如果您使用的不是最新版本,radare2 可以毫无问题地打开 sms 文件,请尝试更新radare2 或降级到旧版本

下面的输出是来自 3.3.0 的最后一个 32 位版本的radare2

:\>radare2 -q -c "aa;pd 10" ak.sms
Checksum: 0x1cd0
ProductCode: 005067
Console: Sega Master System
Region: Export
RomSize: 128KB
/ (fcn) fcn.00000000 85
|   fcn.00000000 ();
|           0x00000000      f3             di
|           0x00000001      ed56           im 1
|           0x00000003      31f0df         ld sp, 0xdff0
|       ,=< 0x00000006      187d           jr 0x7d
        |   0x00000008      7b             ld a, e
        |   0x00000009      d3bf           out [0xbf], a
        |   0x0000000b      7a             ld a, d
        |   0x0000000c      d3bf           out [0xbf], a
        |   0x0000000e      c9             ret
        |   0x0000000f      ff             rst 0x38