顾名思义,写注册机来破解软体注册的方法,就是模仿你的注册码产生算法或者逆向注 册码验证算法而写出来的和你一模一样的注册机。
如果被写出注册机,你的软体只好免费了。或者你必须更换算法,但以前注过册的合法用户都得被迫更换注册码了。
Cracker要写注册机必须详细研究你软体的验证模块,这必须先将你的软体脱壳,再反汇编或者用除错器跟踪。市面上许多加壳和保护软体都吹嘘不可能被脱壳,但到目前为止没有一个软体兑现了自己的诺言。
由于CPU最终执行的都是有效命令,所以等你的程序自解压完成后再从记忆体中Dump出来就可以实现脱壳。因此不要在壳上面花很多功夫,因为没有这个必要。
第一招:制造假相
反汇编和除错器跟踪都是不可能防止的,因为所有的Win32程序都必须通过API来使用Windows系统中的关键DLL的(如Kernel32.dll、无法使用之字串32.dll等),然而API是可以Hook的。我们只能从自己的代码着手来保护我们的劳动果实了。
为了自己调试和以后维护的方便,我们一般采用有意义的名字给我们的函数命名,可这给了Cracker可乘之机。例如这样的函数是什么意思大家应该一目了然吧?IsRegistered(),IsLicensed(),LicenseVerify(),CheckReg()……这样Cracker就可以轻松地从数千个函数中找到他的目标——你的注册码校验函数!而且破解Delphi编写的软体还有一件TMG小组的破解利器——DeDe。
它可以轻松地看到你软体里的Form、Unit和函数名,还可以反汇编一部分代码,更可以和Win32DASM合作反汇编更多的代码,对Delphi编出的程序威胁极大。
为了不给Cracker创造温馨舒适的破解环境,要故意混乱(Obfuscate)我们的代码,将软体中所有的函数名全部替换成随机产生的函数名。
例如Func_3dfsa_fs32zlfv这个函数是什么意思?恐怕只有天知道了。网上有现成的代码混乱器,按你使用的编程语言的种类可以找到一些。
但要注意,只有当你要发布软体时才使用它,而且一定注意备份源程式码。否则,当你看不懂你自己的代码时就着急了:)
第二招:用公匙,并改名
另外,一定要使用公开密匙算法保护你的软体。RSA、DSA和El Gamal之类的算法都可以从网上找到。
但注意 ..
访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容