首页
社区
课程
招聘
纯算法简单的crackme5
发表于: 2009-3-18 17:52 7658

纯算法简单的crackme5

2009-3-18 17:52
7658
cm5.rar

适合初学者练习
爆破就不用帖图了

做了修正难度应该有所增加,
不过这个cm体现不出算法的难度来,
应该很容易被突破.欢迎测试!
cm5x.rar

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 1
支持
分享
最新回复 (15)
雪    币: 295
活跃值: (11)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
username:u
key:,,
2009-3-18 23:27
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
3
这是个什么CM啊,神奇。
用户名为任意(第1个字母不能为u,后面任意),注册码为+就行,好像就是
if(0-(x-30h)==5) MessageBox("good");
  那么x-30h应该等于-5这样就能使等式成立。
x即key,x=30h-5=2Bh,这样就得到了key=char(2Bh)='+'。

刚又试验了一下,key为+开头的字串都行...
如: bwns
      +-*/abcd
      这样都能成功。
2009-3-19 08:16
0
雪    币: 10936
活跃值: (3293)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
4
不错啊! 把算法搞清楚应该是比较难的.
找出一组正确注册码应该很轻松,这是用来给新手练习的.
第一个字母不为+也可以注册成功
2009-3-19 08:56
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
5
嗯,算法确实有点晕,数学不大好啊,我就看到最后结果是必须等于5。然后再反推的,要顺着程序跑,我就有点蒙
2009-3-19 09:06
0
雪    币: 295
活跃值: (11)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
用户名第一个字母怎么不能为u ?

没看到我给的一组吗?
2009-3-19 09:29
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
7
算法分支较多,我没分析第一个字母为u的情况。
2009-3-19 09:50
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢楼主分享。
用die查了一下,不知什么壳?有源码吗?
2009-3-19 11:58
0
雪    币: 10936
活跃值: (3293)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
9
标准的vc++6.0  没壳啊
2009-3-19 20:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
太深了,看不懂
2009-3-22 21:39
0
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
算到最好就一个 CMP EAX,5
2009-3-24 17:23
0
雪    币: 10936
活跃值: (3293)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
12
是的,如果算法条件过滤严格点,真正按算法来找注册码会比较难
上面给的几个注册码,都是饶过算法 取巧得到的注册码.

当是在看这个算法时 剧烈头疼,实在受不了了,就先放上来了.
有机会了我再修正下.
2009-3-24 19:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
同志们,我们共同进步吧
2009-3-25 08:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
下面是我在分析的时候写的注释  算法我已经描述好了 可是我怎么想也想不到逆算法大家来讨论下。。这个CrackMe到底能不能写出注册机
0040187B  |.  50            PUSH EAX                                 ; /Arg1
0040187C  |.  E8 EFFEFFFF   CALL cm5.00401770                        ; \cm5.00401770
00401881  |.  83C4 04       ADD ESP,4
00401884  |.  C745 F0 00000>MOV DWORD PTR SS:[EBP-10],0
0040188B  |.  C745 EC 00000>MOV DWORD PTR SS:[EBP-14],0
00401892  |.  C745 E8 00000>MOV DWORD PTR SS:[EBP-18],0
00401899  |>  8B4D 08       /MOV ECX,DWORD PTR SS:[EBP+8]            ;  串uriteuurrgood....
0040189C  |.  034D EC       |ADD ECX,DWORD PTR SS:[EBP-14]           ;  i计数器
0040189F  |.  0FBE11        |MOVSX EDX,BYTE PTR DS:[ECX]             ;  取每位
004018A2  |.  85D2          |TEST EDX,EDX
004018A4  |.  74 7A         |JE SHORT cm5.00401920
004018A6  |.  8B45 0C       |MOV EAX,DWORD PTR SS:[EBP+C]            ;  串uurr
004018A9  |.  0345 E8       |ADD EAX,DWORD PTR SS:[EBP-18]           ;  j
004018AC  |.  0FBE08        |MOVSX ECX,BYTE PTR DS:[EAX]
004018AF  |.  85C9          |TEST ECX,ECX
004018B1  |.  74 6D         |JE SHORT cm5.00401920
004018B3  |.  8B55 08       |MOV EDX,DWORD PTR SS:[EBP+8]
004018B6  |.  0355 EC       |ADD EDX,DWORD PTR SS:[EBP-14]
004018B9  |.  0FBE02        |MOVSX EAX,BYTE PTR DS:[EDX]             ;  串1
004018BC  |.  8B4D 0C       |MOV ECX,DWORD PTR SS:[EBP+C]            ;  串2
004018BF  |.  034D E8       |ADD ECX,DWORD PTR SS:[EBP-18]
004018C2  |.  0FBE11        |MOVSX EDX,BYTE PTR DS:[ECX]
004018C5  |.  3BC2          |CMP EAX,EDX                             ;  比较串12每位
004018C7  |.  75 14         |JNZ SHORT cm5.004018DD
004018C9  |.  8B45 EC       |MOV EAX,DWORD PTR SS:[EBP-14]           ;  i自增
004018CC  |.  83C0 01       |ADD EAX,1
004018CF  |.  8945 EC       |MOV DWORD PTR SS:[EBP-14],EAX
004018D2  |.  8B4D E8       |MOV ECX,DWORD PTR SS:[EBP-18]           ;  j自增
004018D5  |.  83C1 01       |ADD ECX,1
004018D8  |.  894D E8       |MOV DWORD PTR SS:[EBP-18],ECX
004018DB  |.  EB 3E         |JMP SHORT cm5.0040191B
004018DD  |>  8B55 E8       |MOV EDX,DWORD PTR SS:[EBP-18]           ;  j计数
004018E0  |.  8B45 F4       |MOV EAX,DWORD PTR SS:[EBP-C]            ;  指向注册码
004018E3  |.  8B4D E8       |MOV ECX,DWORD PTR SS:[EBP-18]           ;  j计数
004018E6  |.  2B0C90        |SUB ECX,DWORD PTR DS:[EAX+EDX*4]        ;  取[注册码基地址+j]的值
004018E9  |.  8B55 F0       |MOV EDX,DWORD PTR SS:[EBP-10]           ;  s变量加上j-[基+j]
004018EC  |.  03D1          |ADD EDX,ECX
004018EE  |.  8955 F0       |MOV DWORD PTR SS:[EBP-10],EDX
004018F1  |.  8B45 E8       |MOV EAX,DWORD PTR SS:[EBP-18]           ;  eax=j
004018F4  |.  8B4D F4       |MOV ECX,DWORD PTR SS:[EBP-C]            ;  注册码基址
004018F7  |.  833C81 FF     |CMP DWORD PTR DS:[ECX+EAX*4],-1         ;  [基+j]=-1?
004018FB  |.  74 0E         |JE SHORT cm5.0040190B                   ;  等于的话跳
004018FD  |.  8B55 E8       |MOV EDX,DWORD PTR SS:[EBP-18]           ;  j
00401900  |.  8B45 F4       |MOV EAX,DWORD PTR SS:[EBP-C]            ;  注册码基址
00401903  |.  8B0C90        |MOV ECX,DWORD PTR DS:[EAX+EDX*4]
00401906  |.  894D E8       |MOV DWORD PTR SS:[EBP-18],ECX           ;  j=[基+j]
00401909  |.  EB 10         |JMP SHORT cm5.0040191B
0040190B  |>  C745 E8 00000>|MOV DWORD PTR SS:[EBP-18],0
00401912  |.  8B55 EC       |MOV EDX,DWORD PTR SS:[EBP-14]
00401915  |.  83C2 01       |ADD EDX,1
00401918  |.  8955 EC       |MOV DWORD PTR SS:[EBP-14],EDX
0040191B  |>^ E9 79FFFFFF   \JMP cm5.00401899

当累计变量s=5时注册成功
下面是我用c写的伪代码(草稿版)
EAX=00000001
DS:[003866B8]=BAADF00D
堆栈 SS:[0012F6F0]=003866B8
EAX=00000072  0
char name[20];uriteuurrgoodgoodstudydaydayup   i
char pass[20]; 01234567890
char name2[30];uurrvvvvvv   j
i=0
j=0
if name[i]==name2[j]
i++
j++
else
s+=j-pass[j]
j=pass[j]
堆栈 SS:[0012F704]=0012F758, (ASCII "uriteuurrgoodgoodstudydaydayup")
ECX=00000009
跳转来自 0040191B
j-5
1-5
pass0123456
     3  10
2009-3-28 19:20
0
雪    币: 136
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
如果KEY输入数字 程序将无响应?(系统是WINDOWS7)
2009-3-28 19:49
0
雪    币: 10936
活跃值: (3293)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
16
算法是计算机专业的可能都掌握的,
就好比冒泡排序一样.

有空了我再完善下这个cm 那样找注册码应该就不会很容易了.

要想理解算法的确头疼,看代码都不好理解.

"如果KEY输入数字 程序将无响应?(系统是WINDOWS7)"
是因为输入的key不正确,进入死循环了.
2009-3-28 20:22
0
游客
登录 | 注册 方可回帖
返回
//