|
 
- UID
- 15321
- 帖子
- 120
- 精华
- 1
- 活力
- 245
- 财富
- 50
- 注册时间
- 2009-5-20
|
1楼
发表于 2009-12-30 09:55
| 只看该作者
本帖最后由 egoood 于 2009-12-30 11:40 编辑
本人纯国内,软件已经好几年,月入2W,至今未被破解。
国内共享软件加密防破解很重要,谈谈经验以供分享。
一、加密防破解的目标
世上没有开不了的锁,世上也没有解不开的密,世上也没有攻破不了的城池
任何一种加密方法都不可能有绝对百分之百的安全,加密的目标不是百分之百,而通过各种方法综合使用,增加破解难度,最终达到破解成本>破解收益,使破解者最终放弃尝试破解。
下面就一步步讲各种增加破解难度的方法,大家综合使用。
二、注册验证算法
以下ID为用户名或机器特征码,Input为用户注册输入值,Fun 为函数
if Input = Fun1(ID ) &&(1)
(1)式变形成为 if Fun1(ID) -Input=0 && (2)
(2)式变形成为 if Fun1(ID) -Input=Key 即 if Fun2(ID,Input)=Key && (3)
(1)式是一个一元函数比较,正确注册码在内存出现,是明码比较,很容易被破解。
而(3)是一个二元函数比较,没有出现正确注册码,被破解难度已经很大。
我们把(3)式再改进 if MD5(Fun(ID,Input)=Key的MD5值 && (4)
(4)在代码和内存中,看到的Key的MD5值,MD5几乎无法还原,这样注册验算与注册码生成算法完全不同,无法通过注册验证算法倒推注册码生成算法。写注册机的可能性极小。
即使用简单的减法或异或作为Fun,知道注册验算也很难反到注册码生成算法。
例if MD5(ID-Input)=B7A782741F667201B54880C925FAEC4B
实际上上述注册验算的注册码生成算法为SN=ID-10000 (省略字符串与数字转换)
很明显(4)式要比(1)式强得多
三楼继续 |
-
4
评分次数
-
|