简单分析:易我数据恢复向导V2.0
【破解作者】 jsliyangsj
【作者邮箱】 sjcrack@yahoo.com.cn
【使用工具】 peid OllyDbg1.10
【破解平台】 Winxp
【软件名称】 易我数据恢复向导V2.0
【软件地址】 http://www.easeus.com.cn/
【编写语言】 C6
暂停法一次来到这里:
00440D06 /. 55 push ebp
00440D07 |. 8BEC mov ebp,esp
00440D09 |. 6A FF push -1
00440D0B |. 68 D7F>push DRW.0047F7D7 ; SE 句柄安装
00440D10 |. 64:A1 >mov eax,dword ptr fs:[0]
00440D16 |. 50 push eax
00440D17 |. 64:892>mov dword ptr fs:[0],esp
00440D1E |. 83EC 2>sub esp,20
00440D21 |. 894D E>mov dword ptr ss:[ebp-20],ecx
00440D24 |. 6A 01 push 1
00440D26 |. 8B4D E>mov ecx,dword ptr ss:[ebp-20]
00440D29 |. E8 929>call <jmp.&MFC42.#6334>
00440D2E |. 8D4D E>lea ecx,dword ptr ss:[ebp-14]
00440D31 |. E8 6C9>call <jmp.&MFC42.#540>
00440D36 |. C745 F>mov dword ptr ss:[ebp-4],0
00440D3D |. 8D4D F>lea ecx,dword ptr ss:[ebp-10]
00440D40 |. E8 5D9>call <jmp.&MFC42.#540>
00440D45 |. C645 F>mov byte ptr ss:[ebp-4],1
00440D49 |. 8B45 E>mov eax,dword ptr ss:[ebp-20]
00440D4C |. 05 540>add eax,354
00440D51 |. 50 push eax ; /这里是用户名的地址
00440D52 |. 8B4D E>mov ecx,dword ptr ss:[ebp-20] ; |
00440D55 |. 81C1 5>add ecx,350 ; |
00440D5B |. 51 push ecx ; |这里放有注册码
00440D5C |. E8 0F4>call DRW.00475470 ; \关键 进入
00440D61 |. 85C0 test eax,eax
00440D63 |. 75 56 jnz short DRW.00440DBB ; 关键跳转
00440D65 |. 68 F3E>push 0EFF3
00440D6A |. 8D4D F>lea ecx,dword ptr ss:[ebp-10]
00440D6D |. E8 969>call <jmp.&MFC42.#4160>
00440D72 |. 68 37E>push 0EF37
00440D77 |. 8D4D E>lea ecx,dword ptr ss:[ebp-14]
00440D7A |. E8 899>call <jmp.&MFC42.#4160>
00440D7F |. 6A 10 push 10
00440D81 |. 8D4D E>lea ecx,dword ptr ss:[ebp-14]
00440D84 |. E8 074>call DRW.00465290
00440D89 |. 50 push eax
00440D8A |. 8D4D F>lea ecx,dword ptr ss:[ebp-10]
00440D8D |. E8 FE4>call DRW.00465290
00440D92 |. 50 push eax
00440D93 |. 8B4D E>mov ecx,dword ptr ss:[ebp-20]
00440D96 |. E8 BB9>call <jmp.&MFC42.#4224> ; 错误窗口
00440D9B |. C645 F>mov byte ptr ss:[ebp-4],0
00440D9F |. 8D4D F>lea ecx,dword ptr ss:[ebp-10]
00440DA2 |. E8 E39>call <jmp.&MFC42.#800>
00440DA7 |. C745 F>mov dword ptr ss:[ebp-4],-1
…………………………………………………………………………………………………………………………………………
00440D5C |. E8 0F4>call DRW.00475470 ; \关键 进入
………………………………………………………………………………………………………………
00474BE1 /$ 55 push ebp
00474BE2 |. 8BEC mov ebp,esp
00474BE4 |. 81EC A>sub esp,0AAC
00474BEA |. C785 7>mov dword ptr ss:[ebp-488],950B4B61
00474BF4 |. 66:C78>mov word ptr ss:[ebp-484],0FA41
00474BFD |. 66:C78>mov word ptr ss:[ebp-482],4DC2
00474C06 |. C685 8>mov byte ptr ss:[ebp-480],0AD
00474C0D |. C685 8>mov byte ptr ss:[ebp-47F],7E
00474C14 |. C685 8>mov byte ptr ss:[ebp-47E],63
00474C1B |. C685 8>mov byte ptr ss:[ebp-47D],0CF
00474C22 |. C685 8>mov byte ptr ss:[ebp-47C],62
00474C29 |. C685 8>mov byte ptr ss:[ebp-47B],11
00474C30 |. C685 8>mov byte ptr ss:[ebp-47A],0B2
00474C37 |. C685 8>mov byte ptr ss:[ebp-479],11
00474C3E |. C785 8>mov dword ptr ss:[ebp-478],90E7EED0
00474C48 |. 66:C78>mov word ptr ss:[ebp-474],3005
00474C51 |. 66:C78>mov word ptr ss:[ebp-472],4A09
00474C5A |. C685 9>mov byte ptr ss:[ebp-470],9D
00474C61 |. C685 9>mov byte ptr ss:[ebp-46F],55
00474C68 |. C685 9>mov byte ptr ss:[ebp-46E],50
00474C6F |. C685 9>mov byte ptr ss:[ebp-46D],72
00474C76 |. C685 9>mov byte ptr ss:[ebp-46C],0FB
00474C7D |. C685 9>mov byte ptr ss:[ebp-46B],65
00474C84 |. C685 9>mov byte ptr ss:[ebp-46A],95
00474C8B |. C685 9>mov byte ptr ss:[ebp-469],0F9
00474C92 |. C785 9>mov dword ptr ss:[ebp-468],AA4591F2
00474C9C |. 66:C78>mov word ptr ss:[ebp-464],80D2
00474CA5 |. 66:C78>mov word ptr ss:[ebp-462],42A5
00474CAE |. C685 A>mov byte ptr ss:[ebp-460],0B3
00474CB5 |. C685 A>mov byte ptr ss:[ebp-45F],0AB
00474CBC |. C685 A>mov byte ptr ss:[ebp-45E],0C
00474CC3 |. C685 A>mov byte ptr ss:[ebp-45D],96
00474CCA |. C685 A>mov byte ptr ss:[ebp-45C],5F
00474CD1 |. C685 A>mov byte ptr ss:[ebp-45B],25
00474CD8 |. C685 A>mov byte ptr ss:[ebp-45A],53
00474CDF |. C685 A>mov byte ptr ss:[ebp-459],1D
00474CE6 |. C785 A>mov dword ptr ss:[ebp-458],1177BA51
00474CF0 |. 66:C78>mov word ptr ss:[ebp-454],5DDA
00474CF9 |. 66:C78>mov word ptr ss:[ebp-452],4F35
00474D02 |. C685 B>mov byte ptr ss:[ebp-450],0B2
00474D09 |. C685 B>mov byte ptr ss:[ebp-44F],57
00474D10 |. C685 B>mov byte ptr ss:[ebp-44E],64
00474D17 |. C685 B>mov byte ptr ss:[ebp-44D],0F0
00474D1E |. C685 B>mov byte ptr ss:[ebp-44C],0CA
00474D25 |. C685 B>mov byte ptr ss:[ebp-44B],0FD
00474D2C |. C685 B>mov byte ptr ss:[ebp-44A],0D
00474D33 |. C685 B>mov byte ptr ss:[ebp-449],52
00474D3A |. C785 B>mov dword ptr ss:[ebp-448],DC7C1345
00474D44 |. 66:C78>mov word ptr ss:[ebp-444],7686
00474D4D |. 66:C78>mov word ptr ss:[ebp-442],40D4
00474D56 |. C685 C>mov byte ptr ss:[ebp-440],0AD
00474D5D |. C685 C>mov byte ptr ss:[ebp-43F],0CD
00474D64 |. C685 C>mov byte ptr ss:[ebp-43E],0C1
00474D6B |. C685 C>mov byte ptr ss:[ebp-43D],88
00474D72 |. C685 C>mov byte ptr ss:[ebp-43C],15
00474D79 |. C685 C>mov byte ptr ss:[ebp-43B],9A
00474D80 |. C685 C>mov byte ptr ss:[ebp-43A],1B
00474D87 |. C685 C>mov byte ptr ss:[ebp-439],55
00474D8E |. C785 C>mov dword ptr ss:[ebp-438],E0C3DE22
00474D98 |. 66:C78>mov word ptr ss:[ebp-434],0BFDB
00474DA1 |. 66:C78>mov word ptr ss:[ebp-432],4ABE
00474DAA |. C685 D>mov byte ptr ss:[ebp-430],8A
00474DB1 |. C685 D>mov byte ptr ss:[ebp-42F],0F9
00474DB8 |. C685 D>mov byte ptr ss:[ebp-42E],89
00474DBF |. C685 D>mov byte ptr ss:[ebp-42D],76
00474DC6 |. C685 D>mov byte ptr ss:[ebp-42C],0AE
00474DCD |. C685 D>mov byte ptr ss:[ebp-42B],52
00474DD4 |. C685 D>mov byte ptr ss:[ebp-42A],79
00474DDB |. C685 D>mov byte ptr ss:[ebp-429],38
00474DE2 |. C785 D>mov dword ptr ss:[ebp-428],79F83686
00474DEC |. 66:C78>mov word ptr ss:[ebp-424],18B9
00474DF5 |. 66:C78>mov word ptr ss:[ebp-422],4F8A
00474DFE |. C685 E>mov byte ptr ss:[ebp-420],0A0
00474E05 |. C685 E>mov byte ptr ss:[ebp-41F],3
00474E0C |. C685 E>mov byte ptr ss:[ebp-41E],2C
00474E13 |. C685 E>mov byte ptr ss:[ebp-41D],0C2
00474E1A |. C685 E>mov byte ptr ss:[ebp-41C],0E3
00474E21 |. C685 E>mov byte ptr ss:[ebp-41B],7
00474E28 |. C685 E>mov byte ptr ss:[ebp-41A],0F7
00474E2F |. C685 E>mov byte ptr ss:[ebp-419],0CB ; 上面产生一个密码表
………………………………………………………………………………………………………………………………
EBP-488 0> 950B4B61
EBP-484 0> 4DC2FA41
EBP-480 0> CF637EAD
EBP-47C 0> 11B21162
EBP-478 0> 90E7EED0
EBP-474 0> 4A093005
EBP-470 0> 7250559D
EBP-46C 0> F99565FB
EBP-468 0> AA4591F2
EBP-464 0> 42A580D2
EBP-460 0> 960CABB3
EBP-45C 0> 1D53255F
EBP-458 0> 1177BA51
EBP-454 0> 4F355DDA
EBP-450 0> F06457B2
EBP-44C 0> 520DFDCA
EBP-448 0> DC7C1345
EBP-444 0> 40D47686
EBP-440 0> 88C1CDAD
EBP-43C 0> 551B9A15
EBP-438 0> E0C3DE22
EBP-434 0> 4ABEBFDB
EBP-430 0> 7689F98A
EBP-42C 0> 387952AE
EBP-428 0> 79F83686
EBP-424 0> 4F8A18B9
EBP-420 0> C22C03A0
EBP-41C 0> CBF707E3
……………………………………………………………………………………………………………………
00474E36 |. 837D 0>cmp dword ptr ss:[ebp+8],0 ; 比较用户名是否位0
00474E3A |. 74 06 je short DRW.00474E42
00474E3C |. 837D 0>cmp dword ptr ss:[ebp+C],0 ; 注册码是否位0
00474E40 |. 75 07 jnz short DRW.00474E49
00474E42 |> 33C0 xor eax,eax
00474E44 |. E9 1D0>jmp DRW.00475166
00474E49 |> 8B45 0>mov eax,dword ptr ss:[ebp+8]
00474E4C |. 50 push eax ; /s
00474E4D |. E8 106>call <jmp.&MSVCRT.strlen> ; \测用户名的长度
00474E52 |. 83C4 0>add esp,4
00474E55 |. 3D FD0>cmp eax,3FD
00474E5A |. 76 07 jbe short DRW.00474E63
00474E5C |. 33C0 xor eax,eax
00474E5E |. E9 030>jmp DRW.00475166
00474E63 |> 8B4D 0>mov ecx,dword ptr ss:[ebp+8]
00474E66 |. 51 push ecx ; /s
00474E67 |. E8 F66>call <jmp.&MSVCRT.strlen> ; \strlen
00474E6C |. 83C4 0>add esp,4
00474E6F |. 8985 5>mov dword ptr ss:[ebp-6AC],eax ; 用户名长度储存
00474E75 |. C685 6>mov byte ptr ss:[ebp-698],0
00474E7C |. C785 F>mov dword ptr ss:[ebp-410],0
00474E86 |. C785 F>mov dword ptr ss:[ebp-408],0
00474E90 |. 8B55 0>mov edx,dword ptr ss:[ebp+8] ; 用户名
00474E93 |. 52 push edx ; /src
00474E94 |. 8D85 F>lea eax,dword ptr ss:[ebp-404] ; |用户名位数地址
00474E9A |. 50 push eax ; |dest
00474E9B |. E8 C86>call <jmp.&MSVCRT.strcpy> ; \拷贝用户名
00474EA0 |. 83C4 0>add esp,8
00474EA3 |. C785 7>mov dword ptr ss:[ebp-48C],0 ; 让密码表的第一组为0(这里与位数比较)
00474EAD |. EB 0F jmp short DRW.00474EBE
00474EAF |> 8B8D 7>/mov ecx,dword ptr ss:[ebp-48C]
00474EB5 |. 83C1 0>|add ecx,1 ; 循环次数
00474EB8 |. 898D 7>|mov dword ptr ss:[ebp-48C],ecx
00474EBE |> 8B95 7> mov edx,dword ptr ss:[ebp-48C]
00474EC4 |. 3B95 5>|cmp edx,dword ptr ss:[ebp-6AC] ; 判断是否结束
00474ECA |. 7D 35 |jge short DRW.00474F01
00474ECC |. 8B85 7>|mov eax,dword ptr ss:[ebp-48C]
00474ED2 |. 8A8D 6>|mov cl,byte ptr ss:[ebp-698]
00474ED8 |. 028C05>|add cl,byte ptr ss:[ebp+eax-404] ; 依次将用户名的每一个字母的ACSII加上上一次之和(取最后两位)
00474EDF |. 888D 6>|mov byte ptr ss:[ebp-698],cl ; 储存
00474EE5 |. 8B95 6>|mov edx,dword ptr ss:[ebp-698]
00474EEB |. 81E2 F>|and edx,0FF ; 只取后面两位
00474EF1 |. 8B85 F>|mov eax,dword ptr ss:[ebp-410]
00474EF7 |. 03C2 |add eax,edx
00474EF9 |. 8985 F>|mov dword ptr ss:[ebp-410],eax ; 储存最后相加得数sjcrack得到的结果是3AC
00474EFF |.^ EB AE \jmp short DRW.00474EAF ; 这个循环:先两位用户名的ASCII的和(取最后2位)再加上前一位ASCII
00474F01 |> 68 000>push 200 ; /n = 200 (512.)
00474F06 |. 6A 00 push 0 ; |c = 00
00474F08 |. 8D8D 7>lea ecx,dword ptr ss:[ebp-690] ; |
00474F0E |. 51 push ecx ; |s
00474F0F |. E8 BC6>call <jmp.&MSVCRT.memset> ; \memset
00474F14 |. 83C4 0>add esp,0C
00474F17 |. 6A 08 push 8 ; /n = 8
00474F19 |. 8B55 0>mov edx,dword ptr ss:[ebp+C] ; |
00474F1C |. 52 push edx ; |注册码
00474F1D |. 8D85 7>lea eax,dword ptr ss:[ebp-690] ; |
00474F23 |. 50 push eax ; |dest
00474F24 |. E8 336>call <jmp.&MSVCRT.memcpy> ; \拷贝注册码的前8位
00474F29 |. 83C4 0>add esp,0C
00474F2C |. 8D8D 7>lea ecx,dword ptr ss:[ebp-690]
00474F32 |. 51 push ecx ; /Arg1
00474F33 |. E8 FEF>call DRW.00474A36 ; \前8位将字符转换位数字
00474F38 |. 8985 F>mov dword ptr ss:[ebp-40C],eax ; 将输入码的前8位储存
00474F3E |. 8B95 F>mov edx,dword ptr ss:[ebp-410] ; 用户名计算出来的数字
00474F44 |. 0395 F>add edx,dword ptr ss:[ebp-40C] ; 用户名计算出来的数字加上前8位数字
00474F4A |. 8995 F>mov dword ptr ss:[ebp-410],edx ; 储存覆盖原来用户名计算出来的
00474F50 |. 8B85 F>mov eax,dword ptr ss:[ebp-40C] ; 输入码前8
00474F56 |. 0385 F>add eax,dword ptr ss:[ebp-410] ; 结果再加上注册码的前8
00474F5C |. 8B8D 6>mov ecx,dword ptr ss:[ebp-698]
00474F62 |. 81E1 F>and ecx,0FF ; 得到用户名最后一次相加的结果
00474F68 |. 03C1 add eax,ecx ; 再加上取
00474F6A |. 8B95 7>mov edx,dword ptr ss:[ebp-48C] ; 用户名的位数
00474F70 |. 33C9 xor ecx,ecx
00474F72 |. 8A8C15>mov cl,byte ptr ss:[ebp+edx-405] ; 得到用户名的最后一位ACSII
00474F79 |. 03C1 add eax,ecx ; 又加上去
00474F7B |. 33D2 xor edx,edx
00474F7D |. B9 070>mov ecx,7
00474F82 |. F7F1 div ecx ; 上面相加的结果除以7
00474F84 |. 8995 F>mov dword ptr ss:[ebp-408],edx ; 余数储存
00474F8A |. 8B95 F>mov edx,dword ptr ss:[ebp-408]
00474F90 |. C1E2 0>shl edx,4 ; 将余数左移4位 作为在密码表的指针
00474F93 |. 8D8415>lea eax,dword ptr ss:[ebp+edx-488] ; 密码表指向
00474F9A |. 8985 7>mov dword ptr ss:[ebp-490],eax
00474FA0 |. 8B8D 7>mov ecx,dword ptr ss:[ebp-490]
00474FA6 |. 8B51 0>mov edx,dword ptr ds:[ecx+C] ; 取值了密码表中
00474FA9 |. 3395 F>xor edx,dword ptr ss:[ebp-410] ; 这个就是第2组注册码-在密码表中得到的数据XOR用户名得出的值加上前8的结果
00474FAF |. 8995 5>mov dword ptr ss:[ebp-6A8],edx ; 储存
00474FB5 |. 8B85 7>mov eax,dword ptr ss:[ebp-490]
00474FBB |. 8B48 0>mov ecx,dword ptr ds:[eax+4] ; 密码表中取值了
00474FBE |. 338D F>xor ecx,dword ptr ss:[ebp-410] ; 这个就是第3组注册码-在密码表中得到的数据XOR用户名得出的值加上前8的结果
00474FC4 |. 898D 5>mov dword ptr ss:[ebp-6A4],ecx ; 储存
00474FCA |. 8B95 7>mov edx,dword ptr ss:[ebp-490]
00474FD0 |. 8B42 0>mov eax,dword ptr ds:[edx+8] ; 密码表中取值了
00474FD3 |. 3385 F>xor eax,dword ptr ss:[ebp-410] ; 这个就是第4组注册码-在密码表中得到的数据XOR用户名得出的值加上前8的结果
00474FD9 |. 8985 6>mov dword ptr ss:[ebp-6A0],eax ; 储存
00474FDF |. 8B8D 7>mov ecx,dword ptr ss:[ebp-490]
00474FE5 |. 8B11 mov edx,dword ptr ds:[ecx] ; 密码表中取值了
00474FE7 |. 3395 F>xor edx,dword ptr ss:[ebp-410] ; 这个就是第5组注册码-在密码表中得到的数据XOR用户名得出的值加上前8的结果
00474FED |. 8995 6>mov dword ptr ss:[ebp-69C],edx ; 储存
00474FF3 |. 68 000>push 200 ; /n = 200 (512.)
00474FF8 |. 6A 00 push 0 ; |c = 00
00474FFA |. 8D85 5>lea eax,dword ptr ss:[ebp-8AC] ; |
00475000 |. 50 push eax ; |s
00475001 |. E8 CA6>call <jmp.&MSVCRT.memset> ; \memset
00475006 |. 83C4 0>add esp,0C
00475009 |. 8B8D F>mov ecx,dword ptr ss:[ebp-40C]
0047500F |. 51 push ecx ; /<%.8x>
00475010 |. 68 441>push DRW.004A1C44 ; |format = "%.8x-"
00475015 |. 8D95 5>lea edx,dword ptr ss:[ebp-8AC] ; |
0047501B |. 52 push edx ; |s
0047501C |. FF15 6>call dword ptr ds:[<&MSVCRT.sprintf>] ; \在第一组注册码后面加上一个“-”
00475022 |. 83C4 0>add esp,0C
00475025 |. C785 7>mov dword ptr ss:[ebp-48C],0
0047502F |. EB 0F jmp short DRW.00475040
00475031 |> 8B85 7>/mov eax,dword ptr ss:[ebp-48C]
00475037 |. 83C0 0>|add eax,1
0047503A |. 8985 7>|mov dword ptr ss:[ebp-48C],eax
00475040 |> 83BD 7> cmp dword ptr ss:[ebp-48C],4
00475047 |. 73 3B |jnb short DRW.00475084
00475049 |. 8B8D 7>|mov ecx,dword ptr ss:[ebp-48C]
0047504F |. 8B948D>|mov edx,dword ptr ss:[ebp+ecx*4-6A8]
00475056 |. 52 |push edx ; /<%.8x>
00475057 |. 68 4C1>|push DRW.004A1C4C ; |format = "%.8x-"
0047505C |. 8D85 5>|lea eax,dword ptr ss:[ebp-AAC] ; |
00475062 |. 50 |push eax ; |s
00475063 |. FF15 6>|call dword ptr ds:[<&MSVCRT.sprintf>] ; \将每一组的数据后面加上“-”
00475069 |. 83C4 0>|add esp,0C
0047506C |. 8D8D 5>|lea ecx,dword ptr ss:[ebp-AAC]
00475072 |. 51 |push ecx ; /src
00475073 |. 8D95 5>|lea edx,dword ptr ss:[ebp-8AC] ; |
00475079 |. 52 |push edx ; |dest
0047507A |. E8 996>|call <jmp.&MSVCRT.strcat> ; \将数据组合在一起
0047507F |. 83C4 0>|add esp,8
00475082 |.^ EB AD \jmp short DRW.00475031
00475084 |> 8D85 5>lea eax,dword ptr ss:[ebp-8AC] ; 上面一个循环的目的是将每一组数据加上“-”后组合
0047508A |. 50 push eax ; /s
0047508B |. FF15 E>call dword ptr ds:[<&MSVCRT._strupr>] ; \将组合后的注册码中的字符全部变成大写
00475091 |. 83C4 0>add esp,4
00475094 |. 8D8D 5>lea ecx,dword ptr ss:[ebp-8AC]
0047509A |. 51 push ecx ; /s
0047509B |. E8 C26>call <jmp.&MSVCRT.strlen> ; \测出注册码的长度
004750A0 |. 83C4 0>add esp,4
004750A3 |. C68405>mov byte ptr ss:[ebp+eax-8AD],0 ; 去掉注册码最后一位的“-”
004750AB |. 8D95 5>lea edx,dword ptr ss:[ebp-8AC]
004750B1 |. 52 push edx ; /s
004750B2 |. E8 AB6>call <jmp.&MSVCRT.strlen> ; \测出注册码的长度
004750B7 |. 83C4 0>add esp,4
004750BA |. 8985 E>mov dword ptr ss:[ebp-418],eax
004750C0 |. 8B45 0>mov eax,dword ptr ss:[ebp+C] ; 得到输入码
004750C3 |. 50 push eax ; /s
004750C4 |. E8 996>call <jmp.&MSVCRT.strlen> ; \测输入码的长度
004750C9 |. 83C4 0>add esp,4
004750CC |. 8945 F>mov dword ptr ss:[ebp-4],eax
004750CF |. 8B8D E>mov ecx,dword ptr ss:[ebp-418]
004750D5 |. 3B4D F>cmp ecx,dword ptr ss:[ebp-4] ; 输入码的长度与注册码的长度要相等
004750D8 74 07 je short DRW.004750E1
004750DA |. 33C0 xor eax,eax
004750DC |. E9 850>jmp DRW.00475166
004750E1 |> C785 6>mov dword ptr ss:[ebp-694],0
004750EB |. C785 E>mov dword ptr ss:[ebp-414],0
004750F5 |. C785 7>mov dword ptr ss:[ebp-48C],0
004750FF |. EB 0F jmp short DRW.00475110
00475101 |> 8B95 7>/mov edx,dword ptr ss:[ebp-48C]
00475107 |. 83C2 0>|add edx,1
0047510A |. 8995 7>|mov dword ptr ss:[ebp-48C],edx
00475110 |> 8B85 7> mov eax,dword ptr ss:[ebp-48C]
00475116 |. 3B45 F>|cmp eax,dword ptr ss:[ebp-4]
00475119 |. 7D 3A |jge short DRW.00475155
0047511B |. 8B8D 7>|mov ecx,dword ptr ss:[ebp-48C]
00475121 |. 33D2 |xor edx,edx
00475123 |. 8A940D>|mov dl,byte ptr ss:[ebp+ecx-8AC] ; 这里是依次得到用用户名和输入码的前8位计算出来的注册码每一位的ACSII
0047512A |. 8B85 6>|mov eax,dword ptr ss:[ebp-694] ; 得到前一次的结果
00475130 |. 03C2 |add eax,edx ; 前一次的结果加上本次注册码的ASCII
00475132 |. 8985 6>|mov dword ptr ss:[ebp-694],eax ; 储存就是将用用户名和输入码前8位计算出来的注册码每一位ASCII相加
00475138 |. 8B4D 0>|mov ecx,dword ptr ss:[ebp+C] ; 我的输入码
0047513B |. 038D 7>|add ecx,dword ptr ss:[ebp-48C]
00475141 |. 33D2 |xor edx,edx
00475143 |. 8A11 |mov dl,byte ptr ds:[ecx] ; 这里是依次得到输入码每一位的ACSII
00475145 |. 8B85 E>|mov eax,dword ptr ss:[ebp-414] ; 得到前一次的结果
0047514B |. 03C2 |add eax,edx ; 加上这一次输入码的ACSII
0047514D |. 8985 E>|mov dword ptr ss:[ebp-414],eax
00475153 |.^ EB AC \jmp short DRW.00475101
00475155 |> 8B8D 6>mov ecx,dword ptr ss:[ebp-694]
0047515B 33C0 xor eax,eax
0047515D 3B8D E>cmp ecx,dword ptr ss:[ebp-414] ; 比较如果两次相加的结果相等
00475163 0F94C0 sete al ; 置1 (标志位)
00475166 8BE5 mov esp,ebp
00475168 |. 5D pop ebp
00475169 \. C2 080>retn 8
总结:注册码只与用户名及注册码的前8位有关(注册码一共有5组分别用“-”相连每组分别有8个)
1、先计算用户名:先用户名的ASCII累加的和(取最后2位)结果位A,再把每一次的A累加起来总的结果为B(其中最后依次A有用)
2、将注册码的前8位将字符当作数字加上B,作为结果C。
3、将C+注册码的前8位+A+用户名的最后一位的ASCII的总结果除以7的余数=D。
4、将D左移4位作为指针在密码表中连续取四组值作为注册码的后4组。
最后注册码:第一组随意-指针向下第4组-指针向下第2组-指针向下第3组-指针本身
密码表:
EBP-488 0> 950B4B61
EBP-484 0> 4DC2FA41
EBP-480 0> CF637EAD
EBP-47C 0> 11B21162
EBP-478 0> 90E7EED0
EBP-474 0> 4A093005
EBP-470 0> 7250559D
EBP-46C 0> F99565FB
EBP-468 0> AA4591F2
EBP-464 0> 42A580D2
EBP-460 0> 960CABB3
EBP-45C 0> 1D53255F
EBP-458 0> 1177BA51
EBP-454 0> 4F355DDA
EBP-450 0> F06457B2
EBP-44C 0> 520DFDCA
EBP-448 0> DC7C1345
EBP-444 0> 40D47686
EBP-440 0> 88C1CDAD
EBP-43C 0> 551B9A15
EBP-438 0> E0C3DE22
EBP-434 0> 4ABEBFDB
EBP-430 0> 7689F98A
EBP-42C 0> 387952AE
EBP-428 0> 79F83686
EBP-424 0> 4F8A18B9
EBP-420 0> C22C03A0
EBP-41C 0> CBF707E3
sjcrack
12345678-EBA13FDF-583D6A21-60640FB9-82D3B4F4
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课