如何让 IDA Pro Free 自动更改 retf 上的段?

逆向工程 艾达 拆卸 工具 x86
2021-06-19 11:15:40

我一直无法让 IDA pro 对平面 16 位二进制(引导加载程序)文件进行简单的反汇编。我才刚刚开始,似乎比应该的要难。

有一组简单的指令,可以

seg000:7C5D                 push    7C0h
seg000:7C60                 pop     ds
seg000:7C61                 assume ds:nothing
seg000:7C61                 push    ds
seg000:7C62                 push    (offset unk_7C66 - offset loc_7C00)
seg000:7C65                 retf
seg000:7C65 ; --------------------------------------------------------------------------
seg000:7C66 unk_7C66        db  88h ; ê             ; DATA XREF: seg000:7C62o

就在push 7c0h; pop ds它下面说assume ds:nothingretf实际上使用堆栈中的值来设置段和偏移量。有没有办法手动启用此类分析?有没有更智能的反汇编器?我在跟随流程时遇到了麻烦,而 IDA 根本没有帮助。

1个回答

很抱歉在半年后提出这个问题;希望这个问题仍然相关。

如果这种情况发生在多个地方,我建议编写一个简单的 IDC 脚本来解决该问题。该脚本将:

  • 匹配push/pop/push/push/retf指令序列;
  • 设置从retf指令到计算地址的代码交叉引用;
  • 发表评论;
  • 标记 IDA 分析的目的地(可选,我认为 IDA 应该在创建外部参照后自动开始探索)。

这应该可以解决手头的问题。不幸的是,IDA 并不像我们希望的那样聪明。