吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3075|回复: 3
收起左侧

[CrackMe] 【吾爱2013CM大赛解答】 苏紫方璇CrackMe FYWY分析

[复制链接]
fywy 发表于 2013-12-15 13:42
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

本帖最后由 fywy 于 2013-12-15 15:47 编辑

【破文标题】[CrackMe] 【吾爱2013CM大赛题目】-- CrackMe -- 苏紫方璇  分析
【破文作者】fywy
【作者邮箱】1349718927@qq.com
破解工具】OD CALCULATOR
【破解平台】winxp
【原版下载】http://www.52pojie.cn/thread-228417-1-1.html
------------------------------------------------------------------------
【破解过程】一、OD载入如图1

二、下万能断点如图2

然后确定
三次F9后CM出现
输入用户名和注册码点确定,如图3

此时断下来了
4次F9后,在寄存器中看到输入的假注册码
如图4:

此时按F8返回
到如图5:

返回到程序领空
继续F8
00401757   .  E8 36060000   call <jmp.&MFC42.#6334>
0040175C   .  8B8D C4FEFFFF mov ecx,dword ptr ss:[ebp-0x13C]
00401762   .  8B51 60       mov edx,dword ptr ds:[ecx+0x60]
00401765   .  8995 CCFEFFFF mov dword ptr ss:[ebp-0x134],edx         ;  读用户名
0040176B   .  8D85 E4FEFFFF lea eax,dword ptr ss:[ebp-0x11C]
00401771   .  50            push eax
00401772   .  8B8D CCFEFFFF mov ecx,dword ptr ss:[ebp-0x134]
00401778   .  51            push ecx
00401779   .  E8 92FDFFFF   call CrackMe.00401510                    ;  关键CALL
此CALL进入(F7)看看

00401510  /$  83EC 08       sub esp,0x8
00401513  |.  53            push ebx
00401514  |.  8B5C24 10     mov ebx,dword ptr ss:[esp+0x10]
00401518  |.  57            push edi
00401519  |.  8BFB          mov edi,ebx
0040151B  |.  83C9 FF       or ecx,0xFFFFFFFF
0040151E  |.  33C0          xor eax,eax
00401520  |.  F2:AE         repne scas byte ptr es:[edi]
00401522  |.  F7D1          not ecx
00401524  |.  49            dec ecx
00401525  |.  C64424 08 25  mov byte ptr ss:[esp+0x8],0x25
0040152A  |.  85C9          test ecx,ecx
0040152C  |.  C64424 09 30  mov byte ptr ss:[esp+0x9],0x30
00401531  |.  C64424 0A 32  mov byte ptr ss:[esp+0xA],0x32
00401536  |.  C64424 0B 58  mov byte ptr ss:[esp+0xB],0x58
0040153B  |.  C64424 0C 00  mov byte ptr ss:[esp+0xC],0x0
00401540  |.  7E 34         jle XCrackMe.00401576
00401542  |.  55            push ebp
00401543  |.  8B2D C8314000 mov ebp,dword ptr ds:[<&MSVCRT.sprintf>] ;  msvcrt.sprintf
00401549  |.  56            push esi
0040154A  |.  8B7424 20     mov esi,dword ptr ss:[esp+0x20]
0040154E  |.  8BF9          mov edi,ecx
00401550  |>  33C0          /xor eax,eax
00401552  |.  8A03          |mov al,byte ptr ds:[ebx]                ;  取用户名第I位
00401554  |.  8D0440        |lea eax,dword ptr ds:[eax+eax*2]        ;  用户名第I位的ACSII+(用户名第I位的ACSII*2)
00401557  |.  99            |cdq
00401558  |.  2BC2          |sub eax,edx                             ;  EAX-EDX
0040155A  |.  D1F8          |sar eax,1                               ;  EAX算术右移指令1位
0040155C  |.  25 FF000000   |and eax,0xFF                            ;  EAX逻辑与运算0XFF
00401561  |.  50            |push eax
00401562  |.  8D4424 14     |lea eax,dword ptr ss:[esp+0x14]
00401566  |.  50            |push eax
00401567  |.  56            |push esi
00401568  |.  FFD5          |call ebp
0040156A  |.  83C4 0C       |add esp,0xC
0040156D  |.  83C6 02       |add esi,0x2
00401570  |.  43            |inc ebx
00401571  |.  4F            |dec edi
00401572  |.^ 75 DC         \jnz XCrackMe.00401550
00401574  |.  5E            pop esi
00401575  |.  5D            pop ebp
00401576  |>  5F            pop edi
00401577  |.  5B            pop ebx
00401578  |.  83C4 08       add esp,0x8
0040157B  \.  C3            retn
此CALL为算法CALL
此时算出注册码如图6


往下就是真假码比较了
0040177E   .  83C4 08       add esp,0x8
00401781   .  8B95 C4FEFFFF mov edx,dword ptr ss:[ebp-0x13C]
00401787   .  8B42 64       mov eax,dword ptr ds:[edx+0x64]
0040178A   .  8985 C8FEFFFF mov dword ptr ss:[ebp-0x138],eax
00401790   .  8B8D C8FEFFFF mov ecx,dword ptr ss:[ebp-0x138]
00401796   .  898D A8FEFFFF mov dword ptr ss:[ebp-0x158],ecx
0040179C   .  8D95 E4FEFFFF lea edx,dword ptr ss:[ebp-0x11C]
004017A2   .  8995 A4FEFFFF mov dword ptr ss:[ebp-0x15C],edx
004017A8   >  8B85 A4FEFFFF mov eax,dword ptr ss:[ebp-0x15C]
004017AE   .  8A08          mov cl,byte ptr ds:[eax]
004017B0   .  888D A3FEFFFF mov byte ptr ss:[ebp-0x15D],cl
004017B6   .  8B95 A8FEFFFF mov edx,dword ptr ss:[ebp-0x158]
004017BC   .  3A0A          cmp cl,byte ptr ds:[edx]
004017BE   .  75 46         jnz XCrackMe.00401806
004017C0   .  80BD A3FEFFFF>cmp byte ptr ss:[ebp-0x15D],0x0
004017C7   .  74 31         je XCrackMe.004017FA
004017C9   .  8B85 A4FEFFFF mov eax,dword ptr ss:[ebp-0x15C]
004017CF   .  8A48 01       mov cl,byte ptr ds:[eax+0x1]
004017D2   .  888D A2FEFFFF mov byte ptr ss:[ebp-0x15E],cl
004017D8   .  8B95 A8FEFFFF mov edx,dword ptr ss:[ebp-0x158]
004017DE   .  3A4A 01       cmp cl,byte ptr ds:[edx+0x1]
004017E1   .  75 23         jnz XCrackMe.00401806
004017E3   .  8385 A4FEFFFF>add dword ptr ss:[ebp-0x15C],0x2
004017EA   .  8385 A8FEFFFF>add dword ptr ss:[ebp-0x158],0x2
004017F1   .  80BD A2FEFFFF>cmp byte ptr ss:[ebp-0x15E],0x0
004017F8   .^ 75 AE         jnz XCrackMe.004017A8
004017FA   >  C785 9CFEFFFF>mov dword ptr ss:[ebp-0x164],0x0
00401804   .  EB 0B         jmp XCrackMe.00401811
00401806   >  1BC0          sbb eax,eax
00401808   .  83D8 FF       sbb eax,-0x1
0040180B   .  8985 9CFEFFFF mov dword ptr ss:[ebp-0x164],eax
00401811   >  8B8D 9CFEFFFF mov ecx,dword ptr ss:[ebp-0x164]
00401817   .  898D 98FEFFFF mov dword ptr ss:[ebp-0x168],ecx
0040181D   .  83BD 98FEFFFF>cmp dword ptr ss:[ebp-0x168],0x0
00401824   .  75 07         jnz XCrackMe.0040182D
00401826   .^ E9 11FEFFFF   jmp CrackMe.0040163C
0040182B   .  EB 05         jmp XCrackMe.00401832
0040182D   >^ E9 06FFFFFF   jmp CrackMe.00401738
00401832   >  8B4D F0       mov ecx,dword ptr ss:[ebp-0x10]
00401835   .  64:890D 00000>mov dword ptr fs:[0],ecx
0040183C   .  5F            pop edi
0040183D   .  5E            pop esi
0040183E   .  5B            pop ebx
0040183F   .  8BE5          mov esp,ebp
00401841   .  5D            pop ebp
00401842   .  C3            retn
不再描述。
算法总结:
1、取用户名第I位
2、用户名第I位的ASCII +  (用户名第I位的ASCII *2 ) 记为M
3、M >>1 记为N
4、N AND  FF  记为K
以此类推,直到用户名取完,所有连接在一起即为注册码

------------------------------------------------------------------------
【破解总结】算法总结:
1、取用户名第I位
2、用户名第I位的ASCII +  (用户名第I位的ASCII *2 ) 记为M
3、M >>1 记为N
4、N AND  FF  记为K
以此类推,直到用户名取完,所有连接在一起即为注册码
注册机运行结果

注册机VB源码:

Private Sub Command1_Click()
If Text1.Text = "" Then
MsgBox "用户名为空!太有才了,请重新输入", vbOKCancel + vbCritical, "错误"
Else
yhm = Text1.Text
xx = ""
For i = 1 To Len(yhm)
x = Asc(Mid(yhm, i, 1)) + Asc(Mid(yhm, i, 1)) * 2
xx = Hex(x \ 2 And 255)
yy = yy & xx
Next i
Text2.Text = yy
Clipboard.Clear
Clipboard.SetText Text2.Text
MsgBox "已复制到粘贴板上,请直接粘贴注册码注册即可!", vbOKOnly + vbInformation, "已复制"
End If
End Sub


Private Sub Command2_Click()
End
End Sub
------------------------------------------------------------------------
注册机及源码下载:



使用吾爱破解专用注册机生成器生成的注册机








下载


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 1热心值 +1 收起 理由
Chief + 1 吾爱破解2013CM大赛,有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

brack 发表于 2013-12-15 13:51
厉害.膜拜算法牛.
走在薄冰上 发表于 2013-12-15 14:10
头像被屏蔽
bambooqj 发表于 2013-12-15 14:17
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 15:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表