吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3613|回复: 9
收起左侧

[第五题] 【吾爱破解2014CrackMe大赛】【第五组】

[复制链接]
codelive 发表于 2014-10-26 01:02
本帖最后由 ximo 于 2014-10-28 10:56 编辑

无爆破提交,有时间再分析算法吧。
2014-10-26_005029.png

主要函数:
0040A0A1  /$  55            push ebp
0040A0A2  |.  8BEC          mov ebp,esp
0040A0A4  |.  81EC 18000000 sub esp,0x18
0040A0AA  |.  C745 FC 00000>mov [local.1],0x0
0040A0B1  |.  C745 FC 01000>mov [local.1],0x1
0040A0B8  |.  6A FF         push -0x1
0040A0BA  |.  6A 08         push 0x8
0040A0BC  |.  68 03000116   push 0x16010003
0040A0C1  |.  68 01000152   push 0x52010001
0040A0C6  |.  E8 09350000   call CrackMe.0040D5D4
0040A0CB  |.  83C4 10       add esp,0x10
0040A0CE  |.  8945 F8       mov [local.2],eax
0040A0D1  |.  8B45 F8       mov eax,[local.2]
0040A0D4  |.  50            push eax
0040A0D5  |.  8B1D CCED4900 mov ebx,dword ptr ds:[0x49EDCC]
0040A0DB  |.  85DB          test ebx,ebx
0040A0DD  |.  74 09         je XCrackMe.0040A0E8
0040A0DF  |.  53            push ebx
0040A0E0  |.  E8 CB340000   call CrackMe.0040D5B0
0040A0E5  |.  83C4 04       add esp,0x4
0040A0E8  |>  58            pop eax
0040A0E9  |.  A3 CCED4900   mov dword ptr ds:[0x49EDCC],eax
0040A0EE  |.  6A FF         push -0x1
0040A0F0  |.  6A 08         push 0x8
0040A0F2  |.  68 02000116   push 0x16010002
0040A0F7  |.  68 01000152   push 0x52010001
0040A0FC  |.  E8 D3340000   call CrackMe.0040D5D4
0040A101  |.  83C4 10       add esp,0x10
0040A104  |.  8945 F8       mov [local.2],eax
0040A107  |.  8B45 F8       mov eax,[local.2]
0040A10A  |.  50            push eax
0040A10B  |.  8B1D E4ED4900 mov ebx,dword ptr ds:[0x49EDE4]
0040A111  |.  85DB          test ebx,ebx
0040A113  |.  74 09         je XCrackMe.0040A11E
0040A115  |.  53            push ebx
0040A116  |.  E8 95340000   call CrackMe.0040D5B0
0040A11B  |.  83C4 04       add esp,0x4
0040A11E  |>  58            pop eax
0040A11F  |.  A3 E4ED4900   mov dword ptr ds:[0x49EDE4],eax
0040A124  |.  6A FF         push -0x1
0040A126  |.  6A 08         push 0x8
0040A128  |.  68 02000116   push 0x16010002
0040A12D  |.  68 01000152   push 0x52010001
0040A132  |.  E8 9D340000   call CrackMe.0040D5D4
0040A137  |.  83C4 10       add esp,0x10
0040A13A  |.  8945 F8       mov [local.2],eax
0040A13D  |.  68 4FD24700   push CrackMe.0047D24F
0040A142  |.  FF75 F8       push [local.2]
0040A145  |.  E8 C270FFFF   call CrackMe.0040120C
0040A14A  |.  83C4 08       add esp,0x8
0040A14D  |.  83F8 00       cmp eax,0x0
0040A150  |.  B8 00000000   mov eax,0x0
0040A155  |.  0F95C0        setne al
0040A158  |.  8945 F4       mov [local.3],eax
0040A15B  |.  8B5D F8       mov ebx,[local.2]
0040A15E  |.  85DB          test ebx,ebx
0040A160  |.  74 09         je XCrackMe.0040A16B
0040A162  |.  53            push ebx
0040A163  |.  E8 48340000   call CrackMe.0040D5B0
0040A168  |.  83C4 04       add esp,0x4
0040A16B  |>  837D F4 00    cmp [local.3],0x0
0040A16F  |.  0F85 55000000 jnz CrackMe.0040A1CA
0040A175  |.  6A FF         push -0x1
0040A177  |.  6A 08         push 0x8
0040A179  |.  68 03000116   push 0x16010003
0040A17E  |.  68 01000152   push 0x52010001
0040A183  |.  E8 4C340000   call CrackMe.0040D5D4
0040A188  |.  83C4 10       add esp,0x10
0040A18B  |.  8945 F0       mov [local.4],eax
0040A18E  |.  68 4FD24700   push CrackMe.0047D24F
0040A193  |.  FF75 F0       push [local.4]
0040A196  |.  E8 7170FFFF   call CrackMe.0040120C
0040A19B  |.  83C4 08       add esp,0x8
0040A19E  |.  83F8 00       cmp eax,0x0
0040A1A1  |.  B8 00000000   mov eax,0x0
0040A1A6  |.  0F95C0        setne al
0040A1A9  |.  8945 EC       mov [local.5],eax
0040A1AC  |.  8B5D F0       mov ebx,[local.4]
0040A1AF  |.  85DB          test ebx,ebx
0040A1B1  |.  74 09         je XCrackMe.0040A1BC
0040A1B3  |.  53            push ebx
0040A1B4  |.  E8 F7330000   call CrackMe.0040D5B0
0040A1B9  |.  83C4 04       add esp,0x4
0040A1BC  |>  837D EC 00    cmp [local.5],0x0
0040A1C0  |.  0F85 04000000 jnz CrackMe.0040A1CA
0040A1C6  |.  33C0          xor eax,eax
0040A1C8  |.  EB 05         jmp XCrackMe.0040A1CF
0040A1CA  |>  B8 01000000   mov eax,0x1
0040A1CF  |>  85C0          test eax,eax
0040A1D1  |.  0F84 05010000 je CrackMe.0040A2DC
0040A1D7      837D FC 02    cmp dword ptr ss:[ebp-0x4],0x2
0040A1DB      0F85 4E000000 jnz CrackMe.0040A22F  //这里是判断是否正确
0040A1E1  |.  68 010100A0   |push 0xA0000101
0040A1E6  |.  6A 00         |push 0x0
0040A1E8  |.  68 2DD54700   |push CrackMe.0047D52D       // 这里是注册成功信息
0040A1ED  |.  68 01000000   |push 0x1
0040A1F2  |.  BB 80EB4000   |mov ebx,CrackMe.0040EB80
0040A1F7  |.  E8 BA330000   |call CrackMe.0040D5B6
0040A1FC  |.  83C4 10       |add esp,0x10
0040A1FF  |.  8945 F8       |mov [local.2],eax
0040A202  |.  6A 00         |push 0x0
0040A204  |.  FF75 F8       |push [local.2]
0040A207  |.  6A FF         |push -0x1
0040A209  |.  6A 08         |push 0x8
0040A20B  |.  68 AA3D0116   |push 0x16013DAA
0040A210  |.  68 01000152   |push 0x52010001
0040A215  |.  E8 B4330000   |call CrackMe.0040D5CE
0040A21A  |.  83C4 18       |add esp,0x18
0040A21D  |.  8B5D F8       |mov ebx,[local.2]
0040A220  |.  85DB          |test ebx,ebx
0040A222      74 09         je XCrackMe.0040A22D     // 应该是花指令
0040A224  |.  53            |push ebx
0040A225  |.  E8 86330000   |call CrackMe.0040D5B0
0040A22A  |.  83C4 04       |add esp,0x4
0040A22D  |>^ EB A8         \jmp XCrackMe.0040A1D7  // 应该是花指令,会造成死循环
0040A22F  |>  68 010100A0   push 0xA0000101
0040A234  |.  6A 00         push 0x0
0040A236  |.  68 4CD54700   push CrackMe.0047D54C
0040A23B  |.  68 01000000   push 0x1
0040A240  |.  BB 80EB4000   mov ebx,CrackMe.0040EB80
0040A245  |.  E8 6C330000   call CrackMe.0040D5B6


基于上面的分析,只要把两处红色部分Patch即可:

把位置1:
0040A1DB      0F85 4E000000 jnz CrackMe.0040A22F
改为:
0040A1DB      90            nop
0040A1DC      90            nop
0040A1DD      90            nop
0040A1DE      90            nop
0040A1DF      90            nop
0040A1E0      90            nop


把位置2:
0040A222      74 09         je XCrackMe.0040A22D     // 应该是花指令
改为:
0040A222     /EB 2C         jmp XCrackMe.0040A250

修改完成,不知道这样是否算是有效爆破.



CrackMe_第5组_codelive.zip

305.84 KB, 下载次数: 12

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

 楼主| codelive 发表于 2014-10-26 01:04
字打错了,是爆破提交.
Kido 发表于 2014-10-27 20:03
本帖最后由 Kido 于 2014-10-28 16:45 编辑

2014年10月28日更新

攻击方式:爆破
评委评价:曲意实现功能,考虑再三,判定爆破失效
得分:0
Poner 发表于 2014-10-28 16:09
Kido 发表于 2014-10-27 20:03
攻击方式:爆破
评委评价:爆破成功
得分:37

修改错误提示框提示也算爆破成功?正确提示和功能在VEH处理程序里 希望评委看下源代码在进行对比后重新评分
NewbieCai 发表于 2014-10-28 16:17
小白感觉就是要在死循环里得出结果- -因为如果有正确账号密码,它应该是在死循环里得出结果的吧?
Poner 发表于 2014-10-28 16:29
NewbieCai 发表于 2014-10-28 16:17
小白感觉就是要在死循环里得出结果- -因为如果有正确账号密码,它应该是在死循环里得出结果的吧?{:301_100 ...

死循环其实就是迷惑的假提示而已 真正的功能不在死循环 你可以去看看
http://www.52pojie.cn/thread-299010-1-1.html
这个帖子
魂殇 发表于 2014-10-28 17:22
{:1_914:}加油~~~~{:1_914:}
 楼主| codelive 发表于 2014-10-28 22:05
Kido 发表于 2014-10-27 20:03
2014年10月28日更新
攻击方式:爆破
评委评价:曲意实现功能,考虑再三,判定爆破失效

我在分析的时候也觉得这部分应该是一个陷阱,使用如此的方法爆破确实是不正确的,给0分是公正的决定!能从CM中学习到东西很有意义。
 楼主| codelive 发表于 2014-10-28 22:07
Poner 发表于 2014-10-28 16:29
死循环其实就是迷惑的假提示而已 真正的功能不在死循环 你可以去看看
http://www.52pojie.cn/thread-299 ...

我对陷阱代码中爆破是不正确的,受教了。
cason 发表于 2014-10-29 18:58 来自手机
好好好好好
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-22 05:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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