能力值:
( LV9,RANK:850 )
|
-
-
2 楼
http://www.crackmes.de/users/guetta/keyme5/download
18. jan
Download Keyme#5 - not so easy Windows crackme by Guetta
MASM32 / TASM32
用了许许多多的加密算法,作者说not easy ,想来是真的了。
bpx GetDlgItemTextA
00406115 |. 6A 40 push 40 ; /Count = 40 (64.)
00406117 |. 68 EBC14000 push 0040C1EB ; |Buffer = keyme#5.0040C1EB
0040611C |. 68 94010000 push 194 ; |ControlID = 194 (404.)
00406121 |. FF75 08 push dword ptr [ebp+8] ; |hWnd
00406124 |. E8 570C0000 call <jmp.&user32.GetDlgItemTextA> ; \GetDlgItemTextA
00406129 |. 83F8 02 cmp eax, 2 ; 以上是取注册名,返回注册名长度,它不能少于2个字符
0040612C |. 0F82 36030000 jb 00406468
00406132 |. A3 45C44000 mov dword ptr [40C445], eax
00406137 |. 6A 64 push 64 ; /Count = 64 (100.)
00406139 |. 68 2BC24000 push 0040C22B ; |Buffer = keyme#5.0040C22B
0040613E |. 68 95010000 push 195 ; |ControlID = 195 (405.)
00406143 |. FF75 08 push dword ptr [ebp+8] ; |hWnd
00406146 |. E8 350C0000 call <jmp.&user32.GetDlgItemTextA> ; \GetDlgItemTextA
0040614B |. 85C0 test eax, eax ; 取注册码,看它是否为空
0040614D |. 0F84 15030000 je 00406468
00406153 803D 3BC24000>cmp byte ptr [40C23B], 2D ; 看注册码相应位置是否是边接符:0x2D,这里是测试注册码的第17位是否是连接符
0040615A |. 0F85 08030000 jnz 00406468
00406160 |. C605 3BC24000>mov byte ptr [40C23B], 0 ; 如果是连接符,则现在使它为:#0
00406167 |. 803D 47C24000>cmp byte ptr [40C247], 2D ; 第29位也该是连接符
0040616E |. 0F85 F4020000 jnz 00406468
00406174 |. C605 47C24000>mov byte ptr [40C247], 0 ; 使它为:#0
0040617B |. 803D 49C24000>cmp byte ptr [40C249], 2D ; 第31位也是连接符
00406182 |. 0F85 E0020000 jnz 00406468
00406188 |. C605 49C24000>mov byte ptr [40C249], 0 ; 使它为:#0
0040618F |. A0 48C24000 mov al, byte ptr [40C248] ; 将第30位的ASCII码送AL
00406194 |. 3C 18 cmp al, 18 ; 它不应该少于0x18
00406196 |. 0F82 CC020000 jb 00406468
0040619C |. 3C 2F cmp al, 2F ; 也不应该大于0x2F
0040619E |. 0F8F C4020000 jg 00406468
004061A4 |. A2 C8C44000 mov byte ptr [40C4C8], al ; 把它存起来
004061A9 |. 33FF xor edi, edi ; 清零EDI
004061AB |. 33C9 xor ecx, ecx ; 清零计数器ECX
004061AD |. 8D35 7EC44000 lea esi, dword ptr [40C47E]
004061B3 |. BB 10000000 mov ebx, 10 ; 一个基数0x10
004061B8 |> 0FBE81 2BC240>/movsx eax, byte ptr [ecx+40C22B] ; 注册码ASCII码带符号扩展送到EAX
004061BF |. 83FF 08 |cmp edi, 8
004061C2 |. 74 29 |je short 004061ED
004061C4 |. 3C 40 |cmp al, 40
004061C6 |. 72 04 |jb short 004061CC
004061C8 |. 2C 37 |sub al, 37 ; 大于0x40,表明它是字母,则减0x37
004061CA |. EB 02 |jmp short 004061CE
004061CC |> 2C 30 |sub al, 30 ; 如果是数字就减0x30
004061CE |> F7E3 |mul ebx ; 然后乘以基数0x10
004061D0 |. 86C4 |xchg ah, al ; 交换
004061D2 |. 8A81 2CC24000 |mov al, byte ptr [ecx+40C22C] ; 下一位注册码
004061D8 |. 3C 40 |cmp al, 40 ; 进行同样的处理
004061DA |. 72 04 |jb short 004061E0
004061DC |. 2C 37 |sub al, 37
004061DE |. EB 02 |jmp short 004061E2
004061E0 |> 2C 30 |sub al, 30
004061E2 |> 02C4 |add al, ah ; 加起来
004061E4 |. 8806 |mov byte ptr [esi], al ; 存放
004061E6 |. 46 |inc esi ; 指针下移
004061E7 |. 83C1 02 |add ecx, 2 ; 计数
004061EA |. 47 |inc edi ; 控制循环,EDI初值为8
004061EB |.^ EB CB \jmp short 004061B8 ; 这个循环的意思是:原样复制注册码到内存
004061ED |> A1 45C44000 mov eax, dword ptr [40C445] ; 注册名长度送EAX
004061F2 |. 68 64CB4000 push 0040CB64 ; /Arg3 = 0040CB64
004061F7 |. 50 push eax ; |Arg2 => 00000005
004061F8 |. 68 EBC14000 push 0040C1EB ; |Arg1 = 0040C1EB ASCII "wofan"
004061FD |. E8 97C0FFFF call 00402299 ; \keyme#5.00402299
00406202 |. C680 EBC14000>mov byte ptr [eax+40C1EB], 0 ; 以下就是格式化输出MD5密文
00406209 |. FF35 70CB4000 push dword ptr [40CB70] ; /<%.8x> = 5B6E2BAC
0040620F |. FF35 6CCB4000 push dword ptr [40CB6C] ; |<%.8x> = 8BE72473
00406215 |. FF35 68CB4000 push dword ptr [40CB68] ; |<%.8x> = 30CD28A3
0040621B |. FF35 64CB4000 push dword ptr [40CB64] ; |<%.8x> = 778F10F7
00406221 |. 68 7BC14000 push 0040C17B ; |Format = "%.8x%.8x%.8x%.8x"
00406226 |. 68 D9C24000 push 0040C2D9 ; |s = keyme#5.0040C2D9
0040622B |. E8 EA0A0000 call <jmp.&user32.wsprintfA> ; \wsprintfA
00406230 |. 83C4 18 add esp, 18 ; 以下就看到了标准的MD5密文了
00406233 |. 68 D9C24000 push 0040C2D9 ; /StringOrChar = "778F10F730CD28A38BE724735B6E2BAC"
00406238 |. E8 EF0A0000 call <jmp.&user32.CharUpperA> ; \CharUpperA
0040623D |. 68 EBC14000 push 0040C1EB ; ASCII "wofan"
00406242 |. FF35 45C44000 push dword ptr [40C445] ; 注册名长度
00406248 |. 68 3BC34000 push 0040C33B ; 存放密文的缓冲区
0040624D |. E8 AEADFFFF call 00401000 ; 对注册名进行SHA1加密处理
00406252 |. A1 3BC34000 mov eax, dword ptr [40C33B] ; 第一个8位,送到EAX
00406257 |. A3 8FC24000 mov dword ptr [40C28F], eax ; 存放在储单元中
0040625C |. 68 EBC14000 push 0040C1EB ; /StringToAdd = "wofan"
00406261 |. 68 D3C34000 push 0040C3D3 ; |ConcatString = "wofan"
00406266 |. E8 DB0B0000 call <jmp.&kernel32.lstrcatA> ; \lstrcatA
|
能力值:
( LV9,RANK:650 )
|
-
-
3 楼
研究了一天,总是没搞懂BigMod,没想到今天看到了。
|
能力值:
( LV9,RANK:1250 )
|
-
-
4 楼
最初由 hbqjxhw 发布 研究了一天,总是没搞懂BigMod,没想到今天看到了。
你用的是什么软件侦测的?好像不是PEiD。
|
能力值:
( LV9,RANK:210 )
|
-
-
5 楼
哇
三楼那玩意也太先进了吧
那么清晰
|