修正 IDA Pro 中的子程序偏移

逆向工程 艾达
2021-06-24 17:53:49

在执行二进制文件的反汇编时,我注意到许多子例程的地址偏移量是错误的。看来2字节地址前面的字节是错误的。例如,在下面的屏幕截图中,反汇编表明函数应该在 0xA5C1E 和 0xA5BCA。我已经仔细检查了原始十六进制转储并确认在 2 字节地址之前有一个“A”字节。值得注意的是,以“A”开头的地址在这个二进制文件中是不可能的,因为它的长度只有 0x7FFFF。根据其他二进制文件的经验,我知道这些函数的真实地址应该分别是 0x25C1E 和 0x25BCA。我还可以确认我有从这些位置开始的子程序。

在此处输入图片说明

我已经反汇编了其他二进制文件(不同的应用程序,相同的处理器)并且没有出现这个问题。但是,我从这个应用程序中反汇编的每个二进制文件都显示了这个问题。

有没有办法在 IDA Pro 中纠正这个问题?它与我的 DPP 寄存器值有什么关系吗?

1个回答

您损坏的地址似乎正好是 0x80000 加上预期地址。

有两种可能:

  • 您的二进制文件打算在 加载0x80000,但您正在将其加载到0x00000.
  • 硬件不会解码超过 19 个地址位,因此0xa5c1e映射到0x25c1e地址总线上,软件使用地址位 19 作为一种标志。