为了多作贡献,我每天写一篇破文,尽量多写。
人生短暂啊。进入正题
这个crackme是 论坛上过去的一个crackme ,虽然有前辈写过,但是我的是独立完成的,我本想找最新
的crackme,但是进入crackme竟然分哪个版面能下载到,所以就作罢。这个有壳不知道什么壳。od载入
00405001 > E8 03000000 call 00405009 ; 进入
00405006 - E9 EB045D45 jmp 459D54F6
0040500B 55 push ebp
0040500C C3 retn
0040500D 90 nop
0040500E E8 01000000 call 00405014 ; 进去
来到这里 00405001这里,单步跑飞,就进入call,下面没有特殊情况,就是单步,不做赘述。
0040500E E8 01000000 call 00405014 ; 进去
00405013 EB 5D jmp short 00405072
00405015 BB EDFFFFFF mov ebx, -13
0040501A 03DD add ebx, ebp
0040501C 81EB 00500000 sub ebx, 5000
00405022 83BD 22040000 0>cmp dword ptr [ebp+422], 0
0040500e 这里call 跑飞。进入call。
00405140 ^\EB EB jmp short 0040512D
00405142 8B06 mov eax, dword ptr [esi]
00405144 EB 00 jmp short 00405146
00405146 803E 00 cmp byte ptr [esi], 0
405140这里 向后跳。
在405142 f4
0040515D ^\EB CE jmp short 0040512D
0040515F 5B pop ebx
00405160 5E pop esi
00405161 59 pop ecx
0040515d 向后跳
40515f f4
004051A3 ^\0F85 1EFFFFFF jnz 004050C7
004051A9 68 00800000 push 8000
004051AE 6A 00 push 0
004051B0 FFB5 56010000 push dword ptr [ebp+156]
4051a3 向后跳
4051a9 f4
0040537F ^\E9 32FFFFFF jmp 004052B6
00405384 8906 mov dword ptr [esi], eax ;
crackme6.004030B0
00405386 8946 0C mov dword ptr [esi+C], eax
00405389 8946 10 mov dword ptr [esi+10], eax
0040538C 83C6 14 add esi, 14
0040537F 向后跳
405384 f4
00405395 ^\E9 EBFEFFFF jmp 00405285
0040539A B8 CB110000 mov eax, 11CB
0040539F 50 push eax
004053A0 0385 22040000 add eax, dword ptr [ebp+422]
40539a f4
004053AF 61 popad
004053B0 75 08 jnz short 004053BA
004053B2 B8 01000000 mov eax, 1
004053B7 C2 0C00 retn 0C
004053BA 68 CB114000 push 004011CB
4053af 看到popad,有点像压缩壳的特征,4053b7 是不是会跳到oep呢? 我们看看
004011CB 64 db 64 ; CHAR
'd'
004011CC A1 db A1
004011CD 01 db 01
004011CE 00 db 00
004011CF 00 db 00
004011D0 00 db 00
004011D1 > 55 push ebp
004011D2 ? 89E5 mov ebp, esp
004011D4 ? 6A FF push -1
004011D6 ? 68 1C204000 push 0040201C
004011DB 68 db 68 ; CHAR
'h'
004011DC 9A db 9A
004011DD 10 db 10
004011DE 40 db 40 ; CHAR
'@'
004011DF 00 db 00
004011E0 50 db 50 ; CHAR
'P'
004011E1 64 db 64 ; CHAR
'd'
004011E2 89 db 89
看到一堆像屎的东西?我们右键 -》分析-》从模块删除分析。变成下面的样子
004011CB 64:A1 01000000 mov eax, dword ptr fs:[1]
004011D1 55 push ebp
004011D2 89E5 mov ebp, esp
004011D4 6A FF push -1
004011D6 68 1C204000 push 0040201C
004011DB 68 9A104000 push 0040109A
004011E0 50 push eax
004011E1 64:8925 0000000>mov dword ptr fs:[0], esp
004011E8 83EC 10 sub esp, 10
004011EB 53 push ebx
004011EC 56 push esi
dump出来
可以运行
peid查壳是LCC Win32 1.x -> Jacob Navia 这个语言。
发现运行注册无法显示错误提示,字符串查找也查不到什么,相关字符串查找也查不到什么。怎么办呢
?
看看GetDlgItemTextA 这个得到输入框字符的api可不可以。
运行 填写 wfwfwfwf 12345678
bp GetDlgItemTextA 回车
断在这里
77D6B05E > 8BFF mov edi, edi
77D6B060 55 push ebp
77D6B061 8BEC mov ebp, esp
77D6B063 FF75 0C push dword ptr [ebp+C]
77D6B066 FF75 08 push dword ptr [ebp+8]
77D6B069 E8 0093FBFF call GetDlgItem
这时点K这个按钮,就是堆栈按钮。
看到这里
Call stack of main thread
Address Stack Procedure / arguments Called from
Frame
0012F8F4 0040153E <jmp.&user32.GetDlgItemTextA> 11CB.00401539
0012FA14
0012F8F8 00410BD4 hWnd = 00410BD4 ('TheBigMan's Crac
0012F8FC 00000065 ControlID = 65 (101.)
0012F900 0012F914 Buffer = 0012F914
0012F904 00000100 Count = 100 (256.)
0012FA18 0040162A ? 11CB.00401509 11CB.00401625
0012FA6C 77D18734 Maybe 11CB.004015A1 user32.77D18731
0012FA68
0012FA98 77D23CE4 ? user32.77D1870C user32.77D23CDF
0012FA94
0012FB04 77D23B30 ? user32.77D23C2F user32.77D23B2B
0012FB00
0012FB4C 77D3E599 user32.77D23AB1 user32.77D3E594
0012FB48
0012FB68 77D18734 Includes user32.77D3E599 user32.77D18731
0012FB64
0012FB94 77D18816 ? user32.77D1870C user32.77D18811
0012FB90
0012FB98 77D3E577 Includes user32.77D18816 user32.77D3E571
0012FBF8
00401539是调用GetDlgItemTextA的,那么下面的00401625是不是一个检测的主程序部分呢?
我们双击 0012FA18 0040162A ? 11CB.00401509 11CB.00401625
这一行
00401625 |. E8 DFFEFFFF call 00401509
0040162A |. 59 pop ecx
0040162B |. 09C0 or eax, eax
0040162D |. 74 53 je short 00401682 ; 跳过去
了
0040162F |. 6A 40 push 40 ; /Style =
MB_OK|MB_ICONASTERISK|MB_APPLMODAL
00401631 |. 8D45 C7 lea eax, dword ptr [ebp-39] ; |
00401634 |. 50 push eax ; |Title
00401635 |. 8D45 D3 lea eax, dword ptr [ebp-2D] ; |
00401638 |. 50 push eax ; |Text
00401639 |. FF75 08 push dword ptr [ebp+8] ; |hOwner
0040163C |. E8 1B010000 call <jmp.&user32.MessageBoxA> ;
\MessageBoxA
00401641 |. EB 3D jmp short 00401680
00401643 |> 8D05 0E264000 lea eax, dword ptr [40260E] ; Case 3
of switch 004015F1
看到这里然后断点于401602这里,因为这里是从上面跳下来的,先尝试一下,看看最近的这段程序是不
是可以爆破,当然如果不行就要再向上断点了。
经过几次测试,发现40162d跳入错误提示,那么不跳怎么样呢?
呵呵
"SHiT ... you entered the correct serial!"
嗯就是这里,由于时间和精力,我就不分析算法了。感兴趣的可以跟入 401625这个call看看算法。
这个crackme是 论坛精华9上crackme文章的一个 ,报毒,我不知道怎么回事了。反正不是我放的,自己斟酌
完成
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课