软件抗搅扰经历之一:用“软件圈套+程序口令”抵挡PC指针的弹飞
当CPU遭到外界搅扰,有时PC指针会飞到另一段程序中,或跳到空白段去。
其实,假如PC指针飞到空白段去,倒也好处理。只要在空白段建立软件圈套(阻拦指令),将程序阻拦到初始化段或程序错误处理段。
可是,假如PC指针飞到另一段程序中去了,体系怎么办?小匠在这里引荐一种办法——程序口令,思路如下:
1、首要,程序有必要模块化。每个模块(子程序)履行一个功用。每个模块只要一个出口(RET)。
2、建立一个模块(子程序)ID寄存器。
3、为每个子程序装备一个仅有的ID号码。
4、每逢子程序履行结束,要回来(RET)之前,先将簿本程序的ID号送入 ID寄存器
5、回来到上级程序后,先判别ID寄存器中的ID号。假如正确,则持续履行;假如不正确,则表明PC指针有或许现已跳错了,子程序没有按估计的出口回来,这时将程序阻拦到初始化段或程序错误处理段。
这种办法,如同在程序中建立了若干个岗哨,每次调用子程序回来后,都要对口令(ID号),验明正身后再放行。再合作软件圈套,基本上能够将大多数PC指针弹飞的现象检测到。
到了程序错误处理段,要杀要剐(冷启动仍是热启动)就由您了。