00402991 . 55 push ebp ; /断点-F8单步走
00402992 . E8 77190000 call <jmp.&MFC42.#825> ; \free
00402997 . 8B7C24 18 mov edi,dword ptr ss:[esp+18]
0040299B . 8D4C24 60 lea ecx,dword ptr ss:[esp+60] ;
0040299F . 83C4 04 add esp,4
004029A2 . 33C0 xor eax,eax
004029A4 . 2BF9 sub edi,ecx ; Xoog前四位真码出现
004029A6 > 8A5404 5C mov dl,byte ptr ss:[esp+eax+5C]
004029AA . 8D6C04 5C lea ebp,dword ptr ss:[esp+eax+5C]
004029AE . 3A142F cmp dl,byte ptr ds:[edi+ebp]
004029B1 0F85 AA040000 jnz CrackMe.00402E61 ; 不对则跳过注册成功
004029B7 . 40 inc eax ; 对就不跳
004029B8 . 83F8 04 cmp eax,4
004029BB ^ 7C E9 jl short CrackMe.004029A6
004029BD . 56 push esi ; /block
004029BE . E8 4B190000 call <jmp.&MFC42.#825> ; \free
004029C3 . 68 00020000 push 200
004029C8 . E8 491A0000 call <jmp.&MFC42.#823>
004029CD . 83C4 08 add esp,8
004029D0 . 8BE8 mov ebp,eax
004029D2 . B9 80000000 mov ecx,80
004029D7 . 33C0 xor eax,eax
004029D9 . 8BFD mov edi,ebp
004029DB . 68 00020000 push 200 ; /BufSize = 200 (512.)
004029E0 . 55 push ebp ; |PathBuffer
004029E1 . 50 push eax ; |hModule => NULL
004029E2 . F3:AB rep stos dword ptr es:[edi] ; |
004029E4 . FF15 30504000 call dword ptr ds:[<&KERNEL32.GetModuleF>; \GetModuleFileNameA
004029EA . 6A 0C push 0C
004029EC . E8 251A0000 call <jmp.&MFC42.#823>
004029F1 . 83C4 04 add esp,4
004029F4 . 85C0 test eax,eax
004029F6 . 74 10 je short CrackMe.00402A08
004029F8 . 8BD0 mov edx,eax
004029FA . 33C9 xor ecx,ecx
004029FC . 8BF0 mov esi,eax
004029FE . 890A mov dword ptr ds:[edx],ecx
00402A00 . 894A 04 mov dword ptr ds:[edx+4],ecx
00402A03 . 894A 08 mov dword ptr ds:[edx+8],ecx
00402A06 . EB 02 jmp short CrackMe.00402A0A
00402A08 > 33F6 xor esi,esi
00402A0A > B9 0C000000 mov ecx,0C
00402A0F . 33C0 xor eax,eax
00402A11 . 8D7C24 29 lea edi,dword ptr ss:[esp+29]
00402A15 . C64424 28 00 mov byte ptr ss:[esp+28],0
00402A1A . F3:AB rep stos dword ptr es:[edi]
00402A1C . AA stos byte ptr es:[edi]
00402A1D . 8B7C24 18 mov edi,dword ptr ss:[esp+18]
00402A21 . 8D4424 28 lea eax,dword ptr ss:[esp+28]
00402A25 . 892E mov dword ptr ds:[esi],ebp
00402A27 . 8B2D 80524000 mov ebp,dword ptr ds:[<&USER32.PostThrea>; USER32.PostThreadMessageA
00402A2D . C746 04 02000>mov dword ptr ds:[esi+4],2
00402A34 . 8946 08 mov dword ptr ds:[esi+8],eax
00402A37 . 8B4F 60 mov ecx,dword ptr ds:[edi+60]
00402A3A . 6A 00 push 0 ; /lParam = 0
00402A3C . 56 push esi ; |wParam
00402A3D . 68 04040000 push 404 ; |Message = WM_USER+4
00402A42 . 8B51 30 mov edx,dword ptr ds:[ecx+30] ; |
00402A45 . 52 push edx ; |ThreadId
00402A46 . FFD5 call ebp ; \PostThreadMessageA
00402A48 . 85C0 test eax,eax
00402A4A . 75 15 jnz short CrackMe.00402A61
00402A4C > 8B47 60 mov eax,dword ptr ds:[edi+60]
00402A4F . 6A 00 push 0
00402A51 . 56 push esi
00402A52 . 68 04040000 push 404
00402A57 . 8B48 30 mov ecx,dword ptr ds:[eax+30]
00402A5A . 51 push ecx
00402A5B . FFD5 call ebp
00402A5D . 85C0 test eax,eax
00402A5F .^ 74 EB je short CrackMe.00402A4C
00402A61 > 8B15 7C984000 mov edx,dword ptr ds:[40987C]
00402A67 . 6A FF push -1 ; /Timeout = INFINITE
00402A69 . 52 push edx ; |hObject => 000000B4
00402A6A . FF15 48504000 call dword ptr ds:[<&KERNEL32.WaitForSin>; \卡住,逆着走,点暂停再运行OK
00402A70 . A1 7C984000 mov eax,dword ptr ds:[40987C]
00402A75 . 50 push eax ; /hEvent => 000000B4
00402A76 . FF15 44504000 call dword ptr ds:[<&KERNEL32.ResetEvent>; \ResetEvent
00402A7C . 56 push esi ; /block
00402A7D . E8 8C180000 call <jmp.&MFC42.#825> ; \free
00402A82 . 8A4B 03 mov cl,byte ptr ds:[ebx+3]
00402A85 . 8A5424 2F mov dl,byte ptr ss:[esp+2F]
00402A89 . 8A4424 3D mov al,byte ptr ss:[esp+3D]
00402A8D . 32CA xor cl,dl
00402A8F . 884C24 2C mov byte ptr ss:[esp+2C],cl
00402A93 . 8A53 04 mov dl,byte ptr ds:[ebx+4]
00402A96 . 8A4C24 49 mov cl,byte ptr ss:[esp+49]
00402A9A . 32D0 xor dl,al
00402A9C . 885424 2D mov byte ptr ss:[esp+2D],dl
00402AA0 . 8A43 05 mov al,byte ptr ds:[ebx+5]
00402AA3 . 32C1 xor al,cl
00402AA5 . 6A 0C push 0C
00402AA7 . 884424 32 mov byte ptr ss:[esp+32],al
00402AAB . C64424 33 00 mov byte ptr ss:[esp+33],0
00402AB0 . E8 61190000 call <jmp.&MFC42.#823>
00402AB5 . 83C4 08 add esp,8
00402AB8 . 85C0 test eax,eax
00402ABA . 74 10 je short CrackMe.00402ACC
00402ABC . 8BD0 mov edx,eax
00402ABE . 33C9 xor ecx,ecx
00402AC0 . 8BF0 mov esi,eax
00402AC2 . 890A mov dword ptr ds:[edx],ecx
00402AC4 . 894A 04 mov dword ptr ds:[edx+4],ecx
00402AC7 . 894A 08 mov dword ptr ds:[edx+8],ecx
00402ACA . EB 02 jmp short CrackMe.00402ACE
00402ACC > 33F6 xor esi,esi
00402ACE > B9 0C000000 mov ecx,0C
00402AD3 . 33C0 xor eax,eax
00402AD5 . 8DBC24 F50000>lea edi,dword ptr ss:[esp+F5]
00402ADC . C68424 F40000>mov byte ptr ss:[esp+F4],0
00402AE4 . F3:AB rep stos dword ptr es:[edi]
00402AE6 . AA stos byte ptr es:[edi]
00402AE7 . 8B7C24 18 mov edi,dword ptr ss:[esp+18]
00402AEB . 8D4424 28 lea eax,dword ptr ss:[esp+28]
00402AEF . 8D8C24 F40000>lea ecx,dword ptr ss:[esp+F4]
00402AF6 . 8906 mov dword ptr ds:[esi],eax
00402AF8 . C746 04 03000>mov dword ptr ds:[esi+4],3
00402AFF . 894E 08 mov dword ptr ds:[esi+8],ecx
00402B02 . 8B57 60 mov edx,dword ptr ds:[edi+60]
00402B05 . 6A 00 push 0
00402B07 . 56 push esi
00402B08 . 68 01040000 push 401
00402B0D . 8B42 30 mov eax,dword ptr ds:[edx+30]
00402B10 . 50 push eax
00402B11 . FFD5 call ebp
00402B13 . 85C0 test eax,eax
00402B15 . 75 15 jnz short CrackMe.00402B2C
00402B17 > 8B4F 60 mov ecx,dword ptr ds:[edi+60]
00402B1A . 6A 00 push 0
00402B1C . 56 push esi
00402B1D . 68 01040000 push 401
00402B22 . 8B51 30 mov edx,dword ptr ds:[ecx+30]
00402B25 . 52 push edx
00402B26 . FFD5 call ebp
00402B28 . 85C0 test eax,eax
00402B2A .^ 74 EB je short CrackMe.00402B17
00402B2C > A1 7C984000 mov eax,dword ptr ds:[40987C]
00402B31 . 6A FF push -1 ; /Timeout = INFINITE
00402B33 . 50 push eax ; |hObject => 000000B4
00402B34 . FF15 48504000 call dword ptr ds:[<&KERNEL32.WaitForSin>; \又卡住~再逆!!
00402B3A . 8B0D 7C984000 mov ecx,dword ptr ds:[40987C]
00402B40 . 51 push ecx ; /hEvent => 000000B4
00402B41 . FF15 44504000 call dword ptr ds:[<&KERNEL32.ResetEvent>; \ResetEvent
00402B47 . 56 push esi ; /block
00402B48 . E8 C1170000 call <jmp.&MFC42.#825> ; \free
00402B4D . 83C4 04 add esp,4
00402B50 . 33F6 xor esi,esi
00402B52 . 33C0 xor eax,eax
00402B54 > 8B6C24 14 mov ebp,dword ptr ss:[esp+14]
00402B58 . 8A9404 F40000>mov dl,byte ptr ss:[esp+eax+F4] ; 4o0y后四位真码出现
00402B5F . 3A5428 04 cmp dl,byte ptr ds:[eax+ebp+4]
00402B63 0F85 F8020000 jnz CrackMe.00402E61 ; 不对则跳过注册成功
00402B69 . 40 inc eax
00402B6A . 83F8 04 cmp eax,4
00402B6D ^ 7C E5 jl short CrackMe.00402B54
00402B6F . B9 18000000 mov ecx,18
00402B74 . 33C0 xor eax,eax
00402B76 . 8DBC24 8D0100>lea edi,dword ptr ss:[esp+18D]
00402B7D . C68424 8C0100>mov byte ptr ss:[esp+18C],0
00402B85 . F3:AB rep stos dword ptr es:[edi]
00402B87 . 66:AB stos word ptr es:[edi]
00402B89 . 8D8C24 900300>lea ecx,dword ptr ss:[esp+390]
00402B90 . C74424 20 640>mov dword ptr ss:[esp+20],64
00402B98 . AA stos byte ptr es:[edi]
00402B99 . E8 D2110000 call CrackMe.00403D70
00402B9E . 6A 08 push 8
00402BA0 . 55 push ebp
00402BA1 . 8D8C24 980300>lea ecx,dword ptr ss:[esp+398]
00402BA8 . 89B424 EC1300>mov dword ptr ss:[esp+13EC],esi
00402BAF . E8 EC110000 call CrackMe.00403DA0
00402BB4 . 6A 01 push 1
00402BB6 . 8D8C24 940300>lea ecx,dword ptr ss:[esp+394]
00402BBD . E8 3E130000 call CrackMe.00403F00
00402BC2 . 8D4424 20 lea eax,dword ptr ss:[esp+20]
00402BC6 . 8D8C24 8C0100>lea ecx,dword ptr ss:[esp+18C]
00402BCD . 50 push eax
00402BCE . 51 push ecx
00402BCF . 6A 20 push 20
00402BD1 . 53 push ebx
00402BD2 . 8D8C24 A00300>lea ecx,dword ptr ss:[esp+3A0]
00402BD9 . E8 42130000 call CrackMe.00403F20
00402BDE . B9 18000000 mov ecx,18
00402BE3 . 33C0 xor eax,eax
00402BE5 . 8DBC24 B90200>lea edi,dword ptr ss:[esp+2B9]
00402BEC . C68424 B80200>mov byte ptr ss:[esp+2B8],0
00402BF4 . F3:AB rep stos dword ptr es:[edi]
00402BF6 . 66:AB stos word ptr es:[edi]
00402BF8 . AA stos byte ptr es:[edi]
00402BF9 . 8B4424 20 mov eax,dword ptr ss:[esp+20]
00402BFD . 8D9424 B80200>lea edx,dword ptr ss:[esp+2B8]
00402C04 . 52 push edx
00402C05 . 8D8C24 900100>lea ecx,dword ptr ss:[esp+190]
00402C0C . 50 push eax
00402C0D . 51 push ecx
00402C0E . E8 8DEEFFFF call CrackMe.00401AA0
00402C13 . B9 18000000 mov ecx,18
00402C18 . 33C0 xor eax,eax
00402C1A . 8DBC24 9D0000>lea edi,dword ptr ss:[esp+9D]
00402C21 . C68424 9C0000>mov byte ptr ss:[esp+9C],0
00402C29 . F3:AB rep stos dword ptr es:[edi]
00402C2B . 83C4 0C add esp,0C
00402C2E . 8D9424 B80200>lea edx,dword ptr ss:[esp+2B8]
00402C35 . 66:AB stos word ptr es:[edi] ; EDX
00402C37 . 52 push edx
00402C38 . 56 push esi
00402C39 . 8D8C24 240300>lea ecx,dword ptr ss:[esp+324]
00402C40 . AA stos byte ptr es:[edi]
00402C41 . E8 6A020000 call CrackMe.00402EB0
00402C46 . 8D4424 14 lea eax,dword ptr ss:[esp+14]
00402C4A . 8D8C24 1C0300>lea ecx,dword ptr ss:[esp+31C]
00402C51 . 50 push eax
00402C52 . C68424 E81300>mov byte ptr ss:[esp+13E8],1
00402C5A . E8 61100000 call CrackMe.00403CC0
00402C5F . 8B08 mov ecx,dword ptr ds:[eax] ; 4d70e7fad1fc0f4d5acda04151a11541
00402C61 . 8D9424 900000>lea edx,dword ptr ss:[esp+90]
00402C68 . 51 push ecx ; /<%s>
00402C69 . 68 78764000 push CrackMe.00407678 ; |%s
00402C6E . 52 push edx ; |s
00402C6F . FF15 38524000 call dword ptr ds:[<&MSVCRT.sprintf>] ; \sprintf
00402C75 . 83C4 0C add esp,0C
00402C78 . 8D4C24 14 lea ecx,dword ptr ss:[esp+14]
00402C7C . E8 B1160000 call <jmp.&MFC42.#800>
00402C81 . 8B7C24 18 mov edi,dword ptr ss:[esp+18]
00402C85 . 897424 10 mov dword ptr ss:[esp+10],esi
00402C89 . 8B35 34504000 mov esi,dword ptr ds:[<&KERNEL32.GetExit>; kernel32.GetExitCodeThread
00402C8F . 8D4424 10 lea eax,dword ptr ss:[esp+10]
00402C93 . 8B4F 60 mov ecx,dword ptr ds:[edi+60]
00402C96 . 50 push eax
00402C97 . 8B51 2C mov edx,dword ptr ds:[ecx+2C]
00402C9A . 52 push edx
00402C9B FFD6 call esi
00402C9D 817C24 10 030>cmp dword ptr ss:[esp+10],103
00402CA5 74 09 je short CrackMe.00402CB0
00402CA7 ? 85C0 test eax,eax
00402CA9 . 75 05 jnz short CrackMe.00402CB0
00402CAB . E8 30F0FFFF call CrackMe.00401CE0
00402CB0 > 8B4F 60 mov ecx,dword ptr ds:[edi+60]
00402CB3 . 8D4424 10 lea eax,dword ptr ss:[esp+10]
00402CB7 . 50 push eax
00402CB8 . 8B51 2C mov edx,dword ptr ds:[ecx+2C]
00402CBB . 52 push edx
00402CBC . FFD6 call esi
00402CBE . 817C24 10 030>cmp dword ptr ss:[esp+10],103
00402CC6 . 74 09 je short CrackMe.00402CD1
00402CC8 . 85C0 test eax,eax
00402CCA . 75 05 jnz short CrackMe.00402CD1
00402CCC . E8 0FF0FFFF call CrackMe.00401CE0
00402CD1 > 33C0 xor eax,eax
00402CD3 > 8A8C04 A00000>mov cl,byte ptr ss:[esp+eax+A0]
00402CDA . 8A9404 900000>mov dl,byte ptr ss:[esp+eax+90]
00402CE1 . 32D1 xor dl,cl
00402CE3 . 889404 900000>mov byte ptr ss:[esp+eax+90],dl
00402CEA . C68404 A00000>mov byte ptr ss:[esp+eax+A0],0
00402CF2 . 40 inc eax
00402CF3 . 83F8 10 cmp eax,10
00402CF6 .^ 7C DB jl short CrackMe.00402CD3
00402CF8 . 8D5424 14 lea edx,dword ptr ss:[esp+14]
00402CFC . 52 push edx
00402CFD . E8 FC160000 call <jmp.&MFC42.#3811>
00402D02 . 8B00 mov eax,dword ptr ds:[eax]
00402D04 . 6A 00 push 0
00402D06 . 8D4C24 20 lea ecx,dword ptr ss:[esp+20]
00402D0A . 894424 20 mov dword ptr ss:[esp+20],eax
00402D0E . E8 E5160000 call <jmp.&MFC42.#3337>
00402D13 . 8B40 0C mov eax,dword ptr ds:[eax+C]
00402D16 . 50 push eax ; /seed
00402D17 . FF15 2C524000 call dword ptr ds:[<&MSVCRT.srand>] ; \srand
00402D1D . 8B35 30524000 mov esi,dword ptr ds:[<&MSVCRT.rand>] ; msvcrt.rand
00402D23 . FFD6 call esi ; [rand
00402D25 . 25 FF000080 and eax,800000FF
00402D2A . 79 07 jns short CrackMe.00402D33
00402D2C . 48 dec eax
00402D2D . 0D 00FFFFFF or eax,FFFFFF00
00402D32 . 40 inc eax
00402D33 > 888424 A40000>mov byte ptr ss:[esp+A4],al
00402D3A . FFD6 call esi
00402D3C . 25 FF000080 and eax,800000FF
00402D41 . 79 07 jns short CrackMe.00402D4A
00402D43 . 48 dec eax
00402D44 . 0D 00FFFFFF or eax,FFFFFF00
00402D49 . 40 inc eax
00402D4A > 888424 A50000>mov byte ptr ss:[esp+A5],al
00402D51 . B9 18000000 mov ecx,18
00402D56 . 33C0 xor eax,eax
00402D58 . 8DBC24 590200>lea edi,dword ptr ss:[esp+259]
00402D5F . C68424 580200>mov byte ptr ss:[esp+258],0
00402D67 . 8D9424 940000>lea edx,dword ptr ss:[esp+94]
00402D6E . F3:AB rep stos dword ptr es:[edi]
00402D70 . 8D8C24 580200>lea ecx,dword ptr ss:[esp+258]
00402D77 . 66:AB stos word ptr es:[edi]
00402D79 . 51 push ecx
00402D7A . 6A 12 push 12
00402D7C . 52 push edx
00402D7D . AA stos byte ptr es:[edi]
00402D7E . E8 1DEDFFFF call CrackMe.00401AA0
00402D83 . 83C4 10 add esp,10
00402D86 . 33C0 xor eax,eax
00402D88 > 8A8C04 540200>mov cl,byte ptr ss:[esp+eax+254]
00402D8F . 8A5428 08 mov dl,byte ptr ds:[eax+ebp+8] ; cBqGYzIY64vynzI64qWtc+V2最后真码的出现
00402D93 . 3ACA cmp cl,dl
00402D95 0F85 DF000000 jnz CrackMe.00402E7A ; 这里肯定是对比的啦,不用说啦
00402D9B . 40 inc eax ; 这三个对比不跳就是爆破
00402D9C . 83F8 18 cmp eax,18 ; 全加起来就是真码了88
00402D9F .^ 7C E7 jl short CrackMe.00402D88 ; 走下去就提示注册成功
机器码:12c179df49307dfc155aa7cb42d6e43c
注册码:Xoog4o0ycBqGYzIY64vynzI64qWtc+V2