我以为是这样的
应该从破解的方式来看,一般有这么几种:
1、注册机算号
2、内存注册机
3、修改EXE
4、注册码泄露
5、……(呵呵,一时想不起来)
网络验证最大的好处就是可以使用随机码作为注册码,也就是用户名与注册码之间没有特定算法,这样可以有效的防止 1、注册机算号 破解的产生(并且 4、注册码泄露 也可以有效地防止,一旦发现某个用户名短时期内有大量用户注册,可以立即从网络数据库中删除)。
对于 2、内存注册机 完全可以通过验证线程的多元化来防止,例如通过注册的时候只需要用户名与注册码与网络返回的注册码相同即可(前面说的欺骗程序也是一回事),然后在程序的某个地方(例如拖动窗口、鼠标移动到某个控件上,然后触发一个时间控件,隔个十来秒钟正式开始二次判定),二次判定规则就随便自己定啦,例如真正的注册码的第三位必须是数字,回头再来个三次验证,真正的用户名都是用用户的电子邮件作为用户名的,回头……四次……五次……
对于 3、修改EXE 可以通过加壳、加多层壳、判断文件大小字节数、文件校验码比较(MD5或CRC)防止。
总之啦,兵来将挡,水来土掩,不要指望单靠某一种方法可以避免的破解。
(对了,为了以防万一,有破解出现,程序中还可以加个判定,即便是正式用户,在这个版本发布3个月后也提示需要下载新版才可以使用,这样万一有疏漏,那破解也只能欢三个月,新版本中照样可以应对)