如何引用不同的段?

逆向工程 吉德拉 地址 分割
2021-07-02 02:09:15

我正在对一个非常古老的 LE MS-DOS 二进制文件进行逆向工程,并让 Ghidra 相信文件中有两个段,一个是代码段,另一个是数据段。

现在,当我在代码段的函数中查看反汇编代码时,我看到了:

   cseg:00074b82 66 c7 05        MOV        word ptr [DAT_00002670],0x1a00
                 70 26 00 
                 00 00 1a

问题是我不能用. DAT_00002670,因为Ghidra认为它是对代码段的引用,但实际上它是通过DS寄存器对数据段的引用,所以ds:0x2670而不是cs:0x2670.

我尝试使用参考编辑器编辑参考,但没有设置目标段的选项。

如何更改引用,以便 Ghidra 识别它转到数据段?

1个回答

您可以覆盖引用的地址,例如加载可执行文件时数据段从 0x90000 开始。我在内存映射中指定了它。

当我将引用的地址设置为 0x92670 而不是 0x2670 时,Ghidra 发现 MOV 将转到数据段。

然而,反编译器似乎并没有接受。

编辑:

我现在已经将我的数据段重新映射到地址 0x00000。这样反编译器会选择引用:)。

我不得不将代码段移到其他地方,但这似乎不是问题。