能力值:
( LV4,RANK:50 )
|
-
-
24 楼
大概分析如下,如有不对之处请大牛指正
004014D0 /$ 83EC 0C sub esp, 0C
004014D3 |. 53 push ebx
004014D4 |. 55 push ebp
004014D5 |. 56 push esi
004014D6 |. 57 push edi
004014D7 |. 8B7C24 20 mov edi, dword ptr [esp+20] ; 传入的三个字符参数放入EDI
004014DB |. 83C9 FF or ecx, FFFFFFFF
004014DE |. 33C0 xor eax, eax ; 清零
004014E0 |. 33D2 xor edx, edx
004014E2 |. F2:AE repne scas byte ptr es:[edi] ; MD5(&A)
004014E4 |. F7D1 not ecx
004014E6 |. 49 dec ecx
004014E7 |. 33F6 xor esi, esi
004014E9 |. 8BE9 mov ebp, ecx
004014EB |. 33FF xor edi, edi
004014ED |. 33DB xor ebx, ebx
004014EF |. 3BEA cmp ebp, edx
004014F1 |. 895424 14 mov dword ptr [esp+14], edx
004014F5 |. 895424 18 mov dword ptr [esp+18], edx
004014F9 |. 0F8E 90000000 jle 0040158F
004014FF |. 8D45 FF lea eax, dword ptr [ebp-1]
00401502 |. 894424 10 mov dword ptr [esp+10], eax
00401506 |> 8B4C24 20 /mov ecx, dword ptr [esp+20]
0040150A |. 8A040B |mov al, byte ptr [ebx+ecx]
0040150D |. 3C 2F |cmp al, 2F
0040150F |. 7E 0C |jle short 0040151D
00401511 |. 3C 3A |cmp al, 3A
00401513 |. 7D 08 |jge short 0040151D
00401515 |. 0FBEC0 |movsx eax, al
00401518 |. 83E8 30 |sub eax, 30
0040151B |. EB 1E |jmp short 0040153B
0040151D |> 3C 40 |cmp al, 40
0040151F |. 7E 0C |jle short 0040152D
00401521 |. 3C 47 |cmp al, 47
00401523 |. 7D 08 |jge short 0040152D
00401525 |. 0FBEC0 |movsx eax, al
00401528 |. 83E8 37 |sub eax, 37
0040152B |. EB 0E |jmp short 0040153B
0040152D |> 3C 60 |cmp al, 60
0040152F |. 7E 0F |jle short 00401540
00401531 |. 3C 67 |cmp al, 67
00401533 |. 7D 0B |jge short 00401540
00401535 |. 0FBEC0 |movsx eax, al
00401538 |. 83E8 57 |sub eax, 57
0040153B |> 99 |cdq
0040153C |. 8BF0 |mov esi, eax
0040153E |. 8BFA |mov edi, edx
00401540 |> DD05 30354000 |fld qword ptr [403530]
00401546 |. DB4424 10 |fild dword ptr [esp+10]
0040154A |. E8 5B0B0000 |call <jmp.&MSVCRT._CIpow>
0040154F |. E8 500B0000 |call <jmp.&MSVCRT._ftol>
00401554 |. 57 |push edi
00401555 |. 56 |push esi
00401556 |. 52 |push edx
00401557 |. 50 |push eax
00401558 |. E8 130B0000 |call 00402070
0040155D |. 8B4C24 14 |mov ecx, dword ptr [esp+14]
00401561 |. 03C8 |add ecx, eax
00401563 |. 8B4424 18 |mov eax, dword ptr [esp+18]
00401567 |. 894C24 14 |mov dword ptr [esp+14], ecx
0040156B |. 8B4C24 10 |mov ecx, dword ptr [esp+10]
0040156F |. 13C2 |adc eax, edx
00401571 |. 43 |inc ebx
00401572 |. 49 |dec ecx
00401573 |. 3BDD |cmp ebx, ebp
00401575 |. 894424 18 |mov dword ptr [esp+18], eax
00401579 |. 894C24 10 |mov dword ptr [esp+10], ecx
0040157D |.^ 7C 87 \jl short 00401506
0040157F |. 8B4424 14 mov eax, dword ptr [esp+14]
00401583 |. 8B5424 18 mov edx, dword ptr [esp+18]
00401587 |. 5F pop edi
00401588 |. 5E pop esi
00401589 |. 5D pop ebp
0040158A |. 5B pop ebx
0040158B |. 83C4 0C add esp, 0C
0040158E |. C3 retn
0040158F |> 5F pop edi
00401590 |. 5E pop esi
00401591 |. 8BC2 mov eax, edx
00401593 |. 8B5424 10 mov edx, dword ptr [esp+10]
00401597 |. 5D pop ebp
00401598 |. 5B pop ebx
00401599 |. 83C4 0C add esp, 0C
0040159C \. C3 retn
0040159D 90 nop
0040159E 90 nop
0040159F 90 nop
004015A0 . 6A FF push -1 ; 这里是CHECK入口
004015A2 . 68 1E2B4000 push 00402B1E ; SE 处理程序安装
004015A7 . 64:A1 0000000>mov eax, dword ptr fs:[0]
004015AD . 50 push eax
004015AE . 64:8925 00000>mov dword ptr fs:[0], esp ; 保护函数返回现场
004015B5 . 81EC B4010000 sub esp, 1B4 ; 分配局部变量空间
004015BB . 53 push ebx
004015BC . 55 push ebp
004015BD . 56 push esi
004015BE . 8BD1 mov edx, ecx
004015C0 . 57 push edi
004015C1 . B9 0C000000 mov ecx, 0C ; ECX赋值 0C
004015C6 . 33C0 xor eax, eax ; EAX清零
004015C8 . 8DBC24 2D0100>lea edi, dword ptr [esp+12D]
004015CF . C68424 2C0100>mov byte ptr [esp+12C], 0
004015D7 . C68424 600100>mov byte ptr [esp+160], 0
004015DF . F3:AB rep stos dword ptr es:[edi] ; 区域清零,初步认为存放用户名
004015E1 . AA stos byte ptr es:[edi]
004015E2 . B9 18000000 mov ecx, 18
004015E7 . 33C0 xor eax, eax
004015E9 . 8DBC24 610100>lea edi, dword ptr [esp+161]
004015F0 . C68424 E40000>mov byte ptr [esp+E4], 0
004015F8 . F3:AB rep stos dword ptr es:[edi] ; 对区域24个DWORD地址清零
004015FA . 66:AB stos word ptr es:[edi]
004015FC . AA stos byte ptr es:[edi]
004015FD . B9 11000000 mov ecx, 11
00401602 . 33C0 xor eax, eax
00401604 . 8DBC24 E50000>lea edi, dword ptr [esp+E5]
0040160B . 6A 33 push 33
0040160D . F3:AB rep stos dword ptr es:[edi]
0040160F . AA stos byte ptr es:[edi]
00401610 . 8D8424 300100>lea eax, dword ptr [esp+130] ; 这里也是对分配的栈区域清零
00401617 . 8BCA mov ecx, edx
00401619 . 50 push eax ; 用户名字符串变量缓冲入栈
0040161A . 68 E8030000 push 3E8 ; 用户名编辑框ID
0040161F . 895424 74 mov dword ptr [esp+74], edx
00401623 . E8 F8090000 call <jmp.&MFC42.#CWnd::GetDlgItemTex>; 调用GETDLGITEMTEXT
00401628 . E8 FB110000 call 00402828
0040162D . 8DBC24 2C0100>lea edi, dword ptr [esp+12C] ; 这里取得用户名
00401634 . 83C9 FF or ecx, FFFFFFFF
00401637 . 33C0 xor eax, eax ; EAX清零
00401639 . F2:AE repne scas byte ptr es:[edi] ; 存入ES段
0040163B . F7D1 not ecx ; 长度
0040163D . 49 dec ecx ; 用户名长度
0040163E . 51 push ecx ; 入栈
0040163F . 8D8C24 300100>lea ecx, dword ptr [esp+130] ; 用户名字符串首地址给ECX
00401646 . 51 push ecx ; 参数入栈
00401647 . E8 1C120000 call 00402868 ; 处理用户名 404184
0040164C . E8 77120000 call 004028C8
00401651 . 8B10 mov edx, dword ptr [eax] ; 这里看样子是根据前面用户名的暗码为下面CALL准备参数
00401653 . 899424 E40000>mov dword ptr [esp+E4], edx
0040165A . 8B48 04 mov ecx, dword ptr [eax+4]
0040165D . 898C24 E80000>mov dword ptr [esp+E8], ecx
00401664 . 8B50 08 mov edx, dword ptr [eax+8]
00401667 . 8D8C24 600100>lea ecx, dword ptr [esp+160]
0040166E . 899424 EC0000>mov dword ptr [esp+EC], edx
00401675 . 8B40 0C mov eax, dword ptr [eax+C]
00401678 . 51 push ecx
00401679 . 8D9424 E80000>lea edx, dword ptr [esp+E8]
00401680 . 6A 10 push 10
00401682 . 52 push edx
00401683 . 898424 FC0000>mov dword ptr [esp+FC], eax
0040168A . E8 F1FDFFFF call 00401480 ; 根据用户名生成了32位ASCII
0040168F . 83C4 0C add esp, 0C ; 栈平衡
00401692 . 8D4C24 14 lea ecx, dword ptr [esp+14]
00401696 . E8 4F090000 call <jmp.&MFC42.#CString::CString_54>
0040169B . 8D8424 600100>lea eax, dword ptr [esp+160] ; 假注册码的首地址给EAX
004016A2 . 8D4C24 14 lea ecx, dword ptr [esp+14]
004016A6 . 50 push eax ; 参数入栈
004016A7 . C78424 D00100>mov dword ptr [esp+1D0], 0
004016B2 . E8 63090000 call <jmp.&MFC42.#CString::operator=_>
004016B7 . 8D4C24 24 lea ecx, dword ptr [esp+24]
004016BB . E8 2A090000 call <jmp.&MFC42.#CString::CString_54>
004016C0 . 8D4C24 1C lea ecx, dword ptr [esp+1C]
004016C4 . C68424 CC0100>mov byte ptr [esp+1CC], 1
004016CC . E8 19090000 call <jmp.&MFC42.#CString::CString_54>
004016D1 . 8D4C24 2C lea ecx, dword ptr [esp+2C]
004016D5 . C68424 CC0100>mov byte ptr [esp+1CC], 2
004016DD . E8 08090000 call <jmp.&MFC42.#CString::CString_54>
004016E2 . 8D4C24 18 lea ecx, dword ptr [esp+18]
004016E6 . C68424 CC0100>mov byte ptr [esp+1CC], 3
004016EE . E8 F7080000 call <jmp.&MFC42.#CString::CString_54>
004016F3 . 8D4C24 28 lea ecx, dword ptr [esp+28]
004016F7 . C68424 CC0100>mov byte ptr [esp+1CC], 4
004016FF . E8 E6080000 call <jmp.&MFC42.#CString::CString_54>
00401704 . 8D4C24 20 lea ecx, dword ptr [esp+20]
00401708 . C68424 CC0100>mov byte ptr [esp+1CC], 5
00401710 . E8 D5080000 call <jmp.&MFC42.#CString::CString_54>
00401715 . 8D4C24 30 lea ecx, dword ptr [esp+30]
00401719 . C68424 CC0100>mov byte ptr [esp+1CC], 6
00401721 . E8 C4080000 call <jmp.&MFC42.#CString::CString_54>
00401726 . 8D4C24 34 lea ecx, dword ptr [esp+34]
0040172A . C68424 CC0100>mov byte ptr [esp+1CC], 7
00401732 . E8 B3080000 call <jmp.&MFC42.#CString::CString_54>
00401737 . 6A 03 push 3 ; 下面是假注册码"6959A6B452907B73B39E7529521EFA84"分3个字符3个字符的分开
00401739 . 8D4C24 14 lea ecx, dword ptr [esp+14]
0040173D . 6A 00 push 0
0040173F . B3 08 mov bl, 8
00401741 . 51 push ecx
00401742 . 8D4C24 20 lea ecx, dword ptr [esp+20]
00401746 . 889C24 D80100>mov byte ptr [esp+1D8], bl
0040174D . E8 C2080000 call <jmp.&MFC42.#CString::Mid_4278>
00401752 . 50 push eax
00401753 . 8D4C24 28 lea ecx, dword ptr [esp+28]
00401757 . C68424 D00100>mov byte ptr [esp+1D0], 9
0040175F . E8 AA080000 call <jmp.&MFC42.#CString::operator=_>
00401764 . 8D4C24 10 lea ecx, dword ptr [esp+10]
00401768 . 889C24 CC0100>mov byte ptr [esp+1CC], bl
0040176F . E8 6A080000 call <jmp.&MFC42.#CString::~CString_8>
00401774 . 6A 03 push 3
00401776 . 8D5424 14 lea edx, dword ptr [esp+14]
0040177A . 6A 03 push 3
0040177C . 52 push edx
0040177D . 8D4C24 20 lea ecx, dword ptr [esp+20]
00401781 . E8 8E080000 call <jmp.&MFC42.#CString::Mid_4278>
00401786 . 50 push eax
00401787 . 8D4C24 20 lea ecx, dword ptr [esp+20]
0040178B . C68424 D00100>mov byte ptr [esp+1D0], 0A
00401793 . E8 76080000 call <jmp.&MFC42.#CString::operator=_>
00401798 . 8D4C24 10 lea ecx, dword ptr [esp+10]
0040179C . 889C24 CC0100>mov byte ptr [esp+1CC], bl
004017A3 . E8 36080000 call <jmp.&MFC42.#CString::~CString_8>
004017A8 . 6A 03 push 3
004017AA . 8D4424 14 lea eax, dword ptr [esp+14]
004017AE . 6A 06 push 6
004017B0 . 50 push eax
004017B1 . 8D4C24 20 lea ecx, dword ptr [esp+20]
004017B5 . E8 5A080000 call <jmp.&MFC42.#CString::Mid_4278>
004017BA . 50 push eax
004017BB . 8D4C24 30 lea ecx, dword ptr [esp+30]
004017BF . C68424 D00100>mov byte ptr [esp+1D0], 0B
004017C7 . E8 42080000 call <jmp.&MFC42.#CString::operator=_>
004017CC . 8D4C24 10 lea ecx, dword ptr [esp+10]
004017D0 . 889C24 CC0100>mov byte ptr [esp+1CC], bl
004017D7 . E8 02080000 call <jmp.&MFC42.#CString::~CString_8>
004017DC . 6A 03 push 3
004017DE . 8D4C24 14 lea ecx, dword ptr [esp+14]
004017E2 . 6A 09 push 9
004017E4 . 51 push ecx
004017E5 . 8D4C24 20 lea ecx, dword ptr [esp+20]
004017E9 . E8 26080000 call <jmp.&MFC42.#CString::Mid_4278>
004017EE . 50 push eax
004017EF . 8D4C24 1C lea ecx, dword ptr [esp+1C]
004017F3 . C68424 D00100>mov byte ptr [esp+1D0], 0C
004017FB . E8 0E080000 call <jmp.&MFC42.#CString::operator=_>
00401800 . 8D4C24 10 lea ecx, dword ptr [esp+10]
00401804 . 889C24 CC0100>mov byte ptr [esp+1CC], bl
0040180B . E8 CE070000 call <jmp.&MFC42.#CString::~CString_8>
00401810 . 6A 03 push 3
00401812 . 8D5424 14 lea edx, dword ptr [esp+14]
00401816 . 6A 0C push 0C
00401818 . 52 push edx
00401819 . 8D4C24 20 lea ecx, dword ptr [esp+20]
0040181D . E8 F2070000 call <jmp.&MFC42.#CString::Mid_4278>
00401822 . 50 push eax
00401823 . 8D4C24 2C lea ecx, dword ptr [esp+2C]
00401827 . C68424 D00100>mov byte ptr [esp+1D0], 0D
0040182F . E8 DA070000 call <jmp.&MFC42.#CString::operator=_>
00401834 . 8D4C24 10 lea ecx, dword ptr [esp+10]
00401838 . 889C24 CC0100>mov byte ptr [esp+1CC], bl
0040183F . E8 9A070000 call <jmp.&MFC42.#CString::~CString_8>
00401844 . 6A 03 push 3
00401846 . 8D4424 14 lea eax, dword ptr [esp+14]
0040184A . 6A 0F push 0F
0040184C . 50 push eax
0040184D . 8D4C24 20 lea ecx, dword ptr [esp+20]
00401851 . E8 BE070000 call <jmp.&MFC42.#CString::Mid_4278>
00401856 . 50 push eax
00401857 . 8D4C24 24 lea ecx, dword ptr [esp+24]
0040185B . C68424 D00100>mov byte ptr [esp+1D0], 0E
00401863 . E8 A6070000 call <jmp.&MFC42.#CString::operator=_>
00401868 . 8D4C24 10 lea ecx, dword ptr [esp+10]
0040186C . 889C24 CC0100>mov byte ptr [esp+1CC], bl
00401873 . E8 66070000 call <jmp.&MFC42.#CString::~CString_8>
00401878 . 6A 03 push 3
0040187A . 8D4C24 14 lea ecx, dword ptr [esp+14]
0040187E . 6A 12 push 12
00401880 . 51 push ecx
00401881 . 8D4C24 20 lea ecx, dword ptr [esp+20]
00401885 . E8 8A070000 call <jmp.&MFC42.#CString::Mid_4278>
0040188A . 50 push eax
0040188B . 8D4C24 34 lea ecx, dword ptr [esp+34]
0040188F . C68424 D00100>mov byte ptr [esp+1D0], 0F
00401897 . E8 72070000 call <jmp.&MFC42.#CString::operator=_>
0040189C . 8D4C24 10 lea ecx, dword ptr [esp+10]
004018A0 . 889C24 CC0100>mov byte ptr [esp+1CC], bl
004018A7 . E8 32070000 call <jmp.&MFC42.#CString::~CString_8>
004018AC . 6A 03 push 3
004018AE . 8D5424 14 lea edx, dword ptr [esp+14]
004018B2 . 6A 15 push 15
004018B4 . 52 push edx
004018B5 . 8D4C24 20 lea ecx, dword ptr [esp+20]
004018B9 . E8 56070000 call <jmp.&MFC42.#CString::Mid_4278>
004018BE . 50 push eax
004018BF . 8D4C24 38 lea ecx, dword ptr [esp+38]
004018C3 . C68424 D00100>mov byte ptr [esp+1D0], 10
004018CB . E8 3E070000 call <jmp.&MFC42.#CString::operator=_>
004018D0 . 8D4C24 10 lea ecx, dword ptr [esp+10]
004018D4 . 889C24 CC0100>mov byte ptr [esp+1CC], bl
004018DB . E8 FE060000 call <jmp.&MFC42.#CString::~CString_8>
004018E0 . 8B4424 24 mov eax, dword ptr [esp+24]
004018E4 . 50 push eax ; 以下对上面每组三字符进行MD5处理
004018E5 . E8 E6FBFFFF call 004014D0
004018EA . 8B4C24 20 mov ecx, dword ptr [esp+20]
004018EE . 8BF0 mov esi, eax
004018F0 . 51 push ecx
004018F1 . 8BFA mov edi, edx
004018F3 . E8 D8FBFFFF call 004014D0
004018F8 . 895424 7C mov dword ptr [esp+7C], edx
004018FC . 8B5424 34 mov edx, dword ptr [esp+34]
00401900 . 52 push edx
00401901 . 894424 7C mov dword ptr [esp+7C], eax
00401905 . E8 C6FBFFFF call 004014D0
0040190A . 8BD8 mov ebx, eax
0040190C . 8B4424 24 mov eax, dword ptr [esp+24]
00401910 . 50 push eax
00401911 . 8BEA mov ebp, edx
00401913 . E8 B8FBFFFF call 004014D0
00401918 . 8B4C24 38 mov ecx, dword ptr [esp+38]
0040191C . 894424 48 mov dword ptr [esp+48], eax
00401920 . 51 push ecx
00401921 . 895424 50 mov dword ptr [esp+50], edx
00401925 . E8 A6FBFFFF call 004014D0
0040192A . 895424 78 mov dword ptr [esp+78], edx
0040192E . 8B5424 34 mov edx, dword ptr [esp+34]
00401932 . 52 push edx
00401933 . 894424 78 mov dword ptr [esp+78], eax
00401937 . E8 94FBFFFF call 004014D0
0040193C . 894424 6C mov dword ptr [esp+6C], eax
00401940 . 8B4424 48 mov eax, dword ptr [esp+48]
00401944 . 895424 70 mov dword ptr [esp+70], edx
00401948 . 50 push eax
00401949 . E8 82FBFFFF call 004014D0
0040194E . 8B4C24 50 mov ecx, dword ptr [esp+50]
00401952 . 894424 64 mov dword ptr [esp+64], eax
00401956 . 51 push ecx
00401957 . 895424 6C mov dword ptr [esp+6C], edx
0040195B . E8 70FBFFFF call 004014D0
00401960 . 8B4C24 5C mov ecx, dword ptr [esp+5C]
00401964 . 83C4 20 add esp, 20 ; 栈平衡
00401967 . 894424 78 mov dword ptr [esp+78], eax
0040196B . 8B4424 38 mov eax, dword ptr [esp+38] ; 这里对前面每三组字符 ,分别从每4组向前处理
0040196F . 51 push ecx
00401970 . 50 push eax
00401971 . 51 push ecx
00401972 . 50 push eax
00401973 . 899424 8C0000>mov dword ptr [esp+8C], edx
0040197A . E8 F1060000 call 00402070
0040197F . 55 push ebp
00401980 . 53 push ebx
00401981 . 8BC8 mov ecx, eax
00401983 . 55 push ebp
00401984 . 53 push ebx
00401985 . 8BD9 mov ebx, ecx
00401987 . 8BEA mov ebp, edx
00401989 . E8 E2060000 call 00402070
0040198E . 8B4C24 74 mov ecx, dword ptr [esp+74]
00401992 . 03D8 add ebx, eax
00401994 . 8B4424 70 mov eax, dword ptr [esp+70]
00401998 . 51 push ecx
00401999 . 50 push eax
0040199A . 51 push ecx
0040199B . 50 push eax
0040199C . 13EA adc ebp, edx
0040199E . E8 CD060000 call 00402070
004019A3 . 57 push edi
004019A4 . 56 push esi
004019A5 . 03D8 add ebx, eax
004019A7 . 57 push edi
004019A8 . 56 push esi
004019A9 . 13EA adc ebp, edx
004019AB . E8 C0060000 call 00402070
004019B0 . 8B4C24 7C mov ecx, dword ptr [esp+7C]
004019B4 . 03D8 add ebx, eax
004019B6 . 8B4424 78 mov eax, dword ptr [esp+78]
004019BA . 51 push ecx
004019BB . 50 push eax
004019BC . 51 push ecx
004019BD . 50 push eax
004019BE . 13EA adc ebp, edx
004019C0 . E8 AB060000 call 00402070
004019C5 . 8B4C24 4C mov ecx, dword ptr [esp+4C]
004019C9 . 8BF0 mov esi, eax
004019CB . 8B4424 48 mov eax, dword ptr [esp+48]
004019CF . 51 push ecx
004019D0 . 50 push eax
004019D1 . 51 push ecx
004019D2 . 50 push eax
004019D3 . 8BFA mov edi, edx
004019D5 . E8 96060000 call 00402070
004019DA . 8B4C24 58 mov ecx, dword ptr [esp+58]
004019DE . 03F0 add esi, eax
004019E0 . 8B4424 54 mov eax, dword ptr [esp+54]
004019E4 . 51 push ecx
004019E5 . 50 push eax
004019E6 . 51 push ecx
004019E7 . 50 push eax
004019E8 . 13FA adc edi, edx
004019EA . E8 81060000 call 00402070
004019EF . 8B4C24 64 mov ecx, dword ptr [esp+64]
004019F3 . 03F0 add esi, eax
004019F5 . 8B4424 60 mov eax, dword ptr [esp+60]
004019F9 . 51 push ecx
004019FA . 50 push eax
004019FB . 51 push ecx
004019FC . 50 push eax
004019FD . 13FA adc edi, edx
004019FF . E8 6C060000 call 00402070
00401A04 . 03F0 add esi, eax
00401A06 . 13FA adc edi, edx
00401A08 . 57 push edi
00401A09 . 56 push esi
00401A0A . 55 push ebp
00401A0B . 53 push ebx
00401A0C . E8 5F060000 call 00402070
00401A11 . 894424 48 mov dword ptr [esp+48], eax
00401A15 . B9 18000000 mov ecx, 18 ; ECX =18
00401A1A . 33C0 xor eax, eax ; 清零局部缓冲,准备存储用户输入的注册码
00401A1C . 8DBC24 810000>lea edi, dword ptr [esp+81]
00401A23 . C68424 800000>mov byte ptr [esp+80], 0
00401A2B . 895424 4C mov dword ptr [esp+4C], edx
00401A2F . F3:AB rep stos dword ptr es:[edi]
00401A31 . 8B4C24 68 mov ecx, dword ptr [esp+68]
00401A35 . 8D9424 800000>lea edx, dword ptr [esp+80]
00401A3C . 66:AB stos word ptr es:[edi]
00401A3E . 6A 65 push 65 ; 这里位GETDLGITEMTEXTA准备参数
00401A40 . 52 push edx
00401A41 . 68 E9030000 push 3E9
00401A46 . AA stos byte ptr es:[edi]
00401A47 . E8 D4050000 call <jmp.&MFC42.#CWnd::GetDlgItemTex>
00401A4C . 8B3D CC314000 mov edi, dword ptr [<&MSVCRT.isxdigi>; 判断是否是十六进制
00401A52 . 33F6 xor esi, esi
00401A54 > 0FBE8434 8000>movsx eax, byte ptr [esp+esi+80]
00401A5C . 50 push eax ; 每7位7位的判断,取四组
00401A5D . FFD7 call edi ; 判断是否是十六进制
00401A5F . 83C4 04 add esp, 4
00401A62 . 85C0 test eax, eax
00401A64 . 0F84 CC020000 je 00401D36
00401A6A . 46 inc esi
00401A6B . 83FE 07 cmp esi, 7
00401A6E .^ 7C E4 jl short 00401A54
00401A70 . BE 08000000 mov esi, 8 ; 从第8位开始取,继续判断(注意这里跨过用户输入的第7个字符)
00401A75 > 0FBE8C34 8000>movsx ecx, byte ptr [esp+esi+80]
00401A7D . 51 push ecx
00401A7E . FFD7 call edi
00401A80 . 83C4 04 add esp, 4
00401A83 . 85C0 test eax, eax
00401A85 . 0F84 AB020000 je 00401D36
00401A8B . 46 inc esi
00401A8C . 83FE 0F cmp esi, 0F
00401A8F .^ 7C E4 jl short 00401A75
00401A91 . BE 10000000 mov esi, 10
00401A96 > 0FBE9434 8000>movsx edx, byte ptr [esp+esi+80] ; 从第16位开始取,继续判断(注意这里跨过用户输入的第15个字符)
00401A9E . 52 push edx
00401A9F . FFD7 call edi
00401AA1 . 83C4 04 add esp, 4
00401AA4 . 85C0 test eax, eax
00401AA6 . 0F84 8A020000 je 00401D36
00401AAC . 46 inc esi
00401AAD . 83FE 17 cmp esi, 17
00401AB0 .^ 7C E4 jl short 00401A96
00401AB2 . BE 18000000 mov esi, 18 ; 从第24位开始取,继续判断(注意这里跨过用户输入的第23个字符)
00401AB7 > 0FBE8434 8000>movsx eax, byte ptr [esp+esi+80]
00401ABF . 50 push eax
00401AC0 . FFD7 call edi
00401AC2 . 83C4 04 add esp, 4
00401AC5 . 85C0 test eax, eax
00401AC7 . 0F84 69020000 je 00401D36
00401ACD . 46 inc esi
00401ACE . 83FE 1F cmp esi, 1F
00401AD1 .^ 7C E4 jl short 00401AB7
00401AD3 . 8A8C24 870000>mov cl, byte ptr [esp+87]
00401ADA . B0 2D mov al, 2D ; 与2D(45)比较
00401ADC . 3AC8 cmp cl, al
00401ADE . 74 16 je short 00401AF6 ; 相等跳
00401AE0 . 388424 8F0000>cmp byte ptr [esp+8F], al
00401AE7 . 74 0D je short 00401AF6
00401AE9 . 388424 970000>cmp byte ptr [esp+97], al
00401AF0 . 0F85 40020000 jnz 00401D36
00401AF6 > 8D4C24 40 lea ecx, dword ptr [esp+40]
00401AFA . E8 EB040000 call <jmp.&MFC42.#CString::CString_54>
00401AFF . 8D8C24 800000>lea ecx, dword ptr [esp+80] ; 用户输入的注册码首地址存放到ECX
00401B06 . C68424 CC0100>mov byte ptr [esp+1CC], 11
00401B0E . 51 push ecx
00401B0F . 8D4C24 44 lea ecx, dword ptr [esp+44] ; 从里面每7个一组取出用户输入的注册码并存放
00401B13 . E8 02050000 call <jmp.&MFC42.#CString::operator=_>
00401B18 . 8D4C24 6C lea ecx, dword ptr [esp+6C]
00401B1C . E8 C9040000 call <jmp.&MFC42.#CString::CString_54>
00401B21 . 8D4C24 50 lea ecx, dword ptr [esp+50]
00401B25 . C68424 CC0100>mov byte ptr [esp+1CC], 12
00401B2D . E8 B8040000 call <jmp.&MFC42.#CString::CString_54>
00401B32 . 8D4C24 44 lea ecx, dword ptr [esp+44]
00401B36 . C68424 CC0100>mov byte ptr [esp+1CC], 13
00401B3E . E8 A7040000 call <jmp.&MFC42.#CString::CString_54>
00401B43 . 8D4C24 5C lea ecx, dword ptr [esp+5C]
00401B47 . C68424 CC0100>mov byte ptr [esp+1CC], 14
00401B4F . E8 96040000 call <jmp.&MFC42.#CString::CString_54>
00401B54 . 6A 07 push 7
00401B56 . 8D5424 3C lea edx, dword ptr [esp+3C]
00401B5A . B3 15 mov bl, 15
00401B5C . 6A 00 push 0
00401B5E . 52 push edx
00401B5F . 8D4C24 4C lea ecx, dword ptr [esp+4C]
00401B63 . 889C24 D80100>mov byte ptr [esp+1D8], bl
00401B6A . E8 A5040000 call <jmp.&MFC42.#CString::Mid_4278>
00401B6F . 50 push eax
00401B70 . 8D4C24 70 lea ecx, dword ptr [esp+70]
00401B74 . C68424 D00100>mov byte ptr [esp+1D0], 16
00401B7C . E8 8D040000 call <jmp.&MFC42.#CString::operator=_>
00401B81 . 8D4C24 38 lea ecx, dword ptr [esp+38]
00401B85 . 889C24 CC0100>mov byte ptr [esp+1CC], bl
00401B8C . E8 4D040000 call <jmp.&MFC42.#CString::~CString_8>
00401B91 . 6A 07 push 7
00401B93 . 8D4424 3C lea eax, dword ptr [esp+3C]
00401B97 . 6A 08 push 8
00401B99 . 50 push eax
00401B9A . 8D4C24 4C lea ecx, dword ptr [esp+4C]
00401B9E . E8 71040000 call <jmp.&MFC42.#CString::Mid_4278>
00401BA3 . 50 push eax
00401BA4 . 8D4C24 54 lea ecx, dword ptr [esp+54]
00401BA8 . C68424 D00100>mov byte ptr [esp+1D0], 17
00401BB0 . E8 59040000 call <jmp.&MFC42.#CString::operator=_>
00401BB5 . 8D4C24 38 lea ecx, dword ptr [esp+38]
00401BB9 . 889C24 CC0100>mov byte ptr [esp+1CC], bl
00401BC0 . E8 19040000 call <jmp.&MFC42.#CString::~CString_8>
00401BC5 . 6A 07 push 7
00401BC7 . 8D4C24 3C lea ecx, dword ptr [esp+3C]
00401BCB . 6A 10 push 10
00401BCD . 51 push ecx
00401BCE . 8D4C24 4C lea ecx, dword ptr [esp+4C]
00401BD2 . E8 3D040000 call <jmp.&MFC42.#CString::Mid_4278>
00401BD7 . 50 push eax
00401BD8 . 8D4C24 48 lea ecx, dword ptr [esp+48]
00401BDC . C68424 D00100>mov byte ptr [esp+1D0], 18
00401BE4 . E8 25040000 call <jmp.&MFC42.#CString::operator=_>
00401BE9 . 8D4C24 38 lea ecx, dword ptr [esp+38]
00401BED . 889C24 CC0100>mov byte ptr [esp+1CC], bl
00401BF4 . E8 E5030000 call <jmp.&MFC42.#CString::~CString_8>
00401BF9 . 6A 07 push 7
00401BFB . 8D5424 3C lea edx, dword ptr [esp+3C]
00401BFF . 6A 18 push 18
00401C01 . 52 push edx
00401C02 . 8D4C24 4C lea ecx, dword ptr [esp+4C]
00401C06 . E8 09040000 call <jmp.&MFC42.#CString::Mid_4278>
00401C0B . 50 push eax
00401C0C . 8D4C24 60 lea ecx, dword ptr [esp+60]
00401C10 . C68424 D00100>mov byte ptr [esp+1D0], 19
00401C18 . E8 F1030000 call <jmp.&MFC42.#CString::operator=_>
00401C1D . 8D4C24 38 lea ecx, dword ptr [esp+38]
00401C21 . 889C24 CC0100>mov byte ptr [esp+1CC], bl
00401C28 . E8 B1030000 call <jmp.&MFC42.#CString::~CString_8>
00401C2D . 8B4424 6C mov eax, dword ptr [esp+6C]
00401C31 . 50 push eax
00401C32 . E8 99F8FFFF call 004014D0 ; 对每组用户的注册码进行MD5运算
00401C37 . 8B4C24 54 mov ecx, dword ptr [esp+54]
00401C3B . 8BE8 mov ebp, eax
00401C3D . 51 push ecx
00401C3E . 8BDA mov ebx, edx
00401C40 . E8 8BF8FFFF call 004014D0
00401C45 . 895424 60 mov dword ptr [esp+60], edx
00401C49 . 8B5424 4C mov edx, dword ptr [esp+4C]
00401C4D . 52 push edx
00401C4E . 894424 60 mov dword ptr [esp+60], eax
00401C52 . E8 79F8FFFF call 004014D0
00401C57 . 894424 6C mov dword ptr [esp+6C], eax
00401C5B . 8B4424 68 mov eax, dword ptr [esp+68]
00401C5F . 50 push eax
00401C60 . 895424 74 mov dword ptr [esp+74], edx
00401C64 . E8 67F8FFFF call 004014D0
00401C69 . 83C4 10 add esp, 10
00401C6C . 52 push edx
00401C6D . 50 push eax
00401C6E . 52 push edx
00401C6F . 50 push eax
00401C70 . E8 FB030000 call 00402070
00401C75 . 8B4C24 64 mov ecx, dword ptr [esp+64]
00401C79 . 8BF0 mov esi, eax
00401C7B . 8B4424 60 mov eax, dword ptr [esp+60]
00401C7F . 51 push ecx
00401C80 . 50 push eax
00401C81 . 51 push ecx
00401C82 . 50 push eax
00401C83 . 8BFA mov edi, edx
00401C85 . E8 E6030000 call 00402070
00401C8A . 8B4C24 58 mov ecx, dword ptr [esp+58]
00401C8E . 03F0 add esi, eax
00401C90 . 8B4424 54 mov eax, dword ptr [esp+54]
00401C94 . 51 push ecx
00401C95 . 50 push eax
00401C96 . 51 push ecx
00401C97 . 50 push eax
00401C98 . 13FA adc edi, edx
00401C9A . E8 D1030000 call 00402070
00401C9F . 53 push ebx
00401CA0 . 55 push ebp
00401CA1 . 03F0 add esi, eax
00401CA3 . 53 push ebx
00401CA4 . 55 push ebp
00401CA5 . 13FA adc edi, edx
00401CA7 . E8 C4030000 call 00402070
00401CAC . 03F0 add esi, eax
00401CAE . 8B4424 48 mov eax, dword ptr [esp+48]
00401CB2 . 13FA adc edi, edx
00401CB4 . 3BF0 cmp esi, eax ; 爆破关键点(2个比较点)
00401CB6 . 75 14 jnz short 00401CCC
00401CB8 . 3B7C24 4C cmp edi, dword ptr [esp+4C]
00401CBC . 75 0E jnz short 00401CCC
00401CBE . 6A 00 push 0
00401CC0 . 68 34404000 push 00404034 ; ASCII "ok"
00401CC5 . 68 28404000 push 00404028 ; ASCII "good job!"
00401CCA . EB 0C jmp short 00401CD8
00401CCC > 6A 00 push 0
00401CCE . 68 20404000 push 00404020 ; ASCII "error"
00401CD3 . 68 20404000 push 00404020 ; ASCII "error"
|