Dissasemble 68xx代码没有入口点向量

时间:2017-06-01 21:55:05

标签: 68hc12 68hc11

我正在尝试从包含68xx(68hc12之类)微控制器的旧收音机中反汇编代码。问题是,我没有访问ROM顶部micro的中断向量,所以我不知道从哪里开始看。我只有顶部下面的代码。有一些建议在哪里或如何在代码数据中找到有意义的例程?

1 个答案:

答案 0 :(得分:1)

在不知道复位向量指向何处的情况下,您无法可靠地进行反汇编。但是,你可以做的是尝试通过消除所有那些不可能成为起点的其他地址来缩小可能的重置地址范围。

因此,鉴于存储器映射中包含有效操作码的任何地址都是潜在的重置点,您需要将其消除,或者将其保留以供进一步分析。

对于68HC11的情况,您可以通过查找具有合法操作数值的LDS指令(即指向或靠近可用RAM的顶部 - 如果有多个RAM库,然后到任何一个)来尝试猜测入口点。 )。

如果您知道设备的完整存储器映射,即,如果使用外部存储器,其映射和可能的映射外围设备(例如,LCD),则可能有所帮助。你也知道CONFIG注册内容吗?

LDS指令通常是第一条指令,或者之后关闭(因此当您认为最终选择了重置地址时,请回顾一些指令)。这里的问题是一些数据可能偶然出现为LDS指令,因此您可能最终得到多个可能有效的入口点。当然,其中只有一个是有效的。

您可以通过从每个LDS指令开始反汇编指令来进一步消除,直到您遇到非法操作码(即显然不是有效的代码序列,但是看起来像操作码的意外数据排列),或者您看到一系列68HC11初始化中常用的指令。这些涉及(通常)初始化任何一个或多个寄存器BPROT,OPTION,SCI,INIT(大多数部分为103D,但部分为3D),等等。

您可以编写一个相对较小的脚本(例如,在Lua中)来执行内存映射的基本扫描,并生成一组(希望很小)潜在的重置点,以便使用真正的反汇编程序进一步检查,以获得类似的提示我提到过。

现在,一旦你找到了重置向量,工作就会变得容易些,但是你仍然需要弄清楚任何中断处理程序的位置。为此你的提示是一个RTI指令和任何通常应该确认它处理的特定中断的代码。

希望这有帮助。