. 随着VMP的普及,软件的加密体系已经步入第三代保护模式了。传统加密我是这样定义的:程序的注册流程一般都是输入并保存注册信息,程序启动时验证注册信息是否OK来判断是否注册。程序员大都习惯性将功能模块化,比如程序注册部分的算法也大都做成一个函数(或封装进DLL中),程序注册时调用,启动时仍旧调用该函数。所以当我们OD中看到算法Call有两处调用一般就是这种模式,这样一般修改算法Call后程序就完美破解了。这样的验证体系太单薄经不起Cracker推敲,无论是否加壳保护,是否明码比较大都会被秒杀。 以上的如果定义为第一代加密体系,我定义的第二代加密体系就是这样的:使用了强壳保护(比如EXECryptor、Themida、EncryptPE、ASProtect等),一般多采用较为成熟的加密算法(包括不可逆的大数运算),同时对程序还有完整的效检以防程序被修改。有些还使用了不太成熟的网络验证等等。这种体系增强了程序的加密强度,提升了解密的难度,但对精通壳和算法的Cracker来说,程序的强度还是有限。 于是就过度到第三代:使用虚拟机(VMP、CV等)来保护程序的核心保护代码(比如程序的算法、自效检、网络验证部分等),同时网络验证的已不再是单纯的返回YES或NO了,而是利用返回的数据或KeyFile来解码程序的功能。“强壳+虚拟机+KeyFile的功能解码”的模式大致上就搭建起了第三代的机密体系。此时的加密体系就要求调试者必须要兼具脱壳、分析虚拟机和密码学的功底,对新手来说破解第三代加密体系可以说是可望而不可即了。 即便是用到了第三代的保护模式,想寻求相对的安全也只能是限与心理上的,高手照样可以Fuck掉的。不过一般来说,国内的高手对优秀的国软多是会有所保留的,即便是搞掉了也多不会公开。加密的提升也在促使解密的进步,相信第四代的加密体系很快就会诞生和普及。 软件的破解技术其实只是一种兴趣,游戏而已。大家旨在点到为止,切莫走火入魔。正如安全峰会上刘涛涛老师说的那样,如果你想证明自己很牛,拿自己的程序来说话。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课