我有一个 2 MB 的可执行文件,我正在尝试对其进行逆向工程。它在 16 位 8086 CPU 上执行。
段从 4000 (0x140000) 到 F000 (0x1F0000)。
我正在尝试映射 Program Segmentation 窗口中的段,但是这样做时,在将入口点转换为代码时无法解析调用/跳转操作的地址。
以最后一段为例,我设置起始地址为0x1F0000,结束地址为0x200000。我将基数设置为 0xF000,因为这是机器代码中的引用方式。
我对其他段做同样的处理,包括问题段 (0xD000 -> 0x1D0000)。
转换为代码时,结果行解析如下:
jmp far ptr 0D000h:1Ah
这正如预期的那样,跳转到段 0xD000,偏移量为 0x1A,但是 IDA 对此并不满意,用 NONAME 和 BOUNDS 错误抱怨它。
我不知道如何在 IDA 中正确地映射它。有人可以指出我正确的方向吗?
[编辑]
作为参考,我已经有了要映射的段的完整列表及其二进制地址:
2000:0x1F0000
3000:0x1F0000
4000:0x140000
5000:0x150000
6000:0x160000
7000:0x170000
8000:0x180000
9000:0x190000
A000:0x1A0000
B000:0x1B0000
C000:0x1C0000
D000:0x1D0000
E000:0x1E0000
F000:0x1F0000