首页
社区
课程
招聘
[推荐][crackme]期待高手破解
发表于: 2009-6-19 14:17 7661

[推荐][crackme]期待高手破解

2009-6-19 14:17
7661
说明:我们将用程序中的方式加密软件防止盗版,请高手帮忙看看它的安全性
规则:破解出加密算法、正确序列号、或者patch等等都可以。在正式软件产品中,我们将用序列号来加密程序本身的一小段代码,如果没有正确的序列号,恐怕后面的逻辑无法正常执行。

注:程序加了一个常见的壳,如果输入了正确的序列号,则到达正确流程(显示一段字符),如果错误,则没有任何显示,甚至会发生访问错误。

因为我们的软件防盗版水平不高,所以如果程序很简单就被破解,请大家不要见笑!希望能提提改进意见,谢啦!

请见附件。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 517
活跃值: (69)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
强,想先运行看一下界面,直接报错。
2009-6-19 14:20
0
雪    币: 328
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
抱歉忘说了,没写界面,就是命令行的,程序第一个参数就是序列号
报错是因为序列号不正确。当然这很不友好,在软件产品中我觉得可以捕捉这种异常,让它变得友好一些...
2009-6-19 14:42
0
雪    币: 15
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
晕,序列号错误就异常,这个真的太不友好了:)
2009-6-19 15:44
0
雪    币: 319
活跃值: (59)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
晕S,就是那壳的,如果不是壳的话应该会显示明码。。。。。。。。。。。。。。。。
2009-6-20 13:59
0
雪    币: 328
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不是的,没有壳也是这样的。加了一个aspr2.4,加这个壳主要是为去掉符号,以及简单的加密明文字符串。也可以去掉,但是为了真实一点还是弄上了...  程序第一个参数就是序列号
2009-6-20 15:07
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
7
这东西发到CM小心被人骂
得找小云要一下什么文字的 MD5 = 3575D0EBF88E717B9E2ECA46FFEC2487

Correct serials
2009-6-20 18:15
0
雪    币: 328
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
对,不加壳或者脱壳后可以搜索到一段字符串就是“Correct serials”。当然用hash逆推明文,或者找碰撞都可以破解。请问你是否试过,如果不逆推明文,而是直接替换这个hash值为一个已知明文的hash值是否能破解?按照设计理论是不行的,算法重点就是转化具体比较和分支跳转的机器码实现。要是被破了就再接再厉继续完善算法。嘿嘿

要是必须逆推出明文或者找碰撞才能破解,那么我认为安全性是基于散列算法的安全性,那么更换为更安全的hash算法以及弄个复杂明文似乎可以大大提高安全性。
2009-6-21 00:11
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
9
类似的做法..在论坛上你可以找看看.
大多会被回帖者回批 : 流出一个正确的序号等于已遭破解
保护者与破解者往往看的点不一样, 所以若LZ相信自己,不妨就用此方法来保謢自己的软件吧

个人认为你这个跟下列的难度是一样的

序号 -> MD5 -> 程序解码 -> 继续执行....

所以..不用搞得这么复杂.

另外..你上面好像有说到处理例外使得程序完善一点.
我是觉得用下列的方法就很完善了. 连例外都不用处理 :

序号 -> MD5 ->
if MD5==3575D0EBF88E717B9E2ECA46FFEC2487
  {
    SHA1(序号) -> 解程序码 -> 执行
  }
else
  {
    MsgBox(注册码错误, 请重新输入)
  }

这里的序号也可以Key文件替代. 什么碰撞都没用了.
个人浅见.

注: 我7楼贴的 3575D0EBF88E717B9E2ECA46FFEC2487 就是你这CM的正确序号的MD5
2009-6-21 00:59
0
雪    币: 328
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
明白您的意思!
对于“流出一个正确的序号等于已遭破解”,我想是通过加密狗解决。虽然用户不参与序列号的直接输入,但是这样就要求读取加密狗数据过程的安全性要很高才行。好在对于目前的狗,即使知道了狗里面的验证数据,也无法简单的把相同的数据写到另外一个狗里面.

另外程序难度稍有点不同,应该还是: 序号 -> MD5(或别的hash算法) -> 验证序列号 -> 继续执行
还没有对程序本身代码进行加密. 验证序列号的部分,主要是转化了cmp和jmp等相关语句,防止爆破.

哦,流程确实不是这样的:

序号 -> MD5 ->
if MD5==3575D0EBF88E717B9E2ECA46FFEC2487
  {
    SHA1(序号) -> 解程序码 -> 执行
  }
else
  {
    MsgBox(注册码错误, 请重新输入)
  }

因为算法的原因,无法判断是否序列号错误....所以,要捕捉异常,让程序更友好一些.

多谢高手点评!
2009-6-21 01:28
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
11
做保护得先研究破解先.
所以你最好先了解破解者对加密狗的做法.
以免弄成花钱买狗却一点用也没有.

这种事不便说得太明, 供LZ参考
2009-6-21 01:45
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
12
plus one
2009-6-21 01:55
0
雪    币: 328
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
突然明白,我把重点放在防止比较阶段的爆破方面,但是没想到百密一疏,读狗数据方面有漏洞。感觉11楼的意思是暗指当前大多数加密狗的数据都可以用某种方式读出?那确实比较可怕... 原本以为靠狗的安全性来大大增强软件的安全性,这样的话,实际上软件加密方式本身多复杂都没什么用。就上上面提到的,以用户序列号当作key加密程序本身一段代码等方式,安全性很高,但一旦流出一个正确的号,就全完了。

这个crackme欢迎大家继续玩玩,不过防盗版的任务还是任重道远...得继续努力了。
2009-6-21 17:03
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
14
这个CM算是结尾了吧.
LZ可否公布一下 3575D0EBF88E717B9E2ECA46FFEC2487 是那个字符串的MD5 ?

我查了MD5的网页及跑了一下MD5的程式都没找出来.
2009-6-21 17:29
0
雪    币: 306
活跃值: (153)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
下来看看,接触不久
2009-6-21 21:49
0
雪    币: 328
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
其实不应该算结尾了!因为还没有人公布出破解算法,哈哈!确实不是用输入的字符串来作为seed加密程序的某个部分。想看看这种防止汇编级爆破的方式效果到底怎么样... 希望众高手有时间再玩玩..

其实这个号不是重点,告诉大家吧: a1d2c3f4

另外,咨询了一些人,也包括做狗的,说当前读取狗和程序间通讯数据以及狗内特定信息的难度还是很大的。以智能卡加密狗来说,基本上没什么方法获取。也就是说如果把这个号保存在狗里面,安全性还是很高的。哈,这只是一种说法,有什么新的破解方式希望能够学习下!
2009-6-23 17:18
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
17
祝你们软件大卖
2009-6-23 22:42
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
LZ还是只站在加密的角度想解密
sessiondiy都讲的很清楚了
站在解密的角度来看,算法跟爆破是没啥关系的

祝你们软件大卖
2009-6-27 01:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
..瞧瞧
2009-6-27 12:17
0
游客
登录 | 注册 方可回帖
返回