【发布时间】:2021-07-12 03:36:36
【问题描述】:
我想反汇编一个自己编写的 Turbo Pascal V3 程序的最终版本,即一个简单的 .COM 文件,为此我挖出了我的旧 (AD 2004) 注册 IDA Pro (V4.7.0.831) 的副本。超过 10 年没有使用它,也无法访问他们的论坛,我现在陷入困境。 .COM 文件加载后,IDA 很高兴地对其进行了反汇编,但它只创建了一个段,而我(不再)知道如何创建数据段。 TP3 手册中有一些信息,在 DOXBox-X 中使用 David Lindauer 的 GRDB 允许我单步执行 RTL 初始化代码,这表明它设置了 DS 和 SS,但它对我没有帮助在 IDA 中设置这些细分。
我尝试了“创建段”选项,但我无法输入起始地址、结束地址和基址所需的值,“类”可能是“数据”,单个“seg000”的一次IDA 创建的是 CODE,开始 @ 0x0100,结束 @ 0xD623,这导致我假设要创建的“seg001”应该从 0x0000 开始,在 0xffff 结束,并且具有 0xd63(段落)的基数,但结果在“Bad segment base:segment would have bytes with a negative offset”弹出窗口中。
尝试 start @ 0xd630,end @ 0x1d630,以 0x0000 为基数创建一个段,但它看起来像
seg000:D622
seg001:C8C00 ; ---------------------------------------------------------------------------
seg001:C8C00
seg001:C8C00 ; Segment type: Regular
seg001:C8C00 seg001 segment byte public '' use16
seg001:C8C00 assume cs:seg001
seg001:C8C00 ;org 0C8C00h
seg001:C8C00 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
这可能是正确的,但“org 0c8c00”对我来说完全没有意义。
如果你能帮助我,我将不胜感激,为了帮助你,我已经上传了一个 RAR 存档,其中包含完整的源、生成的“lift.com”可执行文件和输入文件到我的 Google 驱动器@https://drive.google.com/drive/folders/0B0oygbfs7DsVVWNBZWpqaHRHX3c?usp=sharing , 查找 lift16bit.rar 请注意,该代码不会用比 Turbo Pascal 3 更高级的东西编译,在我的例子中,它是用 TP 3.01a 编译的。
【问题讨论】:
标签: disassembly ida turbo-pascal