共享软件防破解经验
[i=s] 本帖最后由 egoood 于 2009-12-30 11:40 编辑 [/i]本人纯国内,软件已经好几年,月入2W,至今未被破解。
国内共享软件加密防破解很重要,谈谈经验以供分享。
一、加密防破解的目标
世上没有开不了的锁,世上也没有解不开的密,世上也没有攻破不了的城池
任何一种加密方法都不可能有绝对百分之百的安全,加密的目标不是百分之百,而通过各种方法综合使用,增加破解难度,最终达到[color=red][b]破解成本>破解收益[/b][/color],使破解者最终放弃尝试破解。
下面就一步步讲各种增加破解难度的方法,大家综合使用。
二、注册验证算法
以下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)式再改进 [color=red]if MD5(Fun(ID,Input)=Key的MD5值[/color] && (4)
(4)在代码和内存中,看到的Key的MD5值,MD5几乎无法还原,这样注册验算与注册码生成算法完全不同,无法通过注册验证算法倒推注册码生成算法。写注册机的可能性极小。
即使用简单的减法或异或作为Fun,知道注册验算也很难反到注册码生成算法。
例if MD5(ID-Input)=B7A782741F667201B54880C925FAEC4B
实际上上述注册验算的注册码生成算法为SN=ID-10000 (省略字符串与数字转换)
很明显(4)式要比(1)式强得多
三楼继续 哪一个软件?我分析一下破解难度 [i=s] 本帖最后由 egoood 于 2009-12-30 12:47 编辑 [/i]
三、抓住小偷
1、 小偷(Cracker)有个习惯:尝试破解的第一件事就在注册窗口试着输入注册码,如果有窗口提示,就用内存跟踪到窗口之间的代码找到注册验算处,会分析里面的明码比较得到注册码,或通过修改跳转达到爆破,甚至分析验算写注册机达到破解目的。
所以防破解的原则有:不能明码比较,不能验证后就弹出窗口。注册码输入处不应放注册验算代码,而应该是输入后重起在程序验证。
2、小偷有上述这个习惯,我们可以利用这个习惯设个陷阱抓住小偷。
在注册码输入窗口我们不放注册验算代码,但我们可以放一个假的注册验算,先验证一个是否符合注册码格式,如下
if Input符合格式 then 写到硬盘然后退出软件
else [color=red]假验算[/color]
[color=red]假验算[/color]是装模作样进行注册验算,而且是明码比较,我们随便写一个如下:
if input=MD5(ID+'123') then showmessage('注册成功')
else showmessage('注册失败')
这样,在软件注册输入处的表现就是随便输几字符会弹出窗口提示“注册失败”,一般用户只会随便尝试输几下试试。
而小偷(Cracker)则不同,会用内存跟踪通过查找文本'注册失败'找到假验算处,当小偷发现假验算处还有'注册成功'的窗口文本会非常高兴。也会看假验算的明码比较。他会尝试用看到比较明码输入注册码输入框。
当小偷这么作时,软件会提示“注册成功”,他会一窃喜。而事实上并不是真正的注册成功,我们软件也就知道这个用户是小偷。因为正常用户是不会输入这个值的,只有Cracker才会输入这个值。
这样我们就抓住了这个小偷,
3、 抓住小偷后累他
抓住小偷后千万不要搞破坏。因为破坏他电脑系统
A会引起他的察觉,知道这是一个陷阱,他可通过虚似机等计术防范,你达不到效果;
B会引起他报复,他可能会将你的软件放到破解论坛群起而攻之,这样被破解的概率会增加。
抓到小偷后,我们玩他就好了,不要破坏他的电脑系统。我们可以在他电脑硬盘上偷偷写一个标志,有这个标志软件就在一定时间内(如一个月)不进行真的注册验算,代码绕过真的注册验算。在这个月内即使他输入正确的注册码也不能注册。
这样累他一个月,Cracker再怎么尝试再怎么内存跟踪,也找不到真的注册验算。一个月后激情过去,大多数人就放弃了。 自已占楼待续 自已占楼待续 关注,等待下文 没有一个爆破案例? 是不是不是流行软件啊
我的深切感受是, 无论什么流行软件, 爆破总是一个接一个出现啊 [quote]没有一个爆破案例? 是不是不是流行软件啊
我的深切感受是, 无论什么流行软件, 爆破总是一个接一个出现啊
[size=2][color=#999999]论坛长老 发表于 2009-12-30 10:50[/color] [url=http://www.cnsw.org/bbs/redirect.php?goto=findpost&pid=533784&ptid=95888][img]http://www.cnsw.org/bbs/images/common/back.gif[/img][/url][/size][/quote]
本人纯国内共享软件,软件已经好几年,月入2W元,至今未被破解。
网上曾见有多人尝试破解,但未成功。 光算法没有用吧,一个NAG就搞定了 谢谢楼主分享,楼主继续 难的是防爆破,就是自保护,其他用rsa非对称就可以了 高 写得很好,楼主要继续啊:victory: 先拜2w刀
我的控件2.5版被高人用独特的欺骗手段给破了,不过3.0版,嘿嘿,拭目以待 强人啊,哈哈,很好的办法 经验不错,其实这就是防爆破的一种方法,破解者跟踪不到注册码比较处怎么爆破呢?
我的做法比较偷懒,rsa算法,(杜绝注册机),无数比较分支,随机择一分支比较,即使破解者能够跟踪到,要跟踪到所有分支估计要吐血(防范爆破)。
加一层猛壳(望而生畏),这样的情况下仍有loader破解。
最后保护措施是暗桩(杜绝破解)
最后只好自己发布破解版。 if MD5(Fun(ID,Input)=Key的MD5值 ------ (4)
破解者能否获取到FUN的返回值呢? [quote]经验不错,其实这就是防爆破的一种方法,破解者跟踪不到注册码比较处怎么爆破呢?
我的做法比较偷懒,rsa算法,(杜绝注册机),无数比较分支,随机择一分支比较,即使破解者能够跟踪到,要跟踪到所有分支估计要吐血 ...
[size=2][color=#999999]游客 发表于 2009-12-30 16:04[/color] [url=http://www.cnsw.org/bbs/redirect.php?goto=findpost&pid=533990&ptid=95888][img]http://www.cnsw.org/bbs/images/common/back.gif[/img][/url][/size][/quote]
这样还被破,太牛了吧 [quote]
这样还被破,太牛了吧
[size=2][color=#999999]牛牛的爱 发表于 2009-12-30 19:33[/color] [url=http://www.cnsw.org/bbs/redirect.php?goto=findpost&pid=534058&ptid=95888][img]http://www.cnsw.org/bbs/images/common/back.gif[/img][/url][/size][/quote]
游客说没被破解,只好自己发布“破解版” [i=s] 本帖最后由 egoood 于 2009-12-30 19:56 编辑 [/i]
[quote]if MD5(Fun(ID,Input)=Key的MD5值 ------ (4)
破解者能否获取到FUN的返回值呢?
[size=2][color=#999999]猛龙过海 发表于 2009-12-30 16:23[/color] [url=http://www.cnsw.org/bbs/redirect.php?goto=findpost&pid=534005&ptid=95888][img]http://www.cnsw.org/bbs/images/common/back.gif[/img][/url][/size][/quote]
Cracker 获得Fun(ID,Input)这个值有什么用?
这是一个二元函数,参数一个是用户ID一个是用户注册码输入值
用户输入不同的值得到不同的结果。