--------------------------------------------------------------------------------------------------------------------------------
找算法CALL很简单用F12暂停法返回就可以找到,不是本文的重点直接给算法CALL地址:00428E41 |. E8 0AFFFDFF call PowerCmd.00408D50
00408D50 /push ebp
00408D51 |. 8BEC mov ebp,esp
00408D53 |. 6A FF push -0x1
00408D55 |. 68 3BBE5E00 push PowerCmd.005EBE3B
00408D5A |. 64:A1 0000000>mov eax,dword ptr fs:[0]
00408D60 |. 50 push eax
00408D61 |. 81EC A0000000 sub esp,0xA0
00408D67 |. A1 E4906900 mov eax,dword ptr ds:[0x6990E4]
00408D6C |. 33C5 xor eax,ebp
00408D6E |. 8945 F0 mov dword ptr ss:[ebp-0x10],eax
00408D71 |. 53 push ebx
00408D72 |. 56 push esi
00408D73 |. 57 push edi
00408D74 |. 50 push eax
00408D75 |. 8D45 F4 lea eax,dword ptr ss:[ebp-0xC]
00408D78 |. 64:A3 0000000>mov dword ptr fs:[0],eax
00408D7E |. 8BF1 mov esi,ecx
00408D80 |. 837E 10 17 cmp dword ptr ds:[esi+0x10],0x17 ; 注册码的长度要求0x17=23位
00408D84 |. C685 63FFFFFF>mov byte ptr ss:[ebp-0x9D],0x0
00408D8B |. 0F85 20050000 jnz PowerCmd.004092B1
00408D91 |. 6A 00 push 0x0
00408D93 |. 6A 2D push 0x2D
00408D95 |. E8 863E0400 call PowerCmd.0044CC20 ; 注册码以“-”来分段,并计算注册码第一段的长度
00408D9A |. 6A 01 push 0x1
00408D9C |. 6A 2D push 0x2D ; 0x2D就是“-”符
00408D9E |. 8BCE mov ecx,esi ; "12345-7890a-dfghj-lqwer"
00408DA0 |. 8BF8 mov edi,eax ; EDI为注册码第一段长度
00408DA2 |. E8 793E0400 call PowerCmd.0044CC20 ; 注册码后三段及“-”字符总长度
00408DA7 |. 8BD8 mov ebx,eax
00408DA9 |. 8D47 01 lea eax,dword ptr ds:[edi+0x1]
00408DAC |. 3BD8 cmp ebx,eax ; 注册码的第一段位数最长要小于注册码总位数一半,即不能超过10位
00408DAE |. 0F8E FD040000 jle PowerCmd.004092B1
00408DB4 |. 85FF test edi,edi ; 注册码第一段长度不能为零,即注册码不能以“-”开头
00408DB6 |. 0F8E F5040000 jle PowerCmd.004092B1
00408DBC |. 8BCB mov ecx,ebx ; "12345-7890a-dfghj-lqwer"
00408DBE |. 2BCF sub ecx,edi
00408DC0 |. 49 dec ecx
00408DC1 |. 51 push ecx
00408DC2 |. 50 push eax
00408DC3 |. 8D95 64FFFFFF lea edx,dword ptr ss:[ebp-0x9C]
00408DC9 |. 52 push edx
00408DCA |. 8BCE mov ecx,esi
00408DCC |. E8 0F4C0400 call PowerCmd.0044D9E0
00408DD1 |. 6A 00 push 0x0
00408DD3 |. 6A 2D push 0x2D
00408DD5 |. 8D8D 64FFFFFF lea ecx,dword ptr ss:[ebp-0x9C] ; 从以下分析注册码每一段为5位共4段,各段间以“-”链接
00408DDB |. C745 FC 00000>mov dword ptr ss:[ebp-0x4],0x0
00408DE2 |. E8 393E0400 call PowerCmd.0044CC20 ; 计算注册码第二段的长度
00408DE7 |. 8D4438 01 lea eax,dword ptr ds:[eax+edi+0x1] ; 注册码前两段加1即上中间“-”字符入EAX
00408DEB |. 83FF 05 cmp edi,0x5 ; 第一段注册码的长度等于5
00408DEE |. 0F85 A5040000 jnz PowerCmd.00409299
00408DF4 |. 83F8 0B cmp eax,0xB ; 注册码前两段加1即上中间“-”字符等于0xB即11位,得第2段注册码为5位
00408DF7 |. 0F85 9C040000 jnz PowerCmd.00409299
00408DFD |. 83FB 11 cmp ebx,0x11 ; 注册码除最后一段外的总长度要等于0x11即17位,最后一段为5位
00408E00 |. 0F85 93040000 jnz PowerCmd.00409299
00408E06 |. 57 push edi
00408E07 |. 6A 00 push 0x0
00408E09 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
00408E0C |. 50 push eax
00408E0D |. 8BCE mov ecx,esi ; "7890a-dfghj"
00408E0F |. E8 CC4B0400 call PowerCmd.0044D9E0 ; EAX中出现注册码的第一段“12345”
00408E14 |. 57 push edi
00408E15 |. 6A 06 push 0x6
00408E17 |. 8D4D 80 lea ecx,dword ptr ss:[ebp-0x80]
00408E1A |. 51 push ecx
00408E1B |. 8BCE mov ecx,esi
00408E1D |. C645 FC 01 mov byte ptr ss:[ebp-0x4],0x1
00408E21 |. E8 BA4B0400 call PowerCmd.0044D9E0
00408E26 |. 8D53 F4 lea edx,dword ptr ds:[ebx-0xC] ; EAX中出现"7890a"
00408E29 |. 52 push edx
00408E2A |. 6A 0C push 0xC
00408E2C |. 8D45 9C lea eax,dword ptr ss:[ebp-0x64] ; (UNICODE "ekCat") 注册名的后5位
00408E2F |. 50 push eax
00408E30 |. 8BCE mov ecx,esi
00408E32 |. C645 FC 02 mov byte ptr ss:[ebp-0x4],0x2
00408E36 |. E8 A54B0400 call PowerCmd.0044D9E0
00408E3B |. C645 FC 03 mov byte ptr ss:[ebp-0x4],0x3 ; "dfghj"
00408E3F |. 8B46 10 mov eax,dword ptr ds:[esi+0x10]
00408E42 |. 2BC3 sub eax,ebx
00408E44 |. 48 dec eax
00408E45 |. 50 push eax
00408E46 |. 8D4D B8 lea ecx,dword ptr ss:[ebp-0x48] ; (UNICODE "ekCat")
00408E49 |. 51 push ecx
00408E4A |. 8BCE mov ecx,esi
00408E4C |. E8 9F4C0400 call PowerCmd.0044DAF0
00408E51 |. C645 FC 04 mov byte ptr ss:[ebp-0x4],0x4 ; EAX中出现注册最一段"lqwer"
00408E55 |. 397D E4 cmp dword ptr ss:[ebp-0x1C],edi
00408E58 |. 0F85 1B040000 jnz PowerCmd.00409279
00408E5E |. 397D 90 cmp dword ptr ss:[ebp-0x70],edi
00408E61 |. 0F85 12040000 jnz PowerCmd.00409279
00408E67 |. 397D AC cmp dword ptr ss:[ebp-0x54],edi
00408E6A |. 0F85 09040000 jnz PowerCmd.00409279
00408E70 |. 397D C8 cmp dword ptr ss:[ebp-0x38],edi
00408E73 |. 0F85 00040000 jnz PowerCmd.00409279
00408E79 |. 8D4D D4 lea ecx,dword ptr ss:[ebp-0x2C] ; (UNICODE "12345")
00408E7C |. E8 FF3C0400 call PowerCmd.0044CB80 ; 小写转大写
00408E81 |. 8D4D 80 lea ecx,dword ptr ss:[ebp-0x80] ; (UNICODE "7890a")
00408E84 |. E8 F73C0400 call PowerCmd.0044CB80
00408E89 |. 8D4D 9C lea ecx,dword ptr ss:[ebp-0x64] ; (UNICODE "dfghj")
00408E8C |. E8 EF3C0400 call PowerCmd.0044CB80
00408E91 |. 8D4D B8 lea ecx,dword ptr ss:[ebp-0x48] ; (UNICODE "lqwer")
00408E94 |. E8 E73C0400 call PowerCmd.0044CB80
00408E99 |. 33C9 xor ecx,ecx
00408E9B |. 8D45 80 lea eax,dword ptr ss:[ebp-0x80] ; (UNICODE "7890A")
00408E9E |. E8 8D410000 call PowerCmd.0040D030
00408EA3 |. 0FB730 movzx esi,word ptr ds:[eax]
00408EA6 |. 33C9 xor ecx,ecx
00408EA8 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C] ; (UNICODE "12345")
00408EAB |. E8 80410000 call PowerCmd.0040D030
00408EB0 |. 0FB738 movzx edi,word ptr ds:[eax]
00408EB3 |. 8D4B F0 lea ecx,dword ptr ds:[ebx-0x10]
00408EB6 |. 8D45 80 lea eax,dword ptr ss:[ebp-0x80]
00408EB9 |. 03FE add edi,esi ; 第一、二段的第1个字符AS值相加入EDI
00408EBB |. E8 70410000 call PowerCmd.0040D030
00408EC0 |. 0FB730 movzx esi,word ptr ds:[eax]
00408EC3 |. 8D4B F0 lea ecx,dword ptr ds:[ebx-0x10]
00408EC6 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
00408EC9 |. E8 62410000 call PowerCmd.0040D030
00408ECE |. 0FB718 movzx ebx,word ptr ds:[eax]
00408ED1 |. B9 02000000 mov ecx,0x2
00408ED6 |. 8D45 80 lea eax,dword ptr ss:[ebp-0x80]
00408ED9 |. 03DE add ebx,esi ; 第一、二段的第2个字符AS值相加入EBX
00408EDB |. E8 50410000 call PowerCmd.0040D030
00408EE0 |. 0FB730 movzx esi,word ptr ds:[eax]
00408EE3 |. B9 02000000 mov ecx,0x2
00408EE8 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
00408EEB |. E8 40410000 call PowerCmd.0040D030
00408EF0 |. 0FB700 movzx eax,word ptr ds:[eax]
00408EF3 |. 03C6 add eax,esi ; 第一、二段的第3个字符AS值相加入EAX
00408EF5 |. 8985 54FFFFFF mov dword ptr ss:[ebp-0xAC],eax ; 第一、二段的第3个字符AS值相保存在到EBP-AC中
00408EFB |. B9 03000000 mov ecx,0x3
00408F00 |. 8D45 80 lea eax,dword ptr ss:[ebp-0x80]
00408F03 |. E8 28410000 call PowerCmd.0040D030
00408F08 |. 0FB730 movzx esi,word ptr ds:[eax]
00408F0B |. B9 03000000 mov ecx,0x3
00408F10 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
00408F13 |. E8 18410000 call PowerCmd.0040D030
00408F18 |. 0FB700 movzx eax,word ptr ds:[eax]
00408F1B |. 03C6 add eax,esi ; 第一、二段的第4个字符AS值相加入EAX
00408F1D |. 8985 58FFFFFF mov dword ptr ss:[ebp-0xA8],eax ; 第一、二段的第4个字符AS值相加保存在到EBP-A8中
00408F23 |. B9 04000000 mov ecx,0x4
00408F28 |. 8D45 80 lea eax,dword ptr ss:[ebp-0x80]
00408F2B |. E8 00410000 call PowerCmd.0040D030
00408F30 |. 0FB710 movzx edx,word ptr ds:[eax] ; 第一段的第5位保存到EDX中
00408F33 |. B9 04000000 mov ecx,0x4
00408F38 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
00408F3B |. 8995 5CFFFFFF mov dword ptr ss:[ebp-0xA4],edx ; 第一段的第5位保存到EBP-A4中
00408F41 |. E8 EA400000 call PowerCmd.0040D030
00408F46 |. 0FB730 movzx esi,word ptr ds:[eax] ; 第二段的第5位保存到ESI中
00408F49 |. 03B5 5CFFFFFF add esi,dword ptr ss:[ebp-0xA4] ; 第一、二段的第5个字符AS值相加入ESI中
00408F4F |. 33C9 xor ecx,ecx
00408F51 |. 03B5 58FFFFFF add esi,dword ptr ss:[ebp-0xA8] ; 第一、二段的第4、5位4个字符AS值相加入ESI中
00408F57 |. 8D45 B8 lea eax,dword ptr ss:[ebp-0x48] ; 第四段注册转换成大写后入EAX
00408F5A |. 03B5 54FFFFFF add esi,dword ptr ss:[ebp-0xAC] ; 第一、二段的第3、4、5位6个字符AS值相加入ESI中
00408F60 |. 03F3 add esi,ebx ; 第一、二段的第2、3、4、5位8个字符AS值相加入ESI中
00408F62 |. 03F7 add esi,edi ; 第一、二段的第1、2、3、4、5位10个字符AS值相加入ESI中
00408F64 |. E8 C7400000 call PowerCmd.0040D030
00408F69 |. 0FB718 movzx ebx,word ptr ds:[eax] ; 第四段的第1位字符AS值入EBX
00408F6C |. 33C9 xor ecx,ecx ; 计数器
00408F6E |. 8D45 9C lea eax,dword ptr ss:[ebp-0x64] ; (UNICODE "DFGHJ")
00408F71 |. E8 BA400000 call PowerCmd.0040D030
00408F76 |. 0FB738 movzx edi,word ptr ds:[eax] ; 第三段的第1位字符AS值
00408F79 |. B9 01000000 mov ecx,0x1
00408F7E |. 8D45 B8 lea eax,dword ptr ss:[ebp-0x48]
00408F81 |. 03FB add edi,ebx ; 第四、三段的第1个字符AS值相加入EDI
00408F83 |. E8 A8400000 call PowerCmd.0040D030
00408F88 |. 0FB700 movzx eax,word ptr ds:[eax] ; 第四段的第2位字符AS值入EAX
00408F8B |. 8985 5CFFFFFF mov dword ptr ss:[ebp-0xA4],eax ; 第四段的第2位字符AS值入ebp-0xA4
00408F91 |. B9 01000000 mov ecx,0x1
00408F96 |. 8D45 9C lea eax,dword ptr ss:[ebp-0x64]
00408F99 |. E8 92400000 call PowerCmd.0040D030
00408F9E |. 0FB718 movzx ebx,word ptr ds:[eax] ; 第三段的第2位字符AS值入EBX
00408FA1 |. 039D 5CFFFFFF add ebx,dword ptr ss:[ebp-0xA4] ; 第四、三段的第2个字符AS值相加入EBX
00408FA7 |. B9 02000000 mov ecx,0x2
00408FAC |. 8D45 B8 lea eax,dword ptr ss:[ebp-0x48]
00408FAF |. E8 7C400000 call PowerCmd.0040D030
00408FB4 |. 0FB708 movzx ecx,word ptr ds:[eax]
00408FB7 |. 898D 5CFFFFFF mov dword ptr ss:[ebp-0xA4],ecx
00408FBD |. B9 02000000 mov ecx,0x2
00408FC2 |. 8D45 9C lea eax,dword ptr ss:[ebp-0x64]
00408FC5 |. E8 66400000 call PowerCmd.0040D030
00408FCA |. 0FB700 movzx eax,word ptr ds:[eax]
00408FCD |. 0385 5CFFFFFF add eax,dword ptr ss:[ebp-0xA4] ; 第四、三段的第3个字符AS值相加入EAX
00408FD3 |. B9 03000000 mov ecx,0x3
00408FD8 |. 8985 54FFFFFF mov dword ptr ss:[ebp-0xAC],eax ; 第四、三段的第3个字符AS值相加入ebp-0xAC
00408FDE |. 8D45 B8 lea eax,dword ptr ss:[ebp-0x48]
00408FE1 |. E8 4A400000 call PowerCmd.0040D030
00408FE6 |. 0FB710 movzx edx,word ptr ds:[eax]
00408FE9 |. B9 03000000 mov ecx,0x3
00408FEE |. 8D45 9C lea eax,dword ptr ss:[ebp-0x64]
00408FF1 |. 8995 5CFFFFFF mov dword ptr ss:[ebp-0xA4],edx
00408FF7 |. E8 34400000 call PowerCmd.0040D030
00408FFC |. 0FB700 movzx eax,word ptr ds:[eax]
00408FFF |. 0385 5CFFFFFF add eax,dword ptr ss:[ebp-0xA4] ; 第四、三段的第4个字符AS值相加入EAX
00409005 |. B9 04000000 mov ecx,0x4
0040900A |. 8985 58FFFFFF mov dword ptr ss:[ebp-0xA8],eax ; 第四、三段的第4个字符AS值相加入ebp-0xA8
00409010 |. 8D45 B8 lea eax,dword ptr ss:[ebp-0x48]
00409013 |. E8 18400000 call PowerCmd.0040D030
00409018 |. 0FB700 movzx eax,word ptr ds:[eax]
0040901B |. 8985 5CFFFFFF mov dword ptr ss:[ebp-0xA4],eax
00409021 |. B9 04000000 mov ecx,0x4
00409026 |. 8D45 9C lea eax,dword ptr ss:[ebp-0x64]
00409029 |. E8 02400000 call PowerCmd.0040D030
0040902E |. 0FB708 movzx ecx,word ptr ds:[eax]
00409031 |. 038D 5CFFFFFF add ecx,dword ptr ss:[ebp-0xA4] ; 第四、三段的第5个字符AS值相加入ECX
00409037 |. 038D 58FFFFFF add ecx,dword ptr ss:[ebp-0xA8] ; 第四、三段的第4、5位4字符AS值相加入ECX
0040903D |. 038D 54FFFFFF add ecx,dword ptr ss:[ebp-0xAC] ; 第四、三段的第3、4、5位6字符AS值相加入ECX
00409043 |. 03CB add ecx,ebx ; 第四、三段的第2、3、4、5位8字符AS值相加入ECX
00409045 |. 03CF add ecx,edi ; 第四、三段的第1、2、3、4、5位10字符AS值相加入ECX
00409047 |. 3BF1 cmp esi,ecx ; 关键比较 第一、二段注册码各字符AS相加和要等于第三、四段注册码各字符AS相加和
00409049 |. 75 07 jnz short PowerCmd.00409052 ; 不能跳
0040904B |. C685 63FFFFFF>mov byte ptr ss:[ebp-0x9D],0x1 ; 标志位
00409052 |> 33C9 xor ecx,ecx
00409054 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C] ; 第一段注册码入EAX=“12345”
00409057 |. E8 D43F0000 call PowerCmd.0040D030
0040905C |. 66:8338 50 cmp word ptr ds:[eax],0x50 ; 第一段注册码的第1位AS值跟50比较“P”
00409060 |. 75 13 jnz short PowerCmd.00409075
00409062 |. B9 01000000 mov ecx,0x1
00409067 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
0040906A |. E8 C13F0000 call PowerCmd.0040D030
0040906F |. 66:8338 43 cmp word ptr ds:[eax],0x43 ; 第一段注册码的第2位AS值跟43比较“C”
00409073 |. 74 07 je short PowerCmd.0040907C
00409075 |> C685 63FFFFFF>mov byte ptr ss:[ebp-0x9D],0x0
0040907C |> 33C9 xor ecx,ecx
0040907E |. 8D45 9C lea eax,dword ptr ss:[ebp-0x64] ; 第三段注册码入EAX=“DFGHJ”
00409081 |. E8 AA3F0000 call PowerCmd.0040D030
00409086 |. 0FB730 movzx esi,word ptr ds:[eax] ; 第三段注册的第1位AS值入ESI
00409089 |. 33C9 xor ecx,ecx
0040908B |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C] ; 第一段注册码入EAX=“12345”
0040908E |. E8 9D3F0000 call PowerCmd.0040D030
00409093 |. 0FB738 movzx edi,word ptr ds:[eax] ; 第一段注册码的第1位AS值入EDI
00409096 |. B9 01000000 mov ecx,0x1
0040909B |. 8D45 9C lea eax,dword ptr ss:[ebp-0x64]
0040909E |. 03FE add edi,esi ; 第一、三段注册码的第1位AS值相加入EDI
004090A0 |. E8 8B3F0000 call PowerCmd.0040D030
004090A5 |. 0FB730 movzx esi,word ptr ds:[eax] ; 第三段注册的第2位AS值入EDI
004090A8 |. B9 01000000 mov ecx,0x1
004090AD |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
004090B0 |. E8 7B3F0000 call PowerCmd.0040D030
004090B5 |. 0FB718 movzx ebx,word ptr ds:[eax] ; 第一段注册码的第2位AS值入EBX
004090B8 |. B9 02000000 mov ecx,0x2
004090BD |. 8D45 9C lea eax,dword ptr ss:[ebp-0x64]
004090C0 |. 03DE add ebx,esi ; 第一、三段注册码的第2位AS值相加入EBX
004090C2 |. E8 693F0000 call PowerCmd.0040D030
004090C7 |. 0FB730 movzx esi,word ptr ds:[eax] ; 第三段注册的第3位AS值入ESI
004090CA |. B9 02000000 mov ecx,0x2
004090CF |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
004090D2 |. E8 593F0000 call PowerCmd.0040D030
004090D7 |. 0FB700 movzx eax,word ptr ds:[eax] ; 第一段注册码的第3位AS值入EAX
004090DA |. 03C6 add eax,esi ; 第一、三段注册码的第3位AS值相加入EAX
004090DC |. 8985 54FFFFFF mov dword ptr ss:[ebp-0xAC],eax ; 第一、三段注册码的第3位AS值相加和入ebp-0xAC
004090E2 |. B9 03000000 mov ecx,0x3
004090E7 |. 8D45 9C lea eax,dword ptr ss:[ebp-0x64]
004090EA |. E8 413F0000 call PowerCmd.0040D030
004090EF |. 0FB730 movzx esi,word ptr ds:[eax] ; 第三段注册的第4位AS值入ESI
004090F2 |. B9 03000000 mov ecx,0x3
004090F7 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
004090FA |. E8 313F0000 call PowerCmd.0040D030
004090FF |. 0FB700 movzx eax,word ptr ds:[eax] ; 第一段注册码的第4位AS值入EAX
00409102 |. 03C6 add eax,esi ; 第一、三段注册码的第4位AS值相加入EAX
00409104 |. 8985 58FFFFFF mov dword ptr ss:[ebp-0xA8],eax ; 第一、三段注册码的第4位AS值相加和入ebp-0xA8
0040910A |. B9 04000000 mov ecx,0x4
0040910F |. 8D45 9C lea eax,dword ptr ss:[ebp-0x64]
00409112 |. E8 193F0000 call PowerCmd.0040D030
00409117 |. 0FB710 movzx edx,word ptr ds:[eax] ; 第三段注册的第5位AS值入EDX
0040911A |. B9 04000000 mov ecx,0x4
0040911F |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
00409122 |. 8995 5CFFFFFF mov dword ptr ss:[ebp-0xA4],edx ; 第三段注册的第5位AS值入ebp-0xA4
00409128 |. E8 033F0000 call PowerCmd.0040D030
0040912D |. 0FB730 movzx esi,word ptr ds:[eax] ; 第一段注册码的第5位AS值入ESI
00409130 |. 03B5 5CFFFFFF add esi,dword ptr ss:[ebp-0xA4] ; 第一、三段注册码的第5位AS值相加和入ESI
00409136 |. 33C9 xor ecx,ecx
00409138 |. 03B5 58FFFFFF add esi,dword ptr ss:[ebp-0xA8] ; 第一、三段注册码的第4、5位的4个字符AS值相加和入ESI
0040913E |. 8D45 B8 lea eax,dword ptr ss:[ebp-0x48]
00409141 |. 03B5 54FFFFFF add esi,dword ptr ss:[ebp-0xAC] ; 第一、三段注册码的第3、4、5位的6个字符AS值相加和入ESI
00409147 |. 03F3 add esi,ebx ; 第一、三段注册码的第2、3、4、5位的8个字符AS值相加和入ESI
00409149 |. 03F7 add esi,edi ; 第一、三段注册码的第1、2、3、4、5位的10个字符AS值相加和入ESI
0040914B |. E8 E03E0000 call PowerCmd.0040D030
00409150 |. 0FB718 movzx ebx,word ptr ds:[eax] ; 第四段注册码的第1位AS值入EBX
00409153 |. 33C9 xor ecx,ecx
00409155 |. 8D45 80 lea eax,dword ptr ss:[ebp-0x80]
00409158 |. E8 D33E0000 call PowerCmd.0040D030
0040915D |. 0FB738 movzx edi,word ptr ds:[eax] ; 第二段注册码的第1位AS值入EDI
00409160 |. B9 01000000 mov ecx,0x1
00409165 |. 8D45 B8 lea eax,dword ptr ss:[ebp-0x48]
00409168 |. 03FB add edi,ebx ; 第二、四段注册码的第1位的2个字符AS值相加和入EDI
0040916A |. E8 C13E0000 call PowerCmd.0040D030
0040916F |. 0FB700 movzx eax,word ptr ds:[eax] ; 第四段注册码的第2位AS值入EAX
00409172 |. 8985 5CFFFFFF mov dword ptr ss:[ebp-0xA4],eax ; 第四段注册码的第2位AS值入ebp-0xA4
00409178 |. B9 01000000 mov ecx,0x1
0040917D |. 8D45 80 lea eax,dword ptr ss:[ebp-0x80]
00409180 |. E8 AB3E0000 call PowerCmd.0040D030
00409185 |. 0FB718 movzx ebx,word ptr ds:[eax] ; 第二段注册码的第2位AS值入EBX
00409188 |. 039D 5CFFFFFF add ebx,dword ptr ss:[ebp-0xA4] ; 第二、四段注册码的第2位的2个字符AS值相加和入EBX
0040918E |. B9 02000000 mov ecx,0x2
00409193 |. 8D45 B8 lea eax,dword ptr ss:[ebp-0x48]
00409196 |. E8 953E0000 call PowerCmd.0040D030
0040919B |. 0FB708 movzx ecx,word ptr ds:[eax] ; 第四段注册码的第3位AS值入ECX
0040919E |. 898D 5CFFFFFF mov dword ptr ss:[ebp-0xA4],ecx ; 第四段注册码的第3位AS值入ebp-0xA4
004091A4 |. B9 02000000 mov ecx,0x2
004091A9 |. 8D45 80 lea eax,dword ptr ss:[ebp-0x80]
004091AC |. E8 7F3E0000 call PowerCmd.0040D030
004091B1 |. 0FB700 movzx eax,word ptr ds:[eax] ; 第二段注册码的第3位AS值入EAX
004091B4 |. 0385 5CFFFFFF add eax,dword ptr ss:[ebp-0xA4] ; 第二、四段注册码的第3位的2个字符AS值相加和入EAX
004091BA |. 8985 54FFFFFF mov dword ptr ss:[ebp-0xAC],eax ; 第二、四段注册码的第3位的2个字符AS值相加和入ebp-0xAC
004091C0 |. B9 03000000 mov ecx,0x3
004091C5 |. 8D45 B8 lea eax,dword ptr ss:[ebp-0x48]
004091C8 |. E8 633E0000 call PowerCmd.0040D030
004091CD |. 0FB710 movzx edx,word ptr ds:[eax] ; 第四段注册码的第4位AS值入EDX
004091D0 |. B9 03000000 mov ecx,0x3
004091D5 |. 8D45 80 lea eax,dword ptr ss:[ebp-0x80]
004091D8 |. 8995 5CFFFFFF mov dword ptr ss:[ebp-0xA4],edx ; 第四段注册码的第4位AS值入ebp-0xA4
004091DE |. E8 4D3E0000 call PowerCmd.0040D030
004091E3 |. 0FB700 movzx eax,word ptr ds:[eax] ; 第二段注册码的第4位AS值入EAX
004091E6 |. 0385 5CFFFFFF add eax,dword ptr ss:[ebp-0xA4] ; 第二、四段注册码的第4位的2个字符AS值相加和入EAX
004091EC |. B9 04000000 mov ecx,0x4
004091F1 |. 8985 58FFFFFF mov dword ptr ss:[ebp-0xA8],eax ; 第二、四段注册码的第4位的2个字符AS值相加和入ebp-0xA8
004091F7 |. 8D45 B8 lea eax,dword ptr ss:[ebp-0x48]
004091FA |. E8 313E0000 call PowerCmd.0040D030
004091FF |. 0FB700 movzx eax,word ptr ds:[eax] ; 第四段注册码的第5位AS值入EAX
00409202 |. 8985 5CFFFFFF mov dword ptr ss:[ebp-0xA4],eax ; 第四段注册码的第5位AS值入ebp-0xA4
00409208 |. B9 04000000 mov ecx,0x4
0040920D |. 8D45 80 lea eax,dword ptr ss:[ebp-0x80]
00409210 |. E8 1B3E0000 call PowerCmd.0040D030
00409215 |. 0FB708 movzx ecx,word ptr ds:[eax] ; 第二段注册码的第5位AS值入ECX
00409218 |. 038D 5CFFFFFF add ecx,dword ptr ss:[ebp-0xA4] ; 第二、四段注册码的第5位的2个字符AS值相加和入ECX
0040921E |. 038D 58FFFFFF add ecx,dword ptr ss:[ebp-0xA8] ; 第二、四段注册码的第4、5位的4个字符AS值相加和入ECX
00409224 |. 038D 54FFFFFF add ecx,dword ptr ss:[ebp-0xAC] ; 第二、四段注册码的第3、4、5位的6个字符AS值相加和入ECX
0040922A |. 03CB add ecx,ebx ; 第二、四段注册码的第2、3、4、5位的8个字符AS值相加和入ECX
0040922C |. 03CF add ecx,edi ; 第二、四段注册码的第1、2、3、4、5位的10个字符AS值相加和入ECX
0040922E |. 3BF1 cmp esi,ecx ; 第一、三段注册码各字符AS值相加和大于或等于第二、四段注册码的各字符AS值相加和
00409230 |. 7D 07 jge short PowerCmd.00409239
00409232 |. C685 63FFFFFF>mov byte ptr ss:[ebp-0x9D],0x0
00409239 |> B9 02000000 mov ecx,0x2
0040923E |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C] ; (UNICODE "1C345")
00409241 |. E8 EA3D0000 call PowerCmd.0040D030
00409246 |. 66:8338 4D cmp word ptr ds:[eax],0x4D ; 第一段第3位等于0x4D="M"
0040924A |. 75 26 jnz short PowerCmd.00409272
0040924C |. B9 03000000 mov ecx,0x3
00409251 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
00409254 |. E8 D73D0000 call PowerCmd.0040D030
00409259 |. 66:8338 44 cmp word ptr ds:[eax],0x44 ; 第一段第4位等于0x44="D"
0040925D |. 75 13 jnz short PowerCmd.00409272
0040925F |. B9 04000000 mov ecx,0x4
00409264 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
00409267 |. E8 C43D0000 call PowerCmd.0040D030
0040926C |. 66:8338 41 cmp word ptr ds:[eax],0x41 ; 第一段第5位等于0x41="A"
00409270 |. 74 07 je short PowerCmd.00409279
00409272 |> C685 63FFFFFF>mov byte ptr ss:[ebp-0x9D],0x0
00409279 |> 8D4D B8 lea ecx,dword ptr ss:[ebp-0x48] ; (UNICODE "LQWER")
0040927C |. E8 EFC40E00 call PowerCmd.004F5770
00409281 |. 8D4D 9C lea ecx,dword ptr ss:[ebp-0x64] ; (UNICODE "DFGHJ")
00409284 |. E8 E7C40E00 call PowerCmd.004F5770
00409289 |. 8D4D 80 lea ecx,dword ptr ss:[ebp-0x80] ; (UNICODE "7890A")
0040928C |. E8 DFC40E00 call PowerCmd.004F5770
00409291 |. 8D4D D4 lea ecx,dword ptr ss:[ebp-0x2C] ; (UNICODE "12345")
00409294 |. E8 D7C40E00 call PowerCmd.004F5770
00409299 |> 83BD 78FFFFFF>cmp dword ptr ss:[ebp-0x88],0x8 ;
004092A0 |. 72 0F jb short PowerCmd.004092B1
004092A2 |. 8B95 64FFFFFF mov edx,dword ptr ss:[ebp-0x9C] ; (UNICODE "7890a-dfghj")
004092A8 |. 52 push edx
004092A9 |. E8 D37B0300 call PowerCmd.00440E81 ;
004092AE |. 83C4 04 add esp,0x4
004092B1 |> 8A85 63FFFFFF mov al,byte ptr ss:[ebp-0x9D]
004092B7 |. A2 1C166D00 mov byte ptr ds:[0x6D161C],al
004092BC |. 8B4D F4 mov ecx,dword ptr ss:[ebp-0xC]
004092BF |. 64:890D 00000>mov dword ptr fs:[0],ecx
004092C6 |. 59 pop ecx
004092C7 |. 5F pop edi
004092C8 |. 5E pop esi
004092C9 |. 5B pop ebx
004092CA |. 8B4D F0 mov ecx,dword ptr ss:[ebp-0x10]
004092CD |. 33CD xor ecx,ebp
004092CF |. E8 9E7B0300 call PowerCmd.00440E72
004092D4 |. 8BE5 mov esp,ebp
004092D6 |. 5D pop ebp
004092D7 \. C3 retn
归纳总:
1、注册长为23位分成4段,每段5位且段之前用“-”分开;
2、如果注册中有字母就把字母转化成大写;设注册码为A-B-C-D,以下表示A1表示第1段的第1位,其它同理;
3、第一、二段每一位注册码的ASCII值相加和设为AB;
4、第三、四段每一位注册码的ASCII值相加和设为CD;
5、要求AB与CD相等;
6、A1="P"、A2="C";
7、第一、三段每一位注册码的ASCII值相加和设为AC;
8、第二、四段每一位注册码的ASCII值相加和设为BD;
9、要求AC大于等于BD;
10、A3="M"、A4="D"、A5="A";
构建注册码:
1、00000-00000-00000-00000;
2、PCMDA-00000-00000-00000;通过以上第6、10得到A段注册码;
3、PCMDA-00000-PCMDA-00000;通第以上第5;
4、PCMDA-PCMDA-PCMDA-PCMDA;通过以上第9;因为第9条要求是大于或等于,这个注册码可是多个;
最简单注册码:PCMDA-PCMDA-PCMDA-PCMDA,
注册码跟用户名无关
----------------------------------------------------------------------------------------------------------------------------
【版权声明】:
本文原创于GeekCat,转载请注明作者并保存文章的完整!
————————————————————————————————————————————————————————————————
请各位大神指教分析不当处~~~~~~!!!