解密工具RCOPY03

Author: 天津 刘军 Date: 1995-03-24

        RCOPY03的作者匠心独具,解决了如何对已重定位的可执行文件重新建立一个重定位表这一关键技术,采用特洛依木马技术,将从内存中截获的程序重建为一个可重定位的EXE文件。由于RCOPY03重建的是一个可重定位的EXE文件,因而经其解码的文件可在任何与原程序相同的其他环境下使用,克服了GB.RCOPY02拷贝出来的副本受DOS版本、显示方式,及其他硬件环境限制的缺点。
        让我们来看一看RCOPY03是如何工作的:
        当我们用常规的C、PASCAL、汇编等语言编制了一个应用程序之后,最后都将编译成一个可执行的EXE或COM文件,这种文件的执行流程若非人工精心地打“补丁”,很难修改。这样,当一些加密工具等对其进行加密时,只能是先将这种二进制代码进行复杂的变换,然后另外加一上段自己的用于逆变换的外壳程序,这段程序通常就在于读软硬盘上的“指纹”、各种软件狗或加密卡上的“密码”等。一旦“壳”运行正常,再解码原来的可执行文件,才能使之正常执行。因此,不管“外壳”的程序包得如何严密,它最终在内存中都必须把原程序自动还原。否则,被“加壳”的程序便不能运行。因而,这就使RCOPY03有了可趁之机,当被加密的程序运行到已解解码的适当阶段,反岗位存中的二进制代码整理出一个EXE文件来,便可得到一个已去“壳”的可执行程序。以后这个已去壳的程序运行时,就无需再经过这段“壳”程序的运行过程了,从而达到解密的目的。
        那么,RCOPY03如何选择程序已去壳并已解码的关键点呢?
        RCOPY03通过在目标程序运行的过程中截取指定的目标程序所使用的任何一个中断,来截获内存中的已解码程序,为了便于选择合适的中断点,RCOPY03也提供了观察目标程序中断调用序列的手段。晕样,在选择好一个合适的中断点后,RCOPY03便会在该中断点处开始,重建一个可执行的EXE文件,从而自动完成对“加壳”程序的“去壳”过程。
        另外,有些加密软件还提供了可供用户链接到源文件中的OBJ加密模块,这样的程序显示不能企图通过RCOPY03一次性地解密,但是,由于这类程序在经过RCOPY03运壳之后,一般不再有防跟踪的性能(OBJ模块除外),因而对种程序,只要先用RCOPY03去壳,然后再用一般调试工具进行调试,找到OBJ模块的调用口,轻易地绕过去即可。
        RCOPY03还能够清除文件型病毒,其原理和解密的原理相同。