吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 15927|回复: 19
收起左侧

[第八题] 【答案提交】【吾爱破解2014CrackMe大赛】【第八组】

  [复制链接]
苏紫方璇 发表于 2014-10-29 12:18
本帖最后由 L4Nce 于 2014-11-1 14:59 编辑

首先先查一下什么语言写得  发现是delphi  然后使用dede或者od搜索事件特征码定位按钮按下事件。
在od按钮按下事件处下断
[Asm] 纯文本查看 复制代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
00451F1C > .  55            push ebp                                ;  <-TForm1@Button1Click
00451F1D   .  8BEC          mov ebp,esp
00451F1F   .  B9 06000000   mov ecx,0x6
00451F24 > >  6A 00         push 0x0
00451F26   .  6A 00         push 0x0
00451F28   .  49            dec ecx
00451F29   .^ 75 F9         jnz X<CrackMe.loc_451F24>
00451F2B   .  53            push ebx
00451F2C   .  56            push esi
00451F2D   .  57            push edi
00451F2E   .  8BD8          mov ebx,eax
00451F30   .  BF 243D4500   mov edi,offset <CrackMe.dword_453D24>
00451F35   .  33C0          xor eax,eax
00451F37   .  55            push ebp
00451F38   .  68 00214500   push <CrackMe.->System.@HandleFinally;> ;  错误处理  _try
00451F3D   .  64:FF30       push dword ptr fs:[eax]
00451F40   .  64:8920       mov dword ptr fs:[eax],esp
00451F43   .  8D55 FC       lea edx,dword ptr ss:[ebp-0x4]
00451F46 > .  8B83 04030000 mov eax,dword ptr ds:[ebx+0x304]
00451F4C > .  E8 1BE7FDFF   call <CrackMe.Controls::TControl::GetTex>
00451F51   .  8D55 F8       lea edx,dword ptr ss:[ebp-0x8]          ;  取注册名
00451F54 > .  8B83 08030000 mov eax,dword ptr ds:[ebx+0x308]
00451F5A > .  E8 0DE7FDFF   call <CrackMe.Controls::TControl::GetTex>
00451F5F   .  8B45 F8       mov eax,dword ptr ss:[ebp-0x8]          ;  取注册码
00451F62 > .  E8 3925FBFF   call <CrackMe.unknown_libname_53>
00451F67      8BF0          mov esi,eax                             ;  取注册码长度
00451F69      D1FE          sar esi,1
00451F6B      79 03         jns X<CrackMe.loc_451F70>
00451F6D   .  83D6 00       adc esi,0x0
00451F70 > >  33C9          xor ecx,ecx
00451F72   .  55            push ebp
00451F73   .  68 CE204500   push <CrackMe.->System.@HandleAnyExcepti>
00451F78   .  64:FF31       push dword ptr fs:[ecx]                 ;  错误处理
00451F7B   .  64:8921       mov dword ptr fs:[ecx],esp
00451F7E   .  8D45 F0       lea eax,dword ptr ss:[ebp-0x10]
00451F81 > .  E8 5A22FBFF   call <CrackMe.System::__linkproc__ LStrC>
00451F86   .  8BDE          mov ebx,esi
00451F88   .  4B            dec ebx
00451F89   .  85DB          test ebx,ebx
00451F8B   .  7C 2C         jl X<CrackMe.loc_451FB9>
00451F8D   .  43            inc ebx
00451F8E   .  C745 E8 00000>mov dword ptr ss:[ebp-0x18],0x0
00451F95 > >  8D45 E4       lea eax,dword ptr ss:[ebp-0x1C]
00451F98   .  8B55 E8       mov edx,dword ptr ss:[ebp-0x18]
00451F9B   .  03D2          add edx,edx
00451F9D   .  8B4D F8       mov ecx,dword ptr ss:[ebp-0x8]
00451FA0   .  8A1411        mov dl,byte ptr ds:[ecx+edx]            ;  取奇数位并连接
00451FA3 > .  E8 2024FBFF   call <CrackMe.unknown_libname_48>
00451FA8   .  8B55 E4       mov edx,dword ptr ss:[ebp-0x1C]
00451FAB   .  8D45 F0       lea eax,dword ptr ss:[ebp-0x10]
00451FAE > .  E8 F524FBFF   call <CrackMe.System::__linkproc__ LStrC>
00451FB3   .  FF45 E8       inc dword ptr ss:[ebp-0x18]
00451FB6   .  4B            dec ebx
00451FB7   .^ 75 DC         jnz X<CrackMe.loc_451F95>
00451FB9 > >  8D45 F4       lea eax,dword ptr ss:[ebp-0xC]
00451FBC > .  E8 1F22FBFF   call <CrackMe.System::__linkproc__ LStrC>
00451FC1   .  8BDE          mov ebx,esi
00451FC3   .  85DB          test ebx,ebx
00451FC5   .  7E 2C         jle X<CrackMe.loc_451FF3>
00451FC7   .  C745 E8 01000>mov dword ptr ss:[ebp-0x18],0x1
00451FCE > >  8D45 E0       lea eax,dword ptr ss:[ebp-0x20]
00451FD1   .  8B55 E8       mov edx,dword ptr ss:[ebp-0x18]
00451FD4   .  03D2          add edx,edx
00451FD6   .  8B4D F8       mov ecx,dword ptr ss:[ebp-0x8]
00451FD9   .  8A5411 FF     mov dl,byte ptr ds:[ecx+edx-0x1]        ;  取偶数位并连接
00451FDD > .  E8 E623FBFF   call <CrackMe.unknown_libname_48>
00451FE2   .  8B55 E0       mov edx,dword ptr ss:[ebp-0x20]
00451FE5   .  8D45 F4       lea eax,dword ptr ss:[ebp-0xC]
00451FE8 > .  E8 BB24FBFF   call <CrackMe.System::__linkproc__ LStrC>
00451FED   .  FF45 E8       inc dword ptr ss:[ebp-0x18]
00451FF0   .  4B            dec ebx
00451FF1   .^ 75 DB         jnz X<CrackMe.loc_451FCE>
00451FF3 > >  8BDE          mov ebx,esi
00451FF5   .  85DB          test ebx,ebx
00451FF7   .  7E 48         jle X<CrackMe.loc_452041>
00451FF9   .  C745 E8 01000>mov dword ptr ss:[ebp-0x18],0x1
00452000 > >  8D45 DC       lea eax,dword ptr ss:[ebp-0x24]
00452003   .  8B55 F4       mov edx,dword ptr ss:[ebp-0xC]
00452006   .  8B4D E8       mov ecx,dword ptr ss:[ebp-0x18]
00452009   .  8A540A FF     mov dl,byte ptr ds:[edx+ecx-0x1]        ;  偶数字符串单位转换
0045200D > .  E8 B623FBFF   call <CrackMe.unknown_libname_48>
00452012   .  8B45 DC       mov eax,dword ptr ss:[ebp-0x24]
00452015 > .  E8 5E61FBFF   call <CrackMe.Sysutils::StrToInt(System:>
0045201A   .  50            push eax
0045201B   .  8D45 D8       lea eax,dword ptr ss:[ebp-0x28]
0045201E   .  8B55 F0       mov edx,dword ptr ss:[ebp-0x10]
00452021   .  8B4D E8       mov ecx,dword ptr ss:[ebp-0x18]
00452024   .  8A540A FF     mov dl,byte ptr ds:[edx+ecx-0x1]        ;  奇数字符串单位转换
00452028 > .  E8 9B23FBFF   call <CrackMe.unknown_libname_48>
0045202D   .  8B45 D8       mov eax,dword ptr ss:[ebp-0x28]
00452030 > .  E8 4361FBFF   call <CrackMe.Sysutils::StrToInt(System:>
00452035   .  5A            pop edx
00452036   .  E8 E9F7FFFF   call <CrackMe.sub_451824>               ;  算法(单位奇数,单位偶数)
0045203B   .  FF45 E8       inc dword ptr ss:[ebp-0x18]
0045203E   .  4B            dec ebx
0045203F   .^ 75 BF         jnz X<CrackMe.loc_452000>               ;  上跳循环
00452041 >    8B47 38       mov eax,dword ptr ds:[edi+0x38]
00452044   .  8B57 34       mov edx,dword ptr ds:[edi+0x34]         ;  全局数组中两位应该为9
00452047   .  3BC2          cmp eax,edx
00452049      75 79         jnz X<CrackMe.loc_4520C4>
0045204B      3B47 44       cmp eax,dword ptr ds:[edi+0x44]
0045204E      75 74         jnz X<CrackMe.loc_4520C4>
00452050      3B47 48       cmp eax,dword ptr ds:[edi+0x48]
00452053      75 6F         jnz X<CrackMe.loc_4520C4>
00452055      83FA 09       cmp edx,0x9
00452058      75 6A         jnz X<CrackMe.loc_4520C4>
0045205A   .  33C0          xor eax,eax
0045205C   .  55            push ebp
0045205D   .  68 7F204500   push <CrackMe.->System.@HandleAnyExcepti>;  错误处理---指向正确的提示
00452062   .  64:FF30       push dword ptr fs:[eax]
00452065   .  64:8920       mov dword ptr fs:[eax],esp
00452068      8B45 E8       mov eax,dword ptr ss:[ebp-0x18]         ;  在这里可以故意构造错误跳转到正确的提示
0045206B      99            cdq
0045206C      F73D 743D4500 idiv dword ptr ds:[<dword_453D74>]
00452072      8945 E8       mov dword ptr ss:[ebp-0x18],eax
00452075   .  33C0          xor eax,eax
00452077   .  5A            pop edx
00452078   .  59            pop ecx
00452079   .  59            pop ecx
0045207A   .  64:8910       mov dword ptr fs:[eax],edx
0045207D   .  EB 1D         jmp X<CrackMe.loc_45209C>
0045207F > .^ E9 8418FBFF   jmp <CrackMe.System::__linkproc__ Handle>
00452084   .  6A 00         push 0x0                                ; /Style = MB_OK|MB_APPLMODAL
00452086   .  68 10214500   push <CrackMe.aS>                       ; |提示
0045208B   .  68 18214500   push <CrackMe.aVSJgb>                   ; |注册成功!
00452090   .  6A 00         push 0x0                                ; |hOwner = NULL
00452092 > .  E8 BD48FBFF   call <CrackMe.MessageBoxA_0>            ; \->user32.MessageBoxA()
00452097 > .  E8 D41BFBFF   call <CrackMe.System::__linkproc__ DoneE>
0045209C > >  8D55 D4       lea edx,dword ptr ss:[ebp-0x2C]
0045209F   .  8B45 E8       mov eax,dword ptr ss:[ebp-0x18]
004520A2 > .  E8 955FFBFF   call <CrackMe.Sysutils::IntToStr(int)>
004520A7   .  8B45 D4       mov eax,dword ptr ss:[ebp-0x2C]
004520AA   .  50            push eax

还是那句。。。。算法什么的真的不会,看不懂,理不清。。。。
要爆破的话就是在算法calll下边
把下边这4行改为nop。
[Asm] 纯文本查看 复制代码
1
2
3
4
00452049 75 79 jnz X<CrackMe.loc_4520C4>
0045204E 75 74 jnz X<CrackMe.loc_4520C4>
00452053 75 6F jnz X<CrackMe.loc_4520C4>
00452058 75 6A jnz X<CrackMe.loc_4520C4>

只改这几个还是不行,下边紧接着就是又一个错误处理,然后就是个无条件转移,按正常步骤走肯定永远无法到达提示部分,所以肯定要人为构造错误才可以
所以把00452068 8B45 E8 mov eax,dword ptr ss:[ebp-0x18]改成mov eax,dword ptr ss:[0]让程序执行错误处理就可以了
爆破文件 CrackMe1.rar (166.12 KB, 下载次数: 25)



免费评分

参与人数 1热心值 +1 收起 理由
KaQqi + 1 我很赞同!

查看全部评分

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

L4Nce 发表于 2014-11-1 14:59
爆破有效
得分:6
在后续题目中继续加油!
chaojiak47 发表于 2014-11-1 19:21
头像被屏蔽
84583728 发表于 2016-4-21 14:34 来自手机
wincorry 发表于 2016-4-27 16:03
大神真厉害
o6o7o5 发表于 2016-5-2 18:55
大神厉害!!!!!
长剑相思 发表于 2016-5-17 16:02
活到老,学到老
szac29964 发表于 2016-5-27 21:05
666666666666666621
tds007 发表于 2016-7-3 16:15
过来学习 ~~~~~谢谢 分享~
淡然丶 发表于 2016-7-21 23:47
谢谢  学习了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-3-30 19:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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