能力值:
( LV5,RANK:60 )
|
-
-
2 楼
username:u
key:,,
|
能力值:
( 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
这样都能成功。
|
能力值:
(RANK:520 )
|
-
-
4 楼
不错啊! 把算法搞清楚应该是比较难的.
找出一组正确注册码应该很轻松,这是用来给新手练习的.
第一个字母不为+也可以注册成功
|
能力值:
( LV13,RANK:760 )
|
-
-
5 楼
嗯,算法确实有点晕,数学不大好啊,我就看到最后结果是必须等于5。然后再反推的,要顺着程序跑,我就有点蒙
|
能力值:
( LV5,RANK:60 )
|
-
-
6 楼
用户名第一个字母怎么不能为u ?
没看到我给的一组吗?
|
能力值:
( LV13,RANK:760 )
|
-
-
7 楼
算法分支较多,我没分析第一个字母为u的情况。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
谢谢楼主分享。
用die查了一下,不知什么壳?有源码吗?
|
能力值:
(RANK:520 )
|
-
-
9 楼
标准的vc++6.0 没壳啊
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
太深了,看不懂
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
算到最好就一个 CMP EAX,5
|
能力值:
(RANK:520 )
|
-
-
12 楼
是的,如果算法条件过滤严格点,真正按算法来找注册码会比较难
上面给的几个注册码,都是饶过算法 取巧得到的注册码.
当是在看这个算法时 剧烈头疼,实在受不了了,就先放上来了.
有机会了我再修正下.
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
同志们,我们共同进步吧
|
能力值:
( 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
|
能力值:
( LV4,RANK:50 )
|
-
-
15 楼
如果KEY输入数字 程序将无响应?(系统是WINDOWS7)
|
能力值:
(RANK:520 )
|
-
-
16 楼
算法是计算机专业的可能都掌握的,
就好比冒泡排序一样.
有空了我再完善下这个cm 那样找注册码应该就不会很容易了.
要想理解算法的确头疼,看代码都不好理解.
"如果KEY输入数字 程序将无响应?(系统是WINDOWS7)"
是因为输入的key不正确,进入死循环了.
|