加密软件十年 1996-10-18 一、加密软件发展初期 1981年IBM PC面市,两三年后开始进入国内。1985年国内的PC机开始多起来,与之同时进来的还有不少软件。在美国盗版比较猖獗,商业软件都是加密的,市场上也有专业的加密软件和解密软件。最著名的加密软件是PROLOK,这个软件与做好的加密盘一起销售。加密盘使用激光束在磁盘上打孔制造硬错误,这个错误无法用软件方法仿制,用来作为加密软件的识别标志,相当稳定可靠。同时期有两个解密软件比较出名,即万能拷备工具 CopyWrite和CopyⅡPC。CopyWrite 除可以拷贝加密盘外,还可以作为分析加密盘的工具;而CopyⅡPC 智能化程度高一些。 1986年前是国内加密软件研究的初期阶段,大家都在学习国外先进的加密技术,不少人开发了类似PROLOK的加密软件,直接在针在盘上扎孔来制造加密盘。再后来,有人使用磁铁制造硬错误,也有人使用特殊的驱动器格式化密钥盘。真是“八仙过海”,各种各样的方法应有尽有,十分热闹,但特别有代表意义的作品并不多。 当时的加密软件多半是开发者自己开发读盘程序,由于使用的主要是IBM PC及PC XT等机型,问题还不大。后来出现了386机器,而且兼容机时代来临,由于兼容性的问题,加密软件越来越不稳定,因此采用加密卡加密的就比较多,但由于加密卡制作成本比较高,间接地提高了软件的售价,而且需要占用额外的系统资源,用户不愿意接受这种方式。 二、成熟的加密软件产生了 1989年,加密软件开始成熟,市场上出了一批加密软件,如LOCK89、LOCK STAR和BITLOK等,最具典型代表意义的产品是杨道沅开发的LOCK89。LOCK89加密母盘每次可以生成一批加密盘,用户再用每个加密盘上的加密软件去加密自己的程序。这样的好处是如果用户需要的加密盘不多,可以不用买加密软件,直接购买生成的加密盘就可以了。LOCK89销售势头比较好,系统也比较稳定,受到了广大用户的青睐。 LOCK89密钥技术摒弃了前一段时间由开发者自己开发读盘子程序的方法,大胆采用系统提供的INT40H读盘程序,系统硬件兼容比较好。LOCK89反跟踪手段主要是使用大量变形和加密技巧,由于当时没有特别好的解密工具,这些反跟踪方法都比较有效,但LOCK89使用母盘的方法并不适合软件的大批量生产。以后的几年,杨道沅开发过LOCK89的后续版本,但没有LOCK89那么成功。 这个时候,还有几个产品值得提一下,首先是当时在武汉的黄玫瑰组开发的BITLOK,这个小组意识到当前加密软件开发的弊端:过多地使用加密技巧,仅能防止DEBUG的解密,生不好、无法维护,因而提出了一种反跟踪的方法,使用大量的跳转和大循环解码,程序非常难读,开辟了一种新的反跟踪手段。 同期还有很多人在研究解密技术,编写了各种解密工具。从台湾传过来的一个游戏修改工具Game BusterⅢ给了国内的解密者一个相当好的思路:即把内存当时的情况全部记录焉,当需要重新执行程序的时候把保存好的内存映象装入内存,从保留的入口重新开始执行程序。国内的高手,比如江西的熊焰也想到了这种思路,他开发了一种软件叫RCOPY02。RCOPY02可以保护软件执行的所有环境,下次执行时不必使用加密盘,直接调入就可以执行。这个软件开创了解密软件的先河,而且思路非常新颖。 三、遇到了SoftICE调试工具的挑战 1991年出现了SoftICE这样的调试工具,加密软件面临着特别大的挑战。SoftICE工作在保护模式的第0级,让用户的程序(加密外壳)工作在虚拟模式下(第3级),利用80386芯片内置 的调试功能来对软件进行截断。所有的加密软件在SoftICE的面前都是如此简单,一个略懂解密的人就可以用SoftICE把任何加密软件搞掂。原来的加密技巧对于SoftICE没有丝毫的用处,加密软件遇到了空前的难题。 黄玫瑰组同期开发的BITLOK重点在于防范SoftICE,当时采用的一种方法是开发保护模式版本。后来由于兼容性的原因,这种方法被放弃了。目前还有不少好手认为编写保护模式的加密软件是对付SoftICE的最好方法。 四、大量成熟的加密软件上市 由于国内软件开发力量逐渐雄厚,开发的产品越来越多,市场上对于加密软件的需求也越来越旺盛。 首先是黄玫瑰的BITLOK开始公开上市,推出了1.2版。在这个版本中使用了一些新的技术,如多加密算法,即加密不同的程序可以使用不同的算法,提高了加密软件的可靠性;反跟踪采用了多栈式虚拟机,使用虚拟机的指令编写反跟踪代码,跟踪难度比较大;使用共用的硬盘程序,方便软件开发者编写安装程序;最先支持网络安装,而且最先支持Foxpro的应用程序的加密等等。同时,还有一个特别出名的加密软件LOCK93面市这个产品不是杨道沅开发的,而是郑州的周辉开发的。这个软件和原有知名产品LOCK89名字相近,宣传也做得比较出色,LOCK93很快取得成功。这个软件虽加密难度不大,但性能非常可靠。 这个时候加密软件百花争艳,同期还有不少好的加密软件,如KeyMaker、中国锁、终结者等等。后来,LOCK93出了LOCK93NT 等版本,BITOK出了BITLOK1.5,1.68等,KeyMaker也出了2.0。 在加密软件空前繁荣的一年,熊焰开发了两个特别好的工具,一种是RDT可驻留的DEBUG,跟踪加密软件有独到之处,同时推出了RCOPY03这一解密软件的杰作。RCOPY03可以分析加过密的软件中使用中断向量的情况,然后查知加密软件内幕,让用户选择在一个合适的中断向量的调用处打断。这样生成的程序经过一定的处理就可以正常运行,而且在其他的机器或环境中运行很少有“水土不服”的现象,这个解密工具的设计非常之妙。 五、出现大量的解密工具 1995年,市场上有BITLOK 2.0、LOCK95、KEYMAKER 3.0 以及BITLOK for Windows等加密软件。这一年的加密软件中,LOCK95引进了一个新的技术__程序自动生成反跟踪代码。这项新技术使得加密软件的开发更加容易。 但同时出现了非常多的解密软件,如MSCOPY03、LLGZ、MagicKey等等。这些解密软件从特点来说较之RCOPY03没有大的飞跃,使用上可能也不如RCOPY03方便。但由于加密软件多以识别的方法来防止RCOPY03的解密,所以新的解密工具对付加密软件反而非常容易得手。中关村还有一家小公司专门出品大家开发的解密工具,刊登了很多解密工具的广告,制造了解密工具畅销的奇迹。 同期还出现了许多钥匙盘拷贝工具,这些工具可以复制公开销售的所有软件生成的钥匙盘,比较有代表性的有Copy Way3.0。 这一年,解密软件中还有一个值得大书一笔的杰作UNSHELL。这个工具是冯志宏开发的。它最巧妙的是能识别各种高级语言的启动代码,因此可以跳过加密代码,实现自动脱壳,方法非常之妙!一个普通用户使用这个工具就可以自动解密。 六、新的加密软件又登场 在解密软件占主导的1995年,加密软件普遍采用识别解密软件的方法不太有效,处境艰难。这个时候,用户购买加密软件都会问:能防解密工具吗?经过一年多的研究,黄玫瑰组在1996年7月底推出了BITLOK3.0。周辉也在研究加密软件,估计不久的将来也会有作品面市。 哈尔滨的两个高手开发了“锁王”,这种加密软件使用自己的保护模式下的读盘程序,在外壳中不使用任何中断调用,所有读盘程序均只能使用IN和OUT两条指令,并且有效地消除了外壳程序和用户程序之间的分界线,令解密异常痛苦。 已经推出的BITLOK使用了一些新的技术,如:用户自动升级加密软件、机器自动打乱程序、变形模块等等。允许用户开发一段代码,插入到BITLOK的内核中去自动升级加密软件。用户参与加密软件的开发,可以把加密软件和应用软件有机地结合在一起,同时,黄玫瑰组还会通过BBS站发布一些新的插入模块,供用户升级。 BITLOCK使用最先进的程序自动生成方法,全部反跟踪,代码由机器自动生成,可靠性高,破解难度大。对于每一段独立的程序,全部由机器自动打乱,很难进行动态或静态跟踪同时还仔细分析市面上的十多种通用脱壳工具的共同点,制定了一套专门的防范措施,并针对某些常用的工具作了特殊处理。 BITLOK3.0还可以变形覆盖模块,让UNFOXPRO 3.0也无法反编译加密过的FOXPRO应用软件。 现在还没有见到针对BITLOK3.0的解密软件,并且黄玫瑰组表示每三个月升一次级,对于这点,解密软件可能会比较头痛。 七、加密软件的未来 只要存在软件盗版的现象,加密软件就不会退出市场。随着我国软件市场的繁荣,最近几年的加密软件市场也必将更加繁荣。 附:下表是对十年来加密解密软件的一个回顾 时间 加密软件 解密软件 调试工具 1986 PROLOK COPYWRITE DEBUG 1989LOCK89LOCKSTAR BITLOK 0.99 RCOPY02 GAMETOOL 1992 BITLOK1.0 SOFTICE 1993BITLOK 1.2LOCK93/NT BITLOK for Windows RCOPY03 SOFTICERDT 1995 BITLOK2.0LOCK95 MSCOPY03LLGZ UNSHELL 1.0 KeyMaker3.0 Magic Key 1996 BITLOK 3.0