【吾爱破解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
请提供爆破后的程序。
第一次参加,输入任意Name和serial就行
丶纯情小强 发表于 2014-10-22 22:10
第一次参加,输入任意Name和serial就行
爆破有效 最后成绩:187*70%*50%=65分
评委评价:爆破有效。
谢谢参与,请继续加油。 支持支持厉害厉害!!!!!! 好厉害!! 都是大神啊 敬佩!!.. 学习 学习~~~~~
页:
[1]
2