软件作者与软件破解者相互间斗法中,在一般情况下软件作者在明处,破解者在暗处。软件被作者发布后,无法知道是谁准备破解或已经破解其软件。
为了提高加密强度,需要捉住破解者。

一个CRACKER开始破解软件时,第一步往往使用内存跟踪技术,根据消息提示在内存寻找明码比较的注册码。为了防破解首先对于真正的注册码校验不要使用明码比较、消息提示。
然而也可利用此破解特性,捉住CRACKER。
在对真的注册校验不要使用明码比较、消息提示的基础上,在输入注册码界面作如下功能:
1、验证注册码格式
IF 不符合格式
THEN 假的明码比较(步骤2)
ELSE 保存退出,软件重启动后校验注册码
(说明:一般情况下注册码有特别的格式,比如字数、字符范围等,不符合此格式的肯定是注册错误,因此一般用户胡乱输入一定是“注册错误”)

2、假的明码比较
运行一个假的错误的注册码算法,得到假码(假的注册码)
IF 输入值=假码
THEN 弹出窗口显示“注册成功”
[对付CRACKER]
ELSE 弹出窗口显示“注册错误”

(说明:一般用户胡乱输入几乎不可能碰对“假码”,因此 输入值=假码 的一定是CRACKER)
所以当 输入值=假码 我们就知道是CRACKER通过内存跟踪得到了假码,在进行破解尝试,而非一般用户。

捉住了CRCKER,软件作者可在软件中设定对付CRACKER的功能,有三种方案可选择:
A)软件退出,什么都不作。   
B)破坏CRACKER电脑系统。
C)将假码保存在硬盘后退出,软件重起作假验证。

A方案:让CRACKER迷惑,可能会让其百思不得其解,浪费其一定时间消耗其一定耐心,一定程度增加破解难度。CRACKER也许因好几天想不明白而放弃破解。

B方案:不提倡使用。
首先,损坏他人财物不道德。
其次,暴露目标,让CRACKER知道这是假的验证,CRACKER可能通过虚似硬盘的技术手段避免破坏。
其三,遭至CRACKER报复。此措施更坚定了CRACKER的破解决心,甚至不破解誓不罢休。

C方案:下面重要再讲。

3、对付CRACKER (方案C)
装模作样将假码保存在硬盘上一个文件后退出
(说明:CRACKER可能会用文件监控技术发现假码文件,同样还可能用内存跟踪技术跟踪读假码文件的代码)

软件启动部分:
IF    假码文件存在
THEN  另一个假的注册验证 (步骤4)
ELSE  真的注册验证
(说明:只要假码文件存在,就不执行真的注册验证,从而保护真的注册验证不被跟踪)

4、假的注册验证
设计一个永远无法正确的检证算法
IF  F1(假码文件值)=F2(机器码)
THEN 界面显示“注册成功”   
ELSE 界面显示“试用”     
(说明:F1、F2是两个不相关函数,实际上永远不存在由机器码推出假码的算法)
CRACKER可能内存跟踪到此处,他可能修改假码文件值来进行穷举尝试,也有可能根据F1、F2分析注册机算法,然而这两种工作都是徒劳的,因为根本不存在这样的算法。
把CRACKER引入歧途,让CRACKER在此百思不解,浪费他时间、消耗他的耐心,最终失去耐心而放弃破解尝试。


总之:迷惑CRAKCER,将CRACKER引入歧途,让CRACKER百思不解,消耗其脑力、时间、耐心。


说明:一种措施并不是百分之百防破解,某措施和其它措施一样是进一步增加了破解难度,最终目的是让CRACKER失去耐心而放弃破解尝试。