tree_fly 发表于 2014-10-29 16:21

【答案提交】【2014CrackMe大赛】【第八组】

本帖最后由 L4Nce 于 2014-11-1 15:04 编辑



0.输入任意字符串,没有提示。
1.PE检测编写语言Borland Delphi 6.0,DEDE找按钮事件:

注意到这里有注册成功的提示。

***** TRY
|
00452062   64FF30               push    dword ptr fs:
00452065   648920               mov   fs:, esp
00452068   8B45E8               mov   eax,
0045206B   99                     cdq
0045206C   F73D743D4500         idiv    dword ptr [$00453D74]
00452072   8945E8               mov   , eax
00452075   33C0                   xor   eax, eax
00452077   5A                     pop   edx
00452078   59                     pop   ecx
00452079   59                     pop   ecx
0045207A   648910               mov   fs:, edx
0045207D   EB1D                   jmp   0045209C

* Reference to: System.@HandleAnyException;
|
0045207F   E98418FBFF             jmp   00403908
00452084   6A00                   push    $00

* Possible String Reference to: '提示'
|
00452086   6810214500             push    $00452110

* Possible String Reference to: '注册成功!'
|
0045208B   6818214500             push    $00452118
00452090   6A00                   push    $00

* Reference to: user32.MessageBoxA()
|
00452092   E8BD48FBFF             call    00406954

* Reference to: System.@DoneExcept;
|
00452097   E8D41BFBFF             call    00403C70

****** END


目测是检测异常,提示注册成功。
关键触发点:idiv dword ptr
除数需等于0



正常情况下图中几处跳转必须成立,方能接近触发点。
我们再次研究了比赛说明中的关于爆破的说明:
单纯的修改提示字符串为成功字符串不算有效爆破。
       爆破成功时应和成功注册时效果相同。
       测试时,输入任意或指定的姓名和序列号,出现成功提示,就算通过。
鉴于评分官对爆破方案审查甚严,下面给出几种爆破方案:
方案一:触发异常:
0045203F    ^\75 BF                  JNZ   SHORT CrackMe.00452000
00452041      8B47 38                  MOV   EAX, DWORD PTR DS:
00452044      8B57 34                  MOV   EDX, DWORD PTR DS:       ;CrackMe.0044B9B1
00452047      3BC2                     CMP   EAX, EDX
修改:13字节

0045203F    ^\75 BF                  JNZ   SHORT CrackMe.00452000
00452041      C705 743D4500 00000000   MOV   DWORD PTR DS:, 0x0
0045204B      EB 0D                  JMP   SHORT CrackMe.0045205A
0045204D      90                     NOP









方案二:无视异常:
00452047      3BC2                     CMP   EAX, EDX
00452049      75 79                  JNZ   SHORT CrackMe.004520C4             ;比较
0045204B      3B47 44                  CMP   EAX, DWORD PTR DS:
修改2字节:

00452047      3BC2                     CMP   EAX, EDX
00452049      EB 39                    JMP   SHORT CrackMe.00452084             ;比较
0045204B      3B47 44                  CMP   EAX, DWORD PTR DS:




方案三:改变游戏规则:
全局变量修改共有18处,我们把这个地址Patch掉


另外Patch掉这里的跳转,直接进入异常


补丁工具这样写

      



算法部分,大牛们分析吧,像个小游戏
最后附上三种爆破方案的附件:




tree_fly 发表于 2014-10-29 16:23

请评分官忽略“我们”俩字,习惯了

L4Nce 发表于 2014-11-1 15:03

爆破有效
得分:6
在后续题目中继续加油!

o6o7o5 发表于 2016-5-1 15:54

继续加油!继续加油!继续加油!

tds007 发表于 2016-7-3 14:34

进来学习感谢分享~~~

asus888 发表于 2017-2-14 20:11

学习了,学点经验,刚入门
页: [1]
查看完整版本: 【答案提交】【2014CrackMe大赛】【第八组】