在软件的破解方法里,“暴力破解”(俗称“暴破”)算得上最为普及且行之有效的方式了。经过“暴破”后的软件拥有授权版本才具备的所有功能。笔者也是一位软件开发者,对于这种盗窃“知识产权”的行为深恶痛绝,因此将一些个人的防“暴破”经验共享出来,与大家交流和学习。
一、认识“暴破”手段
首先探讨一下破解组织的“暴破”手段。无论是技术多么精湛的组织,他们都会遵守以下的基本步骤来完成“暴破”。
1.判断软件是否加“壳”。
2.运行“暴破”工具,显示软件的源程序。
3.进行软件源程序的分析,找到注册信息语句。
4.修改注册信息的源程序,让注册功能不再生效,或者让注册码显示出来。
从上面的步骤中不难看到,软件之所以被轻易地“暴破”,主要还是因为开发者粗心大意,或者编译技术不完善导致源程序存在诸多漏洞而造成的。只要开发者在编写源程序时设置多层障碍,便可以在一定程度上防止“暴破”(笔者并不敢夸下“海口”,说自己的方法可以完全杜绝“暴破”,但起码可以增强软件的注册保护性能)。
二、防止“暴破”的方法
给软件“加壳”和添加反跟踪代码
1.软件发布前需要将可执行程序进行“加壳”处理,使其他人无法直接修改源程序。“加壳”可以利用很多优秀的“加壳”工具,且最好采用两种以上的工具对程序进行“加壳”。此外,还应尽可能地利用这些工具提供的反跟踪功能。
小提示:
开发者最好是设计自己的“加壳”方法。如果采用现成的工具,建议不要选择流行的,因为这些工具已被广泛研究,有了通用的“脱壳”办法。
2.除了“加壳”处理外,最好在软件开发的过程中嵌入反跟踪代码,防止“暴破”工具找到软件的注册漏洞。
软件的反跟踪方式较多,比较常见的有利用花指令随机改变关键代码的内存地址。下面看一个例子。
程序最初的源代码如下:
start_: xor eax,1 add eax,2 jmp label1 label1: xor eax,3 add eax,4 xor eax,5 end start_