PowerCmd V2.2 算法分析
【文章标题】:PowerCmd V2.2 算法分析【文章作者】: geekcat【作者邮箱】: [email protected]
【作者主页】:
【软件名称】:PowerCmd V2.2 【软件大小】:2.22 MB (2,335,791 字节)
【加壳方式】: 无
【保护方式】: 注册码
【编写语言】: Microsoft Visual C++ v.10 - 2010 ( E8 )
【使用工具】: OD、ExeinfoPE
【操作平台】: XP SP3【下载地址】:http://www.powercmd.com/【破解声明】:破解在于交流思路和过程,结果并不重要,请不要用于非法用途;
【软件介绍】:PowerCmd是一款增强版本的CMD工具,具有Windows操作风格,能帮您快速组织命令提示行窗口。CMD是Windows平台下的DOS命令行环境,这个程序为CMD提供了图形化的工作界面。可以比普通CMD工具提供更多选项。!--------------------------------------------------------------------------------------------------------------------------------软件算法没什么难度,就是罗嗦代码有点长;找算法CALL很简单用F12暂停法返回就可以找到,不是本文的重点直接给算法CALL地址:00428E41|.E8 0AFFFDFF call PowerCmd.00408D50
分析时所用假码:12345-7890a-dfghj-lqwer
算法代码:00408D50/push ebp00408D51|.8BEC mov ebp,esp00408D53|.6A FF push -0x100408D55|.68 3BBE5E00 push PowerCmd.005EBE3B00408D5A|.64:A1 0000000>mov eax,dword ptr fs:00408D60|.50 push eax00408D61|.81EC A0000000 sub esp,0xA000408D67|.A1 E4906900 mov eax,dword ptr ds:00408D6C|.33C5 xor eax,ebp00408D6E|.8945 F0 mov dword ptr ss:,eax00408D71|.53 push ebx00408D72|.56 push esi00408D73|.57 push edi00408D74|.50 push eax00408D75|.8D45 F4 lea eax,dword ptr ss:00408D78|.64:A3 0000000>mov dword ptr fs:,eax00408D7E|.8BF1 mov esi,ecx00408D80|.837E 10 17 cmp dword ptr ds:,0x17 ;注册码的长度要求0x17=23位00408D84|.C685 63FFFFFF>mov byte ptr ss:,0x000408D8B|.0F85 20050000 jnz PowerCmd.004092B100408D91|.6A 00 push 0x000408D93|.6A 2D push 0x2D 00408D95|.E8 863E0400 call PowerCmd.0044CC20 ;注册码以“-”来分段,并计算注册码第一段的长度00408D9A|.6A 01 push 0x100408D9C|.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,eax00408DA9|.8D47 01 lea eax,dword ptr ds:00408DAC|.3BD8 cmp ebx,eax ;注册码的第一段位数最长要小于注册码总位数一半,即不能超过10位00408DAE|.0F8E FD040000 jle PowerCmd.004092B100408DB4|.85FF test edi,edi ;注册码第一段长度不能为零,即注册码不能以“-”开头00408DB6|.0F8E F5040000 jle PowerCmd.004092B100408DBC|.8BCB mov ecx,ebx ;"12345-7890a-dfghj-lqwer"00408DBE|.2BCF sub ecx,edi00408DC0|.49 dec ecx00408DC1|.51 push ecx00408DC2|.50 push eax00408DC3|.8D95 64FFFFFF lea edx,dword ptr ss:00408DC9|.52 push edx00408DCA|.8BCE mov ecx,esi00408DCC|.E8 0F4C0400 call PowerCmd.0044D9E000408DD1|.6A 00 push 0x000408DD3|.6A 2D push 0x2D 00408DD5|.8D8D 64FFFFFF lea ecx,dword ptr ss: ;从以下分析注册码每一段为5位共4段,各段间以“-”链接00408DDB|.C745 FC 00000>mov dword ptr ss:,0x000408DE2|.E8 393E0400 call PowerCmd.0044CC20 ;计算注册码第二段的长度00408DE7|.8D4438 01 lea eax,dword ptr ds: ;注册码前两段加1即上中间“-”字符入EAX00408DEB|.83FF 05 cmp edi,0x5 ;第一段注册码的长度等于500408DEE|.0F85 A5040000 jnz PowerCmd.0040929900408DF4|.83F8 0B cmp eax,0xB ;注册码前两段加1即上中间“-”字符等于0xB即11位,得第2段注册码为5位00408DF7|.0F85 9C040000 jnz PowerCmd.0040929900408DFD|.83FB 11 cmp ebx,0x11 ;注册码除最后一段外的总长度要等于0x11即17位,最后一段为5位00408E00|.0F85 93040000 jnz PowerCmd.0040929900408E06|.57 push edi00408E07|.6A 00 push 0x000408E09|.8D45 D4 lea eax,dword ptr ss:00408E0C|.50 push eax00408E0D|.8BCE mov ecx,esi ;"7890a-dfghj"00408E0F|.E8 CC4B0400 call PowerCmd.0044D9E0 ;EAX中出现注册码的第一段“12345”00408E14|.57 push edi00408E15|.6A 06 push 0x600408E17|.8D4D 80 lea ecx,dword ptr ss:00408E1A|.51 push ecx00408E1B|.8BCE mov ecx,esi00408E1D|.C645 FC 01 mov byte ptr ss:,0x100408E21|.E8 BA4B0400 call PowerCmd.0044D9E000408E26|.8D53 F4 lea edx,dword ptr ds: ;EAX中出现"7890a"00408E29|.52 push edx00408E2A|.6A 0C push 0xC00408E2C|.8D45 9C lea eax,dword ptr ss: ;(UNICODE "ekCat") 注册名的后5位00408E2F|.50 push eax00408E30|.8BCE mov ecx,esi00408E32|.C645 FC 02 mov byte ptr ss:,0x200408E36|.E8 A54B0400 call PowerCmd.0044D9E000408E3B|.C645 FC 03 mov byte ptr ss:,0x3 ;"dfghj"00408E3F|.8B46 10 mov eax,dword ptr ds:00408E42|.2BC3 sub eax,ebx00408E44|.48 dec eax00408E45|.50 push eax00408E46|.8D4D B8 lea ecx,dword ptr ss: ;(UNICODE "ekCat")00408E49|.51 push ecx00408E4A|.8BCE mov ecx,esi00408E4C|.E8 9F4C0400 call PowerCmd.0044DAF000408E51|.C645 FC 04 mov byte ptr ss:,0x4 ;EAX中出现注册最一段"lqwer"00408E55|.397D E4 cmp dword ptr ss:,edi00408E58|.0F85 1B040000 jnz PowerCmd.0040927900408E5E|.397D 90 cmp dword ptr ss:,edi00408E61|.0F85 12040000 jnz PowerCmd.0040927900408E67|.397D AC cmp dword ptr ss:,edi00408E6A|.0F85 09040000 jnz PowerCmd.0040927900408E70|.397D C8 cmp dword ptr ss:,edi00408E73|.0F85 00040000 jnz PowerCmd.0040927900408E79|.8D4D D4 lea ecx,dword ptr ss: ;(UNICODE "12345")00408E7C|.E8 FF3C0400 call PowerCmd.0044CB80 ;小写转大写00408E81|.8D4D 80 lea ecx,dword ptr ss: ;(UNICODE "7890a")00408E84|.E8 F73C0400 call PowerCmd.0044CB8000408E89|.8D4D 9C lea ecx,dword ptr ss: ;(UNICODE "dfghj")00408E8C|.E8 EF3C0400 call PowerCmd.0044CB8000408E91|.8D4D B8 lea ecx,dword ptr ss: ;(UNICODE "lqwer")00408E94|.E8 E73C0400 call PowerCmd.0044CB8000408E99|.33C9 xor ecx,ecx00408E9B|.8D45 80 lea eax,dword ptr ss: ;(UNICODE "7890A")00408E9E|.E8 8D410000 call PowerCmd.0040D03000408EA3|.0FB730 movzx esi,word ptr ds:00408EA6|.33C9 xor ecx,ecx00408EA8|.8D45 D4 lea eax,dword ptr ss: ;(UNICODE "12345")00408EAB|.E8 80410000 call PowerCmd.0040D03000408EB0|.0FB738 movzx edi,word ptr ds:00408EB3|.8D4B F0 lea ecx,dword ptr ds:00408EB6|.8D45 80 lea eax,dword ptr ss:00408EB9|.03FE add edi,esi ;第一、二段的第1个字符AS值相加入EDI00408EBB|.E8 70410000 call PowerCmd.0040D03000408EC0|.0FB730 movzx esi,word ptr ds:00408EC3|.8D4B F0 lea ecx,dword ptr ds:00408EC6|.8D45 D4 lea eax,dword ptr ss:00408EC9|.E8 62410000 call PowerCmd.0040D03000408ECE|.0FB718 movzx ebx,word ptr ds:00408ED1|.B9 02000000 mov ecx,0x200408ED6|.8D45 80 lea eax,dword ptr ss:00408ED9|.03DE add ebx,esi ;第一、二段的第2个字符AS值相加入EBX00408EDB|.E8 50410000 call PowerCmd.0040D03000408EE0|.0FB730 movzx esi,word ptr ds:00408EE3|.B9 02000000 mov ecx,0x200408EE8|.8D45 D4 lea eax,dword ptr ss:00408EEB|.E8 40410000 call PowerCmd.0040D03000408EF0|.0FB700 movzx eax,word ptr ds:00408EF3|.03C6 add eax,esi ;第一、二段的第3个字符AS值相加入EAX00408EF5|.8985 54FFFFFF mov dword ptr ss:,eax ;第一、二段的第3个字符AS值相保存在到EBP-AC中00408EFB|.B9 03000000 mov ecx,0x300408F00|.8D45 80 lea eax,dword ptr ss:00408F03|.E8 28410000 call PowerCmd.0040D03000408F08|.0FB730 movzx esi,word ptr ds:00408F0B|.B9 03000000 mov ecx,0x300408F10|.8D45 D4 lea eax,dword ptr ss:00408F13|.E8 18410000 call PowerCmd.0040D03000408F18|.0FB700 movzx eax,word ptr ds:00408F1B|.03C6 add eax,esi ;第一、二段的第4个字符AS值相加入EAX00408F1D|.8985 58FFFFFF mov dword ptr ss:,eax ;第一、二段的第4个字符AS值相加保存在到EBP-A8中00408F23|.B9 04000000 mov ecx,0x400408F28|.8D45 80 lea eax,dword ptr ss:00408F2B|.E8 00410000 call PowerCmd.0040D03000408F30|.0FB710 movzx edx,word ptr ds: ;第一段的第5位保存到EDX中00408F33|.B9 04000000 mov ecx,0x400408F38|.8D45 D4 lea eax,dword ptr ss:00408F3B|.8995 5CFFFFFF mov dword ptr ss:,edx ;第一段的第5位保存到EBP-A4中00408F41|.E8 EA400000 call PowerCmd.0040D03000408F46|.0FB730 movzx esi,word ptr ds: ;第二段的第5位保存到ESI中00408F49|.03B5 5CFFFFFF add esi,dword ptr ss: ;第一、二段的第5个字符AS值相加入ESI中00408F4F|.33C9 xor ecx,ecx00408F51|.03B5 58FFFFFF add esi,dword ptr ss: ;第一、二段的第4、5位4个字符AS值相加入ESI中00408F57|.8D45 B8 lea eax,dword ptr ss: ;第四段注册转换成大写后入EAX00408F5A|.03B5 54FFFFFF add esi,dword ptr ss: ;第一、二段的第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.0040D03000408F69|.0FB718 movzx ebx,word ptr ds: ;第四段的第1位字符AS值入EBX00408F6C|.33C9 xor ecx,ecx ;计数器00408F6E|.8D45 9C lea eax,dword ptr ss: ;(UNICODE "DFGHJ")00408F71|.E8 BA400000 call PowerCmd.0040D03000408F76|.0FB738 movzx edi,word ptr ds: ;第三段的第1位字符AS值00408F79|.B9 01000000 mov ecx,0x100408F7E|.8D45 B8 lea eax,dword ptr ss:00408F81|.03FB add edi,ebx ;第四、三段的第1个字符AS值相加入EDI00408F83|.E8 A8400000 call PowerCmd.0040D03000408F88|.0FB700 movzx eax,word ptr ds: ;第四段的第2位字符AS值入EAX00408F8B|.8985 5CFFFFFF mov dword ptr ss:,eax ;第四段的第2位字符AS值入ebp-0xA400408F91|.B9 01000000 mov ecx,0x100408F96|.8D45 9C lea eax,dword ptr ss:00408F99|.E8 92400000 call PowerCmd.0040D03000408F9E|.0FB718 movzx ebx,word ptr ds: ;第三段的第2位字符AS值入EBX00408FA1|.039D 5CFFFFFF add ebx,dword ptr ss: ;第四、三段的第2个字符AS值相加入EBX00408FA7|.B9 02000000 mov ecx,0x200408FAC|.8D45 B8 lea eax,dword ptr ss:00408FAF|.E8 7C400000 call PowerCmd.0040D03000408FB4|.0FB708 movzx ecx,word ptr ds:00408FB7|.898D 5CFFFFFF mov dword ptr ss:,ecx00408FBD|.B9 02000000 mov ecx,0x200408FC2|.8D45 9C lea eax,dword ptr ss:00408FC5|.E8 66400000 call PowerCmd.0040D03000408FCA|.0FB700 movzx eax,word ptr ds:00408FCD|.0385 5CFFFFFF add eax,dword ptr ss: ;第四、三段的第3个字符AS值相加入EAX00408FD3|.B9 03000000 mov ecx,0x300408FD8|.8985 54FFFFFF mov dword ptr ss:,eax ;第四、三段的第3个字符AS值相加入ebp-0xAC00408FDE|.8D45 B8 lea eax,dword ptr ss:00408FE1|.E8 4A400000 call PowerCmd.0040D03000408FE6|.0FB710 movzx edx,word ptr ds:00408FE9|.B9 03000000 mov ecx,0x300408FEE|.8D45 9C lea eax,dword ptr ss:00408FF1|.8995 5CFFFFFF mov dword ptr ss:,edx00408FF7|.E8 34400000 call PowerCmd.0040D03000408FFC|.0FB700 movzx eax,word ptr ds:00408FFF|.0385 5CFFFFFF add eax,dword ptr ss: ;第四、三段的第4个字符AS值相加入EAX00409005|.B9 04000000 mov ecx,0x40040900A|.8985 58FFFFFF mov dword ptr ss:,eax ;第四、三段的第4个字符AS值相加入ebp-0xA800409010|.8D45 B8 lea eax,dword ptr ss:00409013|.E8 18400000 call PowerCmd.0040D03000409018|.0FB700 movzx eax,word ptr ds:0040901B|.8985 5CFFFFFF mov dword ptr ss:,eax00409021|.B9 04000000 mov ecx,0x400409026|.8D45 9C lea eax,dword ptr ss:00409029|.E8 02400000 call PowerCmd.0040D0300040902E|.0FB708 movzx ecx,word ptr ds:00409031|.038D 5CFFFFFF add ecx,dword ptr ss: ;第四、三段的第5个字符AS值相加入ECX00409037|.038D 58FFFFFF add ecx,dword ptr ss: ;第四、三段的第4、5位4字符AS值相加入ECX0040903D|.038D 54FFFFFF add ecx,dword ptr ss: ;第四、三段的第3、4、5位6字符AS值相加入ECX00409043|.03CB add ecx,ebx ;第四、三段的第2、3、4、5位8字符AS值相加入ECX00409045|.03CF add ecx,edi ;第四、三段的第1、2、3、4、5位10字符AS值相加入ECX00409047|.3BF1 cmp esi,ecx ;关键比较 第一、二段注册码各字符AS相加和要等于第三、四段注册码各字符AS相加和00409049|.75 07 jnz short PowerCmd.00409052 ;不能跳0040904B|.C685 63FFFFFF>mov byte ptr ss:,0x1 ;标志位00409052|>33C9 xor ecx,ecx00409054|.8D45 D4 lea eax,dword ptr ss: ;第一段注册码入EAX=“12345”00409057|.E8 D43F0000 call PowerCmd.0040D0300040905C|.66:8338 50 cmp word ptr ds:,0x50 ;第一段注册码的第1位AS值跟50比较“P”00409060|.75 13 jnz short PowerCmd.0040907500409062|.B9 01000000 mov ecx,0x100409067|.8D45 D4 lea eax,dword ptr ss:0040906A|.E8 C13F0000 call PowerCmd.0040D0300040906F|.66:8338 43 cmp word ptr ds:,0x43 ;第一段注册码的第2位AS值跟43比较“C”00409073|.74 07 je short PowerCmd.0040907C00409075|>C685 63FFFFFF>mov byte ptr ss:,0x00040907C|>33C9 xor ecx,ecx0040907E|.8D45 9C lea eax,dword ptr ss: ;第三段注册码入EAX=“DFGHJ”00409081|.E8 AA3F0000 call PowerCmd.0040D03000409086|.0FB730 movzx esi,word ptr ds: ;第三段注册的第1位AS值入ESI00409089|.33C9 xor ecx,ecx0040908B|.8D45 D4 lea eax,dword ptr ss: ;第一段注册码入EAX=“12345”0040908E|.E8 9D3F0000 call PowerCmd.0040D03000409093|.0FB738 movzx edi,word ptr ds: ;第一段注册码的第1位AS值入EDI00409096|.B9 01000000 mov ecx,0x10040909B|.8D45 9C lea eax,dword ptr ss:0040909E|.03FE add edi,esi ;第一、三段注册码的第1位AS值相加入EDI004090A0|.E8 8B3F0000 call PowerCmd.0040D030004090A5|.0FB730 movzx esi,word ptr ds: ;第三段注册的第2位AS值入EDI004090A8|.B9 01000000 mov ecx,0x1004090AD|.8D45 D4 lea eax,dword ptr ss:004090B0|.E8 7B3F0000 call PowerCmd.0040D030004090B5|.0FB718 movzx ebx,word ptr ds: ;第一段注册码的第2位AS值入EBX004090B8|.B9 02000000 mov ecx,0x2004090BD|.8D45 9C lea eax,dword ptr ss:004090C0|.03DE add ebx,esi ;第一、三段注册码的第2位AS值相加入EBX004090C2|.E8 693F0000 call PowerCmd.0040D030004090C7|.0FB730 movzx esi,word ptr ds: ;第三段注册的第3位AS值入ESI004090CA|.B9 02000000 mov ecx,0x2004090CF|.8D45 D4 lea eax,dword ptr ss:004090D2|.E8 593F0000 call PowerCmd.0040D030004090D7|.0FB700 movzx eax,word ptr ds: ;第一段注册码的第3位AS值入EAX004090DA|.03C6 add eax,esi ;第一、三段注册码的第3位AS值相加入EAX004090DC|.8985 54FFFFFF mov dword ptr ss:,eax ;第一、三段注册码的第3位AS值相加和入ebp-0xAC004090E2|.B9 03000000 mov ecx,0x3004090E7|.8D45 9C lea eax,dword ptr ss:004090EA|.E8 413F0000 call PowerCmd.0040D030004090EF|.0FB730 movzx esi,word ptr ds: ;第三段注册的第4位AS值入ESI004090F2|.B9 03000000 mov ecx,0x3004090F7|.8D45 D4 lea eax,dword ptr ss:004090FA|.E8 313F0000 call PowerCmd.0040D030004090FF|.0FB700 movzx eax,word ptr ds: ;第一段注册码的第4位AS值入EAX00409102|.03C6 add eax,esi ;第一、三段注册码的第4位AS值相加入EAX00409104|.8985 58FFFFFF mov dword ptr ss:,eax ;第一、三段注册码的第4位AS值相加和入ebp-0xA80040910A|.B9 04000000 mov ecx,0x40040910F|.8D45 9C lea eax,dword ptr ss:00409112|.E8 193F0000 call PowerCmd.0040D03000409117|.0FB710 movzx edx,word ptr ds: ;第三段注册的第5位AS值入EDX0040911A|.B9 04000000 mov ecx,0x40040911F|.8D45 D4 lea eax,dword ptr ss:00409122|.8995 5CFFFFFF mov dword ptr ss:,edx ;第三段注册的第5位AS值入ebp-0xA400409128|.E8 033F0000 call PowerCmd.0040D0300040912D|.0FB730 movzx esi,word ptr ds: ;第一段注册码的第5位AS值入ESI00409130|.03B5 5CFFFFFF add esi,dword ptr ss: ;第一、三段注册码的第5位AS值相加和入ESI00409136|.33C9 xor ecx,ecx00409138|.03B5 58FFFFFF add esi,dword ptr ss: ;第一、三段注册码的第4、5位的4个字符AS值相加和入ESI0040913E|.8D45 B8 lea eax,dword ptr ss:00409141|.03B5 54FFFFFF add esi,dword ptr ss: ;第一、三段注册码的第3、4、5位的6个字符AS值相加和入ESI00409147|.03F3 add esi,ebx ;第一、三段注册码的第2、3、4、5位的8个字符AS值相加和入ESI00409149|.03F7 add esi,edi ;第一、三段注册码的第1、2、3、4、5位的10个字符AS值相加和入ESI0040914B|.E8 E03E0000 call PowerCmd.0040D03000409150|.0FB718 movzx ebx,word ptr ds: ;第四段注册码的第1位AS值入EBX00409153|.33C9 xor ecx,ecx00409155|.8D45 80 lea eax,dword ptr ss:00409158|.E8 D33E0000 call PowerCmd.0040D0300040915D|.0FB738 movzx edi,word ptr ds: ;第二段注册码的第1位AS值入EDI00409160|.B9 01000000 mov ecx,0x100409165|.8D45 B8 lea eax,dword ptr ss:00409168|.03FB add edi,ebx ;第二、四段注册码的第1位的2个字符AS值相加和入EDI0040916A|.E8 C13E0000 call PowerCmd.0040D0300040916F|.0FB700 movzx eax,word ptr ds: ;第四段注册码的第2位AS值入EAX00409172|.8985 5CFFFFFF mov dword ptr ss:,eax ;第四段注册码的第2位AS值入ebp-0xA400409178|.B9 01000000 mov ecx,0x10040917D|.8D45 80 lea eax,dword ptr ss:00409180|.E8 AB3E0000 call PowerCmd.0040D03000409185|.0FB718 movzx ebx,word ptr ds: ;第二段注册码的第2位AS值入EBX00409188|.039D 5CFFFFFF add ebx,dword ptr ss: ;第二、四段注册码的第2位的2个字符AS值相加和入EBX0040918E|.B9 02000000 mov ecx,0x200409193|.8D45 B8 lea eax,dword ptr ss:00409196|.E8 953E0000 call PowerCmd.0040D0300040919B|.0FB708 movzx ecx,word ptr ds: ;第四段注册码的第3位AS值入ECX0040919E|.898D 5CFFFFFF mov dword ptr ss:,ecx ;第四段注册码的第3位AS值入ebp-0xA4004091A4|.B9 02000000 mov ecx,0x2004091A9|.8D45 80 lea eax,dword ptr ss:004091AC|.E8 7F3E0000 call PowerCmd.0040D030004091B1|.0FB700 movzx eax,word ptr ds: ;第二段注册码的第3位AS值入EAX004091B4|.0385 5CFFFFFF add eax,dword ptr ss: ;第二、四段注册码的第3位的2个字符AS值相加和入EAX004091BA|.8985 54FFFFFF mov dword ptr ss:,eax ;第二、四段注册码的第3位的2个字符AS值相加和入ebp-0xAC004091C0|.B9 03000000 mov ecx,0x3004091C5|.8D45 B8 lea eax,dword ptr ss:004091C8|.E8 633E0000 call PowerCmd.0040D030004091CD|.0FB710 movzx edx,word ptr ds: ;第四段注册码的第4位AS值入EDX004091D0|.B9 03000000 mov ecx,0x3004091D5|.8D45 80 lea eax,dword ptr ss:004091D8|.8995 5CFFFFFF mov dword ptr ss:,edx ;第四段注册码的第4位AS值入ebp-0xA4004091DE|.E8 4D3E0000 call PowerCmd.0040D030004091E3|.0FB700 movzx eax,word ptr ds: ;第二段注册码的第4位AS值入EAX004091E6|.0385 5CFFFFFF add eax,dword ptr ss: ;第二、四段注册码的第4位的2个字符AS值相加和入EAX004091EC|.B9 04000000 mov ecx,0x4004091F1|.8985 58FFFFFF mov dword ptr ss:,eax ;第二、四段注册码的第4位的2个字符AS值相加和入ebp-0xA8004091F7|.8D45 B8 lea eax,dword ptr ss:004091FA|.E8 313E0000 call PowerCmd.0040D030004091FF|.0FB700 movzx eax,word ptr ds: ;第四段注册码的第5位AS值入EAX00409202|.8985 5CFFFFFF mov dword ptr ss:,eax ;第四段注册码的第5位AS值入ebp-0xA400409208|.B9 04000000 mov ecx,0x40040920D|.8D45 80 lea eax,dword ptr ss:00409210|.E8 1B3E0000 call PowerCmd.0040D03000409215|.0FB708 movzx ecx,word ptr ds: ;第二段注册码的第5位AS值入ECX00409218|.038D 5CFFFFFF add ecx,dword ptr ss: ;第二、四段注册码的第5位的2个字符AS值相加和入ECX0040921E|.038D 58FFFFFF add ecx,dword ptr ss: ;第二、四段注册码的第4、5位的4个字符AS值相加和入ECX00409224|.038D 54FFFFFF add ecx,dword ptr ss: ;第二、四段注册码的第3、4、5位的6个字符AS值相加和入ECX0040922A|.03CB add ecx,ebx ;第二、四段注册码的第2、3、4、5位的8个字符AS值相加和入ECX0040922C|.03CF add ecx,edi ;第二、四段注册码的第1、2、3、4、5位的10个字符AS值相加和入ECX0040922E|.3BF1 cmp esi,ecx ;第一、三段注册码各字符AS值相加和大于或等于第二、四段注册码的各字符AS值相加和00409230|.7D 07 jge short PowerCmd.0040923900409232|.C685 63FFFFFF>mov byte ptr ss:,0x000409239|>B9 02000000 mov ecx,0x20040923E|.8D45 D4 lea eax,dword ptr ss: ;(UNICODE "1C345")00409241|.E8 EA3D0000 call PowerCmd.0040D03000409246|.66:8338 4D cmp word ptr ds:,0x4D ;第一段第3位等于0x4D="M"0040924A|.75 26 jnz short PowerCmd.004092720040924C|.B9 03000000 mov ecx,0x300409251|.8D45 D4 lea eax,dword ptr ss:00409254|.E8 D73D0000 call PowerCmd.0040D03000409259|.66:8338 44 cmp word ptr ds:,0x44 ;第一段第4位等于0x44="D"0040925D|.75 13 jnz short PowerCmd.004092720040925F|.B9 04000000 mov ecx,0x400409264|.8D45 D4 lea eax,dword ptr ss:00409267|.E8 C43D0000 call PowerCmd.0040D0300040926C|.66:8338 41 cmp word ptr ds:,0x41 ;第一段第5位等于0x41="A"00409270|.74 07 je short PowerCmd.0040927900409272|>C685 63FFFFFF>mov byte ptr ss:,0x000409279|>8D4D B8 lea ecx,dword ptr ss: ;(UNICODE "LQWER")0040927C|.E8 EFC40E00 call PowerCmd.004F577000409281|.8D4D 9C lea ecx,dword ptr ss: ;(UNICODE "DFGHJ")00409284|.E8 E7C40E00 call PowerCmd.004F577000409289|.8D4D 80 lea ecx,dword ptr ss: ;(UNICODE "7890A")0040928C|.E8 DFC40E00 call PowerCmd.004F577000409291|.8D4D D4 lea ecx,dword ptr ss: ;(UNICODE "12345")00409294|.E8 D7C40E00 call PowerCmd.004F577000409299|>83BD 78FFFFFF>cmp dword ptr ss:,0x8 ;004092A0|.72 0F jb short PowerCmd.004092B1004092A2|.8B95 64FFFFFF mov edx,dword ptr ss: ;(UNICODE "7890a-dfghj")004092A8|.52 push edx004092A9|.E8 D37B0300 call PowerCmd.00440E81 ;004092AE|.83C4 04 add esp,0x4004092B1|>8A85 63FFFFFF mov al,byte ptr ss:004092B7|.A2 1C166D00 mov byte ptr ds:,al004092BC|.8B4D F4 mov ecx,dword ptr ss:004092BF|.64:890D 00000>mov dword ptr fs:,ecx004092C6|.59 pop ecx004092C7|.5F pop edi004092C8|.5E pop esi004092C9|.5B pop ebx004092CA|.8B4D F0 mov ecx,dword ptr ss:004092CD|.33CD xor ecx,ebp004092CF|.E8 9E7B0300 call PowerCmd.00440E72004092D4|.8BE5 mov esp,ebp004092D6|.5D pop ebp004092D7\.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,转载请注明作者并保存文章的完整!————————————————————————————————————————————————————————————————请各位大神指教分析不当处~~~~~~!!! 学习一下了,感谢分享
感谢楼主分享! 赞
看上去好长好长啊
{:soso_e101:} 谢谢咯。这篇算法文章不错。构造注册码的方式 还可以这样玩? Dxer 发表于 2015-5-7 13:32
谢谢咯。这篇算法文章不错。构造注册码的方式 还可以这样玩?
小菜!最笨的方法搞~~
膜拜会算法的大牛,学习中 学习啦,小菜成长中。
页:
[1]