共享软件是目前世界上软件业比较热门的话题,国内更是如此。成千上万的中国程序员以极大的热情投入到这个领域来,都憧憬着用辛勤的劳动获得丰厚的回报;但,实际并非如此,绝大多数的人都铩羽而归。值得注意的是:除了软件设计和技术上的原因外,最大的原因就是共享软件被破解(Crack)了……
面对破解
一个做共享软件的作者,面对的是已经形成团伙的众多破解高手,国内的什么CCG、BCG,国外的eGis、King、Core、TNT、DAMN和TMG,皆为水平一流的破解组织。全球盗版软件不少于80%都是由他们的破解的,技术实力连大软件公司都不可小视。
看到这里,你是否已经灰心了?别怕,虽然目前我们理论上无法完全避免被破解,但如果能够有效地拖延被破解的时间,并充分打击破解者的自信心,是可以让破解者无法忍受这种折磨从而最终放弃的。
破解,通常的做法有两种——暴力破解(爆破)和写注册机。笔者就自己积累的经验来依次讲解每种破解方法的原理和应对方法,某些关键的例程讲解(Delphi代码),使用C++和VB的朋友可以自己稍微修改一下。希望这能对一些新手有些帮助,能够更有效地保护自己的劳动成果。
认识暴力破解
暴力破解简称“爆破”,这是破解手段中最常见的,也是最简单的破解方法。该法最适合于对付没有CRC校验的软件,破解新手乐于采用。
大凡共享软件,验证是否注册大多采用if条件语句来进行判断,即使你采用了什么RSA或ECC等强力加密算法,也免不了使用if条件语句。这里就是共享软件最为危险的地方,也是爆破手孜孜不倦所寻求的目标。
例如,你的注册函数类似如下:
{利用RSA进行注册码的数字签名验证}
if RSAVerify(MD5(Key),MD5(Code),e,n)then
ShowMessage('注册成功!')
else
ShowMessage('注册失败!');
{这里Key是用户输入的注册码,是由你发送给注册用户的,Code是根据用户输入的用户名自动计算出来的注册码,e是RSA算法的公匙,而n是RSA算法的模数。}
第一次过招
上例注册函数即使使用了强劲的RSA算法进行注册码验证,但依然很容易被破解,我们只要把这里修改为:
将逻辑判断改为否