【破文作者】Winter
【作者邮箱】spsgeyro@gmail.com
【所属组织】[CZG][D.4s][BCG]
【组织主页】http://www.5icrack.com
【个人主页】http://winternight.blogchina.com/
【使用工具】OD(DIY版),PEiD,Imprec
【操作系统】Windows 2003
--------------------------------------------------------------------------------
【软件名称】连连连4-爆链版
【下载地址】http://fictionking.cn/fiction/download.htm
【破解难度】easy
【保护方式】MD5
【软件语言】Borland C++ 1999
【软件简介】《连连连4》是国内最好玩的“连连看”类游戏,《连连连4-爆链版》在保留原先的隐藏物
品特性外新增“爆链”技能!在1秒左右时间内消去两对牌就能增加1点“爆链”技能值,当右上角的
“爆链”技能蓄能条满后,点击即可使用“爆链”技能,自动为您消去20对牌。
【破解声明】仅仅学习,失误之处请大侠们赐教
【破解目的】学习算法
--------------------------------------------------------------------------------
【过程】
加入bcg后,感到自己实在是海边那被小男孩捡的一个贝壳而已=.=,于是开始慢慢学习,没想到上手是个软柿子,开心~
装完软件,用peid查壳,语言是Borland C++ 1999,再看一下加密算法:MD5,试试看。
OD载入程序,查找一下字符串:
Ultra String Reference,项目 15
Address=00406B35
Disassembly=MOV EDX,StartGam.00482279
Text String=无效的注册码!
这个是好东西,双击过去:
00406B29 |> \A1 D4BC4800 MOV EAX,DWORD PTR DS:[48BCD4] //这里可以看到是Jump from 00406A07
00406B2E |. 6A 00 PUSH 0
00406B30 |. B9 88224800 MOV ECX,StartGam.00482288
00406B35 |. BA 79224800 MOV EDX,StartGam.00482279
然后回溯,在这里下个断点:
0040688C /. 55 PUSH EBP
0040688D |. 8BEC MOV EBP,ESP
0040688F |. 81C4 40FEFFF>ADD ESP,-1C0
00406895 |. 53 PUSH EBX
00406896 |. 56 PUSH ESI
输入用户名密码后按注册,断下,慢慢跟:
004068FF |. 52 PUSH EDX
00406900 |. BA 44224800 MOV EDX,StartGam.00482244 ; //跟到这里,记下这个字符串ASCII "lnk4lnk4lnk4"
00406905 |. 8D45 98 LEA EAX,DWORD PTR SS:[EBP-68]
00406908 |. E8 5B980700 CALL StartGam.00480168
0040693A |. E8 9D980700 CALL StartGam.004801DC
0040693F |. FF4D 84 DEC DWORD PTR SS:[EBP-7C]
00406942 |. 8D45 98 LEA EAX,DWORD PTR SS:[EBP-68]
00406945 |. BA 02000000 MOV EDX,2 //来到这里,注意看堆栈,上面这些程序的意思是把"lnk4lnk4lnk4"加在用户名后面作后缀,得到字符串a
0040696C |. 8B45 A0 MOV EAX,DWORD PTR SS:[EBP-60] //字符串a进入eax
0040696F |. 8B50 FC MOV EDX,DWORD PTR DS:[EAX-4]
00406972 |. EB 02 JMP SHORT StartGam.00406976
00406974 |> 33D2 XOR EDX,EDX
00406976 |> 52 PUSH EDX
0040697B |. /74 05 JE SHORT StartGam.00406982 //接下来进行字符串初始化操作
0040697D |. |8B45 A0 MOV EAX,DWORD PTR SS:[EBP-60]
00406980 |. |EB 05 JMP SHORT StartGam.00406987
00406982 |> \B8 51224800 MOV EAX,StartGam.00482251
00406987 |> 50 PUSH EAX ; |Arg2
00406988 |. 8D55 A4 LEA EDX,DWORD PTR SS:[EBP-5C] ; |
0040698B |. 52 PUSH EDX ; |Arg1
0040698C |. E8 B7020000 CALL StartGam.00406C48 ;
\StartGam.00406C48 //比较关键,进去看看
00406C48 /$ 55 PUSH EBP
00406C49 |. 8BEC MOV EBP,ESP
00406C4B |. 83C4 80 ADD ESP,-80
00406C4E |. B8 CC254800 MOV EAX,StartGam.004825CC
00406C53 |. E8 44F60600 CALL StartGam.0047629C
00406C58 |. 66:C745 90 0>MOV WORD PTR SS:[EBP-70],8
00406C5E |. 8D55 A4 LEA EDX,DWORD PTR SS:[EBP-5C]
00406C61 |. 52 PUSH EDX ; /Arg1
00406C62 |. E8 4D180000 CALL StartGam.004084B4 ;
\StartGam.004084B4
00406C67 |. 59 POP ECX
00406C68 |. FF45 9C INC DWORD PTR SS:[EBP-64]
00406C6B |. 66:C745 90 1>MOV WORD PTR SS:[EBP-70],14
00406C71 |. 8B4D 10 MOV ECX,DWORD PTR SS:[EBP+10]
00406C74 |. 51 PUSH ECX ; /Arg3
00406C75 |. 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C] ; |
00406C78 |. 50 PUSH EAX ; |Arg2
00406C79 |. 8D55 A4 LEA EDX,DWORD PTR SS:[EBP-5C] ; |
00406C7C |. 52 PUSH EDX ; |Arg1
00406C7D |. E8 FA190000 CALL StartGam.0040867C ;
\StartGam.0040867C
00406C82 |. 83C4 0C ADD ESP,0C
00406C85 |. 8B4D 14 MOV ECX,DWORD PTR SS:[EBP+14]
00406C88 |. 51 PUSH ECX ; /Arg2
00406C89 |. 8D45 A4 LEA EAX,DWORD PTR SS:[EBP-5C] ; |
00406C8C |. 50 PUSH EAX ; |Arg1
00406C8D |. E8 0E190000 CALL StartGam.004085A0 ;
\StartGam.004085A0 //这里出来的是注册码,进去看看
00406C92 |. 83C4 08 ADD ESP,8
00406C95 |. FF4D 9C DEC DWORD PTR SS:[EBP-64]
00406C98 |. 8B55 80 MOV EDX,DWORD PTR SS:[EBP-80]
00406C9B |. 64:8915 0000>MOV DWORD PTR FS:[0],EDX
00406CA2 |. 8BE5 MOV ESP,EBP
00406CA4 |. 5D POP EBP
00406CA5 \. C3 RETN
004085A0 /$ 55 PUSH EBP //来到这里,不过下面进行的是md5操作,因此没必要复制一大串代码上来了
004085A1 |. 8BEC MOV EBP,ESP
004085A3 |. 83C4 E8 ADD ESP,-18
004085A6 |. 53 PUSH EBX
004085A7 |. 56 PUSH ESI
004085A8 |. 57 PUSH EDI
004085A9 |. 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8]
004085AC |. 6A 08 PUSH 8 ; /Arg4 = 00000008
004085AE |. 8D43 44 LEA EAX,DWORD PTR DS:[EBX+44] ; |
004085B1 |. 50 PUSH EAX ; |Arg3
004069E3 |. E8 24310600 CALL StartGam.00469B0C //出来以后,这里把试炼码位数放入eax
00406A05 |. 84C9 TEST CL,CL //这里对真假条件比较
00406A07 |. 0F84 1C01000>JE StartGam.00406B29 //跳了就完了
注册码总结:
用户名+后缀lnk4lnk4lnk4,用md5加密一下就是注册码了。
例:用户名Winter[CZG][D.4s][BCG],加了后缀:Winter[CZG][D.4s][BCG]lnk4lnk4lnk4,注册码就是:D49E472D44C0CC587967EB80FB2FC107
不过注册成功更奇怪,多了个link4res.dll文件,内容好像固定是55D28F7B53D9B67A06FCE5BA84DD3ABB
到这里就完成了,想想学破解快一年了,还没成就,惭愧~,努力学习中……
--------------------------------------------------------------------------------
【版权声明】转载请注明作者以及确保文章完整性,谢谢
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!