防止MSCOPY一类脱壳工具解密的一个方法
在程序没执行任何中断的开始部分加入下列化码:(假设ES为PSP段值)
MOV AX,ES;取PSP值
XOR AX,OABCDH;变换
MOV SAVE,AX;保存
在程序调用第一个中断后,在程序流程的必经之处加入下列代码:(设ES为PSP段值)
MOV AX,ES;取PSP值
XOR AX,OABCDH;还原
CMP SAVE,AX;比较
JNZ ERROR-EXIT;错误出口
若程序未经脱壳,则前面的第一部分代码可以被执行,这样程序可以正常运行,但一旦被脱壳后,第一部分代码未被执行,SAVE的值始终是一定值。这样就会将程序引入错误出口中去。
上述的第二部分代码可加在其他的子程序上,这样在外面再用其他加密工具加密后的受保护程序可以有效对抗RCOPY,MSCOPY一类脱壳工具的解密。