Emil 发表于 2014-10-22 18:35

【吾爱破解2014CrackMe大赛】【第一组

本帖最后由 ximo 于 2014-10-23 20:49 编辑

【吾爱破解2014CrackMe大赛】【第一组】-- LCG.zip


1.
      Name:www.52pojie.cn
      Serial:1234567890
点击Register,弹出错误提示

2.
经过第1步分析,我想到用MessageBoxA api断点
Bp MessageBoxA
重复第1步,这个时候断下来了

0012EA3C   10001E2B/CALL to MessageBoxA from 10001E25
0012EA40   002006FC|hOwner = 002006FC ('吾爱破解2014CrackMe大赛',class='#32770')
0012EA44   10008860|Text = "很抱歉,注册失败,继续加油吧!"
0012EA48   1000881C|Title = "吾爱破解2014CrackMe大赛"
0012EA4C   00000010\Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
0012EA50   00933528
0012EA54   10000000
0012EA58   00000005
0012EA5C   00000000
0012EA60/0012EA70
0012EA64|10001EA6RETURN to 10001EA6 from 10001D40
0012EA68|002006FC
0012EA6C|000090FC
0012EA70]0012FB30
0012EA74|00402870RETURN to CrackMe.00402870   //在这里Enter
0012EA78|002006FC
0012EA7C|0012EABCASCII "www.52pojie.cn"
0012EA80|0012EAF0ASCII "1234567890"

然后来到这里
00402870|.56            push esi                                 ; /Arg2
00402871|.8D5424 20   lea edx,dword ptr ss:          ; |
00402875|.52            push edx                                 ; |Arg1
往上,找到段首,F2下断
00402690|$55            push ebp                                 ;段首下断点
00402691|.8BEC          mov ebp,esp
F9运行

3.
接下里,我们直接点注册,这个时候就会在段首00402690断下
F8往下走
这里获取Name
00402704|.FFD6          call esi                                 ; \GetDlgItemTextA
00402706|.68 23100000   push 0x1023                              ;这里获取Name的值
这里获取Serial
0040272F|.FFD6          call esi                                 ;user32.GetDlgItemTextA
00402731|.68 B0DB4000   push CrackMe.0040DBB0                  ;这里获取Serial

申请内存,返回内存地址
004027FC|.53            push ebx                                 ; /Arg2
004027FD|.8D4C24 20   lea ecx,dword ptr ss:          ; |
00402801|.51            push ecx                                 ; |Arg1
00402802|.8BC7          mov eax,edi                              ; |
00402804|.89B424 B01000>mov dword ptr ss:,esi      ; |
0040280B|.E8 90E8FFFF   call CrackMe.004010A0                  ; \CrackMe.004010A0

大概意思是申请内存,然后写入代码(主要算法逻辑代码)到申请的内存,返回内存地址
00402842|.85C0          test eax,eax                           ;此时eax的值,等下可以用得到eax=10001E40
00402844|.75 19         jnz short CrackMe.0040285F               ;

这里开始步入正题
0040286C|.52            push edx                                 ;这里push Serial
0040286D|.51            push ecx                                 ;push name
0040286E|.FFD0          call eax                                 ;call申请的内存地址,进入这里面后,就是判断的关键地方了,F7进入

F7进入以后,各种字符串,暴露无遗
首先判断Name是否为空
10001E54    68 1C880010   push 0x1000881C                        ; ASCII "吾爱破解2014CrackMe大赛"
10001E59    68 80880010   push 0x10008880                        ; ASCII "请输入用户名,再进行注册!"

在判断Serail是否为空
10001E87    68 1C880010   push 0x1000881C                        ; ASCII "吾爱破解2014CrackMe大赛"
10001E8C    68 9C880010   push 0x1000889C                        ; ASCII "请输入注册码,再进行注册!"

进入下一步判断
10001EA0    52            push edx
10001EA1    E8 9AFEFFFF   call 10001D40                            ; 如果Name和Serail都不是空,进入下一步判断,F7步入

爆破地方
10001DF3    837D FC 08      cmp dword ptr ss:,0x8
10001DF7    75 1C         jnz short 10001E15                     ; nop掉就就爆破了


总结:虽然爆破了,如果再次点击Register,还是会提示注册失败,这是因为,他会申请内存后,回重新给内存写代码,这个时候,就会把我们nop的地方给覆盖了

最后,带上一张图片


我是用户 发表于 2014-10-22 18:39

请提供爆破后的程序。

Emil 发表于 2014-10-22 22:10

我是用户 发表于 2014-10-22 18:39
请提供爆破后的程序。



第一次参加,输入任意Name和serial就行

我是用户 发表于 2014-10-23 09:47

丶纯情小强 发表于 2014-10-22 22:10
第一次参加,输入任意Name和serial就行

爆破有效

ximo 发表于 2014-10-23 20:49

最后成绩:187*70%*50%=65分
评委评价:爆破有效。
谢谢参与,请继续加油。

hack_koko 发表于 2014-10-23 23:22

o6o7o5 发表于 2016-5-1 16:52

支持支持厉害厉害!!!!!!

烈枫寒 发表于 2016-6-9 17:45

好厉害!!

qq332619846 发表于 2016-6-27 20:26

都是大神啊 敬佩!!..

tds007 发表于 2016-7-4 14:32

学习 学习~~~~~
页: [1] 2
查看完整版本: 【吾爱破解2014CrackMe大赛】【第一组