防止MSCOPY一类脱壳工具解密的一个方法

Author: 福建 黄云燕 Date: 1996-11-01

        笔者在分析RCOPY,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一类脱壳工具的解密。