使用 ROM+外部 RAM 配置将 8051 二进制文件加载到 IDA

逆向工程 艾达 固件 英特尔 只读存储器 8051
2021-06-27 09:18:41

我有 8051 固件文件,8051 ROM 地址可以与外部 RAM 地址重叠(movc 和 movx 解决了这个问题),但是 IDA 不允许重叠地址: 在此处输入图片说明

在本例中,ROM 大小为 0x7000,外部 RAM 大小为 0xFFFF。

我需要外部 RAM 地址,以便我可以重命名某些地址,如何解决此问题?

谢谢。

1个回答

您看到的默认对话框使用所谓的“线性地址”,它们对整个程序来说是全局的,并且不能相交。它最适用于具有统一(冯诺依曼)地址空间的处理器。

由于 8051 是一种具有独立代码和数据存储器的哈佛架构,每一个都从零开始,IDA 通过在线性地址空间中创建不相交的段来模拟它,但以这样一种方式设置段,即数据内部的明显地址段也从 0 开始。您可以通过关闭此对话框并让默认 8051 处理完成其工作来检查它是如何完成的。以类似的方式,您可以为 XRAM 地址空间创建自定义段完成此操作后,要指定值(例如指令操作数)是特定段中的偏移量,您可以使用以下快捷方式:

  • 数据段:O
  • 代码段(实际上是“当前段”):Ctrl-O
  • 任何其他段:Alt-R

这些命令在 Edit|Operand types|Offset 子菜单中可用。