说说加密软件
外壳式:加密软件把一段加密代码附加到执行程序上,并把程序入口指向附加代码中。当被加密的程序装入内存后,附加代码首先执行,检查是否有跟踪程序存在,如果没有再检查密钥是否正确,如果正确,则转入原来的程序中。
这种方式的优点是不需要修改源代码,使用简单。然而,其缺点也很明显:一旦附加代码被击破,就被一览无遗。
内含式:加密代码以OBJ文件形式存在,在应用程序调用这些加密代码,最后与要加密的程序编译连接到一起。这种方式需要修改源代码,比较可靠,但是代码复杂性不如外壳式,不容易对二进制代码做复杂变形,容易被跟踪。这种方式主要用于使用软件狗和加密卡的加密程序。
结合式:把上术两种方法结合起来。用OBJ去检查外壳的可靠性,内外结合。
不管采用哪一种加密方式。通用的加密软件有一个致命的弱点:解密者可以从市场上买一套反复研究,并将解密方法套用到其它软件上。专门定制的软件在市面上不易得到,而且可以根据具体需求作特别改制。相对来说,定制的加密软件的功效最强。软件厂商一般是通过定制专用的加密软件来提高软件的保险系数。
需要提请注意的是有不少的读者把“加密软件”与“密码学”混为一谈,但这并不是一个概念。加密软件与密码学有着很深的联系,加密软件的变形算法都源于密码学的理论。有的加密软件采用的变形算法比较简单,认为无关紧要,其实这样给解密者留下了很大的后门,比如说用这个加密软件加密“全零”等各种有规律的数据来研究推断,不用分析程序就可以轻松地解开。为了提高加密软件的安全性,必须使用复杂可靠的算法。例如BITLOCK中采用了十几套随机可选的算法,有效的增加了解密难度。
软件加密技术主要由密钥技术、反跟踪技术和代码插入技术构成,缺一不可。密钥技术主要是防止程序被复制,反跟踪技术主要防跟踪,代码插入技术把加密的代码插到用户的程序中去。一套完整的加密软件就是这些技术的组合。
目前,Windows在国内推广存在一个比较大的困难,就是因为市面上没有一套实用的Windows加密软件,在中国的市场上,不加密的软件用户不愿意购买,销售商不愿意销售,因此,加密技术也是软件尽快打开销售市场的一个手段。清华大学出版社出版的《深入Windows编程》介绍了开发Windows加密软件的主要技术,以协助软件开发者应用最新的加密手段更好地保护自己开发的Windows应用软件,使国内用户能够享用Windows的好处。(赵琼)