我正在拆解打包的 16 位 DOS MZ EXE。
为了对其进行反混淆,我在解包例程结束时在 DOSbox 中设置了一个断点,让它运行,并进行内存转储。通过这种方式,我基本上得到了反混淆的 EXE 图像。然后我在 IDA 中加载了这个图像。
显然,不再有 MZ 头,因此 IDA 无法知道应用程序的入口点和 CS、SS 和其他段寄存器的初始值。但是,我确实知道这些价值观,并且愿意将它们提供给 IDA。为此,我按Alt+G并键入寄存器的值。
但是assume ds:<value>,IDA 没有显示,而是显示
seg000:1AEBC assume es:nothing, ss:nothing, ds:nothing
为什么?
另一个问题。为什么没有设置CS寄存器值的选项?考虑包含近跳转的代码。如果不了解 CS 寄存器的值,IDA 将无法进行反汇编。但我确实知道 CS 在这个特定时刻的价值!如果Segment Register Value对话窗口没有 CS 选项,我该如何向 IDA 提供此信息?