TA的每日心情 | 开心 2015-8-23 23:49 |
---|
签到天数: 27 天 [LV.4]偶尔看看III
|
本帖最后由 GGLHY 于 2011-2-20 01:16 编辑
快速看算法之钢琴***的注册解码分析实录
在病房里陪护实在无聊,看到这个软件顺便弄了下它的算法。比较简单,就贴出来了。
之所以说快速看算法,呵呵,是因为略去了一些不是很重要的CALL,毕竟那些CALL连看带猜都**不离十。也算是偷了点懒吧。
本文如有错误,敬请指正!
现在进入正文:
在软件目录下,看到这个文件musicreg.exe。运行下,确实是注册的
硬件ID:WD-WCAT11223415
好,OD载入,我们F9,输入注册假码15987530
我们直接来到:
00481D55 |. 837D EC 00 cmp dword ptr [ebp-14], >; 判断是否输入了注册码
00481D59 |. 75 0F jnz short 00481D6A
00481D5B |. B8 601E4800 mov eax, 00481E60
00481D60 |. E8 BB74FAFF call 00429220
00481D65 |. E9 AA000000 jmp 00481E14
00481D6A |> 8B55 F8 mov edx, [ebp-8] ; 假码15987530
00481D6D |. 8B45 FC mov eax, [ebp-4] ; 硬件ID:WD-WCAT11223415
00481D70 |. E8 FFF8FFFF call 00481674 ; 寻宝之旅,我们F7
00481D75 |. 84C0 test al, al ; 标志位判断!
00481D77 |. 0F84 8D000000 je 00481E0A ; 关键跳
00481D7D |. E8 3EF8FFFF call 004815C0 ; 写注册信息到注册表
00481D82 |. 84C0 test al, al ; 是否写入成功!
00481D84 |. 74 78 je short 00481DFE ; 注册发生无法预测的错误!
00481D70 这里 call 00481674处的寻宝之旅,我们F7进入:
00481674 /$ 55 push ebp 本地调用来自 0048152A(重起验证), 00481D70(注册)
00481675 |. 8BEC mov ebp, esp
00481677 |. B9 0A000000 mov ecx, 0A
0048167C |> 6A 00 /push 0
0048167E |. 6A 00 |push 0
00481680 |. 49 |dec ecx
00481681 |.^ 75 F9 \jnz short 0048167C
00481683 |. 53 push ebx
00481684 |. 56 push esi
00481685 |. 57 push edi
00481686 |. 8955 F8 mov [ebp-8], edx ; 假码15987530
00481689 |. 8945 FC mov [ebp-4], eax ; 硬件ID:WD-WCAT11223415
0048168C |. 8B45 FC mov eax, [ebp-4]
0048168F |. E8 C42DF8FF call 00404458
00481694 |. 8B45 F8 mov eax, [ebp-8] ; 假码15987530
00481697 |. E8 BC2DF8FF call 00404458
0048169C |. 33C0 xor eax, eax
0048169E |. 55 push ebp
0048169F |. 68 591A4800 push 00481A59
004816A4 |. 64:FF30 push dword ptr fs:[eax]
004816A7 |. 64:8920 mov fs:[eax], esp
004816AA |. 33DB xor ebx, ebx
004816AC |. 8D45 F4 lea eax, [ebp-C]
004816AF |. 8B55 FC mov edx, [ebp-4] ; 硬件ID:WD-WCAT11223415
004816B2 |. E8 8929F8FF call 00404040
004816B7 |. 8B45 F4 mov eax, [ebp-C]
004816BA |. E8 A92BF8FF call 00404268
004816BF |. 8BF0 mov esi, eax ; 硬件ID的长度
004816C1 |. 85F6 test esi, esi
004816C3 |. 7E 33 jle short 004816F8
004816C5 |. BF 01000000 mov edi, 1 ; EDI=1
004816CA |> 8D45 E0 /lea eax, [ebp-20]
004816CD |. 50 |push eax
004816CE |. B9 01000000 |mov ecx, 1
004816D3 |. 8BD7 |mov edx, edi
004816D5 |. 8B45 F4 |mov eax, [ebp-C] ; 硬件ID:WD-WCAT11223415
004816D8 |. E8 EB2DF8FF |call 004044C8
004816DD |. 8B45 E0 |mov eax, [ebp-20]
004816E0 |. E8 832DF8FF |call 00404468
004816E5 |. 8A00 |mov al, [eax] ; 依次取硬件ID每一位ASC
004816E7 |. 25 FF000000 |and eax, 0FF
004816EC |. 03D8 |add ebx, eax ; 累加(EBX初始为0)
004816EE |. 81C3 04040000 |add ebx, 404 ; 再+404
004816F4 |. 47 |inc edi
004816F5 |. 4E |dec esi
004816F6 |.^ 75 D2 \jnz short 004816CA
004816F8 |> D1EB shr ebx, 1 ; 累加的结果 / 2
004816FA |. 81F3 DA870C00 xor ebx, 0C87DA ; 商 XOR常数0C87DA
00481700 |. 03DB add ebx, ebx ; 和 * 2
00481702 81CB 94850C00 or ebx, 0C8594 ; 积 OR 常数0C8594
00481708 |. D1EB shr ebx, 1 ; 结果 / 2
0048170A |. 81C3 BA040000 add ebx, 4BA ; 商 + 4BA
00481710 |. 81F3 E0E00800 xor ebx, 8E0E0 ; 和 XOR 常数8E0E0
00481716 |. 8D55 F0 lea edx, [ebp-10] ; 本例得到的结果EBX=63F55,设为S1
00481719 |. 8BC3 mov eax, ebx ; S1
0048171B |. E8 B469F8FF call 004080D4 ; f7!
00481720 |. 8B45 F0 mov eax, [ebp-10] ; S2
00481723 |. 33DB xor ebx, ebx
00481725 |. 8A58 05 mov bl, [eax+5] ; S2的第6位ASC
00481728 |. 8BC3 mov eax, ebx
0048172A |. 8B55 F0 mov edx, [ebp-10] ; S2
0048172D |. 33C9 xor ecx, ecx
0048172F |. 8A4A 02 mov cl, [edx+2] ; S2的第3位ASC
00481732 |. 03C1 add eax, ecx ; 二者相加
00481734 |. 03C3 add eax, ebx ; 和 + S2的第6位ASC
00481736 |. BE 05000000 mov esi, 5 ; ESI=5
0048173B |. 99 cdq
0048173C |. F7FE idiv esi ; /5
0048173E |. 80C2 61 add dl, 61 ; 余数 + 61
00481741 |. 8855 E6 mov [ebp-1A], dl ; 其和(及其对应的字符)保存到[EBP-1A]
00481744 |. 8B45 F0 mov eax, [ebp-10] ; S2
00481747 |. 0FB670 01 movzx esi, byte ptr [eax+1>; S2的第2位
0048174B |. 8BC6 mov eax, esi
0048174D |. 03C6 add eax, esi ; * 2
0048174F |. BF 05000000 mov edi, 5 ; EDI=5
00481754 |. 99 cdq
00481755 |. F7FF idiv edi ; / 5
00481757 |. 80C2 61 add dl, 61 ; 余数 + 61
0048175A |. 8855 E7 mov [ebp-19], dl ; 其和(及其对应的字符)保存到[EBP-19]
0048175D |. 8BC3 mov eax, ebx ; S2的第6位ASC
0048175F |. 8B55 F0 mov edx, [ebp-10] ; S2
00481762 |. 0FB63A movzx edi, byte ptr [edx] ; S2的第1位ASC
00481765 |. 03C7 add eax, edi ; S2的第1位 + 第6位
00481767 |. 51 push ecx
00481768 |. B9 05000000 mov ecx, 5
0048176D |. 99 cdq
0048176E |. F7F9 idiv ecx ; / 5
00481770 |. 59 pop ecx
00481771 |. 80C2 61 add dl, 61 ; 余数 + 61
00481774 |. 8855 E8 mov [ebp-18], dl ; 其和(及其对应的字符)保存到[EBP-18]
00481777 |. 8BC7 mov eax, edi ; S2的第1位ASC
00481779 |. 8B55 F0 mov edx, [ebp-10]
0048177C |. 0FB652 04 movzx edx, byte ptr [edx+4>; S2的第5位ASC
00481780 |. 03C2 add eax, edx ; S2的第1位ASC + 第5位ASC
00481782 |. 03C1 add eax, ecx ; 再 + 第3位
00481784 |. 51 push ecx
00481785 |. B9 05000000 mov ecx, 5
0048178A |. 99 cdq
0048178B |. F7F9 idiv ecx ; / 5
0048178D |. 59 pop ecx ; S2第3位
0048178E |. 80C2 61 add dl, 61 ; 余数 + 61
00481791 |. 8855 E9 mov [ebp-17], dl ; 其和(及其对应的字符)保存到[EBP-17]
00481794 |. 8BC1 mov eax, ecx ; S2第3位
00481796 |. 03C3 add eax, ebx ; S2第3位 + S2第6位
00481798 |. 51 push ecx
00481799 |. B9 05000000 mov ecx, 5
0048179E |. 99 cdq
0048179F |. F7F9 idiv ecx ; / 5
004817A1 |. 59 pop ecx ; S2第3位
004817A2 |. 80C2 61 add dl, 61 ; 余数 + 61
004817A5 |. 8855 EA mov [ebp-16], dl ; 其和(及其对应的字符)保存到[EBP-16]
004817A8 |. 8BC1 mov eax, ecx ; S2第3位
004817AA |. 03C6 add eax, esi ; S2第2位?
004817AC |. 8B55 F0 mov edx, [ebp-10]
004817AF |. 0FB652 05 movzx edx, byte ptr [edx+5>; S2第6位
004817B3 |. 03C2 add eax, edx ; 再加S2第6位
004817B5 |. 51 push ecx
004817B6 |. B9 05000000 mov ecx, 5
004817BB |. 99 cdq
004817BC |. F7F9 idiv ecx ; / 5
004817BE |. 59 pop ecx
004817BF |. 80C2 61 add dl, 61 ; 余数 + 61
004817C2 |. 8855 EB mov [ebp-15], dl ; 其和(及其对应的字符)保存到[EBP-15]
004817C5 |. 8BC1 mov eax, ecx ; S2第3位
004817C7 |. 8B55 F0 mov edx, [ebp-10]
004817CA |. 0FB652 04 movzx edx, byte ptr [edx+4>; S2第5位
004817CE |. 03C2 add eax, edx ; S2第3位 + S2第5位
004817D0 |. 51 push ecx
004817D1 |. B9 05000000 mov ecx, 5
004817D6 |. 99 cdq
004817D7 |. F7F9 idiv ecx ; /5
004817D9 |. 59 pop ecx
004817DA |. 80C2 61 add dl, 61 ; 余数 + 61
004817DD |. 8855 EC mov [ebp-14], dl ; 其和(及其对应的字符)保存到[EBP-14]
004817E0 |. 8BC7 mov eax, edi ; S2第1位
004817E2 |. 03C7 add eax, edi ; *2
004817E4 |. 8B55 F0 mov edx, [ebp-10]
004817E7 |. 0FB652 02 movzx edx, byte ptr [edx+2>; S2第3位
004817EB |. 03C2 add eax, edx ; 再加S2第3位
004817ED |. BF 05000000 mov edi, 5
004817F2 |. 99 cdq
004817F3 |. F7FF idiv edi ; /5
004817F5 |. 80C2 61 add dl, 61 ; 余数 + 61
004817F8 |. 8855 ED mov [ebp-13], dl ; 其和(及其对应的字符)保存到[EBP-13]
004817FB |. 8BC6 mov eax, esi ; S2第2位
004817FD |. 03C1 add eax, ecx ; + 第3位
004817FF |. B9 05000000 mov ecx, 5
00481804 |. 99 cdq
00481805 |. F7F9 idiv ecx ; /5
00481807 |. 80C2 61 add dl, 61 ; 余数 + 61
0048180A |. 8855 EE mov [ebp-12], dl ; 其和(及其对应的字符)保存到[EBP-12]
0048180D |. 8B45 F0 mov eax, [ebp-10]
00481810 |. 0FB640 04 movzx eax, byte ptr [eax+4>; 第5位
00481814 |. 03C3 add eax, ebx ; +第6位
00481816 |. 8B55 F0 mov edx, [ebp-10]
00481819 |. 0FB612 movzx edx, byte ptr [edx] ; 第1位
0048181C |. 03C2 add eax, edx ; 再加第1位
0048181E |. B9 05000000 mov ecx, 5
00481823 |. 99 cdq
00481824 |. F7F9 idiv ecx ; /5
00481826 |. 80C2 61 add dl, 61 ; 余数 + 61
00481829 |. 8855 EF mov [ebp-11], dl ; 其和(及其对应的字符)保存到[EBP-11]
0048182C |. 8D45 DC lea eax, [ebp-24]
0048182F |. 8A55 ED mov dl, [ebp-13] ; Q8[本例为62("b")]
00481832 |. E8 5929F8FF call 00404190
00481837 |. 8B45 DC mov eax, [ebp-24] ; [EBP-24]=62
0048183A |. 8D55 F0 lea edx, [ebp-10] ; S2
0048183D |. B9 01000000 mov ecx, 1 ; 注意ECX=1,放到S2的第一位!开始变形了!
00481842 |. E8 092DF8FF call 00404550
00481847 |. 8D45 D8 lea eax, [ebp-28]
0048184A |. 8A55 EB mov dl, [ebp-15] ; Q6
0048184D |. E8 3E29F8FF call 00404190
00481852 |. 8B45 D8 mov eax, [ebp-28]
00481855 |. 8D55 F0 lea edx, [ebp-10] ; 对S2开始变形中.....
00481858 |. B9 02000000 mov ecx, 2 ; 放到变形中的第2位
0048185D |. E8 EE2CF8FF call 00404550
00481862 |. 8D45 D4 lea eax, [ebp-2C]
00481865 |. 8A55 EF mov dl, [ebp-11] ; Q10
00481868 |. E8 2329F8FF call 00404190
0048186D |. 8B45 D4 mov eax, [ebp-2C]
00481870 |. 8D55 F0 lea edx, [ebp-10] ; S2继续变形中的字符串,下同
00481873 |. B9 04000000 mov ecx, 4 ; 放到变形中的第4位
00481878 |. E8 D32CF8FF call 00404550
0048187D |. 8D45 D0 lea eax, [ebp-30]
00481880 |. 8A55 E9 mov dl, [ebp-17] ; Q4
00481883 |. E8 0829F8FF call 00404190
00481888 |. 8B45 D0 mov eax, [ebp-30] ; Q4
0048188B |. 8D55 F0 lea edx, [ebp-10]
0048188E |. B9 06000000 mov ecx, 6 ; 放到变形中的第6位
00481893 |. E8 B82CF8FF call 00404550
00481898 |. 8D45 CC lea eax, [ebp-34]
0048189B |. 8A55 E7 mov dl, [ebp-19] ; Q2
0048189E |. E8 ED28F8FF call 00404190
004818A3 |. 8B45 CC mov eax, [ebp-34] ; Q2
004818A6 |. 8D55 F0 lea edx, [ebp-10]
004818A9 |. B9 07000000 mov ecx, 7 ; 放到变形中的第7位
004818AE |. E8 9D2CF8FF call 00404550
004818B3 |. 8D45 C8 lea eax, [ebp-38]
004818B6 |. 8A55 EA mov dl, [ebp-16] ; Q5
004818B9 |. E8 D228F8FF call 00404190
004818BE |. 8B45 C8 mov eax, [ebp-38] ; Q5
004818C1 |. 8D55 F0 lea edx, [ebp-10]
004818C4 |. B9 09000000 mov ecx, 9 ; 放到变形中的第9位
004818C9 |. E8 822CF8FF call 00404550
004818CE |. 8D45 C4 lea eax, [ebp-3C]
004818D1 |. 8A55 E6 mov dl, [ebp-1A] ; Q1
004818D4 |. E8 B728F8FF call 00404190
004818D9 |. 8B45 C4 mov eax, [ebp-3C]
004818DC |. 8D55 F0 lea edx, [ebp-10]
004818DF |. B9 0A000000 mov ecx, 0A ; 放到变形中的第10位
004818E4 |. E8 672CF8FF call 00404550
004818E9 |. 8D45 C0 lea eax, [ebp-40]
004818EC |. 8A55 E8 mov dl, [ebp-18] ; Q3
004818EF |. E8 9C28F8FF call 00404190
004818F4 |. 8B45 C0 mov eax, [ebp-40]
004818F7 |. 8D55 F0 lea edx, [ebp-10]
004818FA |. B9 0C000000 mov ecx, 0C ; 放到变形中的第12位
004818FF |. E8 4C2CF8FF call 00404550
00481904 |. 8D45 BC lea eax, [ebp-44]
00481907 |. 8A55 EE mov dl, [ebp-12] ; Q9
0048190A |. E8 8128F8FF call 00404190
0048190F |. 8B45 BC mov eax, [ebp-44] ; Q9
00481912 |. 8D55 F0 lea edx, [ebp-10]
00481915 |. B9 0D000000 mov ecx, 0D ; 放到变形中的第13位
0048191A |. E8 312CF8FF call 00404550
0048191F |. 8D45 B8 lea eax, [ebp-48]
00481922 |. 8A55 EC mov dl, [ebp-14] ; Q7
00481925 |. E8 6628F8FF call 00404190
0048192A |. 8B45 B8 mov eax, [ebp-48]
0048192D |. 8D55 F0 lea edx, [ebp-10]
00481930 |. B9 0F000000 mov ecx, 0F ; 放到变形中的第15位
00481935 |. E8 162CF8FF call 00404550
0048193A |. 8D55 F0 lea edx, [ebp-10]
0048193D |. B9 08000000 mov ecx, 8 ; 注意这里参数=8
00481942 |. B8 741A4800 mov eax, 00481A74 ; 这个地址00481A74对应字符"S"
00481947 |. E8 042CF8FF call 00404550
0048194C |. 8D55 F0 lea edx, [ebp-10] ; 变形中的第8位为"S"
0048194F |. B9 07000000 mov ecx, 7 ; 这里参数为7
00481954 |. B8 801A4800 mov eax, 00481A80 ; 这个地址00481A80对应字符"X"
00481959 |. E8 F22BF8FF call 00404550
0048195E |. 8D55 F0 lea edx, [ebp-10] ; 变形中的第7位为"X"
00481961 |. B9 02000000 mov ecx, 2
00481966 |. B8 8C1A4800 mov eax, 00481A8C ; 这个地址00481A8C对应字符"5"
0048196B |. E8 E02BF8FF call 00404550
00481970 |. 8D55 F0 lea edx, [ebp-10] ; 变形中的第2位为"5"
00481973 |. B9 0C000000 mov ecx, 0C ; 第12位
00481978 |. B8 741A4800 mov eax, 00481A74 ; 这个地址00481A74对应字符"S"
0048197D |. E8 CE2BF8FF call 00404550
00481982 |. 8D55 F0 lea edx, [ebp-10] ; 变形中的第12位为"S"
00481985 |. B9 06000000 mov ecx, 6 ; 第6位
0048198A |. B8 981A4800 mov eax, 00481A98 ; 这个地址00481A98对应字符"B"
0048198F |. E8 BC2BF8FF call 00404550
00481994 |. 8D55 F0 lea edx, [ebp-10] ; 变形中的第6位为"B"
00481997 |. B9 05000000 mov ecx, 5 ; 第5位
0048199C |. B8 A41A4800 mov eax, 00481AA4 ; 这个地址00481AA4对应字符"-"
004819A1 |. E8 AA2BF8FF call 00404550
004819A6 |. 8D55 F0 lea edx, [ebp-10] ; 变形中的第5位为"-"
004819A9 |. B9 0A000000 mov ecx, 0A ; 第10位
004819AE |. B8 A41A4800 mov eax, 00481AA4 ; "-"
004819B3 |. E8 982BF8FF call 00404550
004819B8 |. 8D55 F0 lea edx, [ebp-10] ; 变形中的第10位为"-"
004819BB |. B9 0F000000 mov ecx, 0F ; 第15位
004819C0 |. B8 A41A4800 mov eax, 00481AA4 ; "-"
004819C5 |. E8 862BF8FF call 00404550
004819CA |. 8D55 F0 lea edx, [ebp-10] ; 变形中的第15位为"-"
004819CD |. B9 12000000 mov ecx, 12 ; 第18位
004819D2 |. B8 A41A4800 mov eax, 00481AA4 ; "-"
004819D7 |. E8 742BF8FF call 00404550
004819DC |. 8D55 F0 lea edx, [ebp-10] ; 变形中的第18位为"-"
004819DF |. B9 14000000 mov ecx, 14 ; 第20位
004819E4 |. B8 A41A4800 mov eax, 00481AA4 ; "-"
004819E9 |. E8 622BF8FF call 00404550
004819EE |. 8D55 B4 lea edx, [ebp-4C]
004819F1 |. 8B45 F0 mov eax, [ebp-10] ; 变形中的第20位为"-"
004819F4 |. E8 CB64F8FF call 00407EC4
004819F9 |. 8B55 B4 mov edx, [ebp-4C] ; 转换成大写
004819FC |. 8B45 F8 mov eax, [ebp-8] ; 假码
004819FF |. E8 B029F8FF call 004043B4 ; 真假注册码的比较
00481A04 |. 75 29 jnz short 00481A2F ; 关键跳
00481A06 |. B3 01 mov bl, 1 ; 不跳这里BL会置1,跳则EBX会清零
00481A08 |. B8 E45C4800 mov eax, 00485CE4
00481A0D |. 8B55 F4 mov edx, [ebp-C]
00481A10 |. E8 E725F8FF call 00403FFC
00481A15 |. 8D55 B0 lea edx, [ebp-50]
00481A18 |. 8B45 F0 mov eax, [ebp-10]
00481A1B |. E8 A464F8FF call 00407EC4
00481A20 |. 8B55 B0 mov edx, [ebp-50]
00481A23 |. B8 E85C4800 mov eax, 00485CE8
00481A28 |. E8 CF25F8FF call 00403FFC
00481A2D |. EB 02 jmp short 00481A31
00481A2F |> 33DB xor ebx, ebx
00481A31 |> 33C0 xor eax, eax
00481A33 |. 5A pop edx
00481A34 |. 59 pop ecx
00481A35 |. 59 pop ecx
00481A36 |. 64:8910 mov fs:[eax], edx
00481A39 |. 68 601A4800 push 00481A60
00481A3E |> 8D45 B0 lea eax, [ebp-50]
00481A41 |. BA 0D000000 mov edx, 0D
00481A46 |. E8 8125F8FF call 00403FCC
00481A4B |. 8D45 F0 lea eax, [ebp-10]
00481A4E |. BA 04000000 mov edx, 4
00481A53 |. E8 7425F8FF call 00403FCC
00481A58 \. C3 retn
00481A59 .^ E9 4E1FF8FF jmp 004039AC
00481A5E .^ EB DE jmp short 00481A3E
00481A60 . 8BC3 mov eax, ebx
00481A62 . 5F pop edi
00481A63 . 5E pop esi
00481A64 . 5B pop ebx
00481A65 . 8BE5 mov esp, ebp
00481A67 . 5D pop ebp
00481A68 . C3 retn
0048171B 处的call 004080D4
我们F7后:
004080D4 /$ 56 push esi
004080D5 |. 89E6 mov esi, esp
004080D7 |. 83EC 10 sub esp, 10
004080DA |. 31C9 xor ecx, ecx
004080DC |. 52 push edx
004080DD |. 31D2 xor edx, edx
004080DF |. E8 A4FFFFFF call 00408088 ;继续F7
004080E4 |. 89F2 mov edx, esi ; S2
004080E6 |. 58 pop eax
004080E7 |. E8 ACBFFFFF call 00404098
004080EC |. 83C4 10 add esp, 10
004080EF |. 5E pop esi
004080F0 \. C3 retn
004080DF的call 00408088、
我们继续F7:
00408088 /$ 08C9 or cl, cl
0040808A |. 75 17 jnz short 004080A3
0040808C |. 09C0 or eax, eax ; S1
0040808E |. 79 0E jns short 0040809E
00408090 |. F7D8 neg eax
00408092 |. E8 07000000 call 0040809E
00408097 |. B0 2D mov al, 2D
00408099 |. 41 inc ecx
0040809A |. 4E dec esi
0040809B |. 8806 mov [esi], al
0040809D |. C3 retn
0040809E |$ B9 0A000000 mov ecx, 0A ; ECX=0A
004080A3 |> 52 push edx
004080A4 |. 56 push esi
004080A5 |> 31D2 /xor edx, edx
004080A7 |. F7F1 |div ecx ; / 0A
004080A9 |. 4E |dec esi
004080AA |. 80C2 30 |add dl, 30 ; 余数 + 30
004080AD |. 80FA 3A |cmp dl, 3A ; 其和与3A比较
004080B0 |. 72 03 |jb short 004080B5 ; 小则跳
004080B2 |. 80C2 07 |add dl, 7 ; 不跳则再 + 7
004080B5 |> 8816 |mov [esi], dl ; 结果保存到[ESI]这里
004080B7 |. 09C0 |or eax, eax ; EAX OR EAX 为空则下面结束循环
004080B9 |.^ 75 EA \jnz short 004080A5
004080BB |. 59 pop ecx ; 循环结束得到字符串"409429",设为S2
004080BC |. 5A pop edx
004080BD |. 29F1 sub ecx, esi ; ESI为S2的长度
004080BF |. 29CA sub edx, ecx ; 不高于循环中最后一次的DL值则跳
004080C1 |. 76 10 jbe short 004080D3
004080C3 |. 01D1 add ecx, edx ; 否则,EDX再 + ECX(S2的长度)
004080C5 |. B0 30 mov al, 30
004080C7 |. 29D6 sub esi, edx
004080C9 |. EB 03 jmp short 004080CE
004080CB |> 880432 /mov [edx+esi], al
004080CE |> 4A dec edx
004080CF |.^ 75 FA \jnz short 004080CB
004080D1 |. 8806 mov [esi], al
004080D3 \> C3 retn
算法总结:
0.依次取硬件ID的ASC累加,其和加上硬件ID长度值*404H(1028),其结果除以2再XOR常数0C87DAH(821210);
XOR的结果再乘以2,其积再OR常数0C8594H(820628);
然后再除以2;商+4BAH(1210),得到的和再和 XOR 常数8E0E0H(581856),结果设为S1。
本例S1=63F55
1.S1除以10,取余数(余数ASC大于等于3A,则余数ASC+7),商则继续除以10,取余数,直到商为0为止。余数转换成对应的字 符形式,且倒序,得到S2。
本例S2为字符串“409429”。
3.对S2按下列顺序进行运算:
第6位 + 第3位 + 第6位的和除以5 ,取余 + 61, 设为Q1 对应字符:b
第2位 + 第2位的和 除以5 ,取余 + 61 设为Q2 对应字符:b
第6位 + 第1位的和 除以5 ,取余 + 61 设为Q3 对应字符:e
第1位 + 第5位 + 第3位的和除以5 ,取余 + 61 设为Q4 对应字符:e
第6位 + 第3位的和 除以5 ,取余 + 61 设为Q5 对应字符:e
第3位 + 第2位 + 第6位的和除以5 ,取余 + 61 设为Q6 对应字符:c
第3位 + 第5位的和 除以5 ,取余 + 61 设为Q7 对应字符:c
第1位 + 第1位 + 第3位的和除以5 ,取余 + 61 设为Q8 对应字符:b
第2位 + 第3位的和 除以5 ,取余 + 61 设为Q9 对应字符:a
第5位 + 第6位 + 第1位的和除以5 ,取余 + 61 设为Q10 对应字符:e
4.对第3步运算的结果,在S2的基础上按下面顺序依次连接:
Q8放到S2的第一位去。(不是取代S2的第一位而是相当于Q8连接S2,即开始变形了),本例为“b409429”;
Q6放到变形中的字符串(即“b409429”)第2位,再次变形为“bc409429”;
接着是Q10放到“bc409429”的第4位,成为“bc4e09429”;
然后是Q4放到第6位;
Q2放到第7位;
Q5放到第9位;
Q1放到第10位;
Q3放到第12位;
Q9放到第13位;
Q7放到第15位,这时得到字符串:"bc4e0eb9eb4ea2c9";
取固定字符“S”放到"bc4e0eb9eb4ea2c9"的第8位,得到,"bc4e0ebS9eb4ea2c9";
同样,再取固定字符“X”,“5”、“S”、“B”依次放到第7、2、12、6位,得到字符串"b5c4eB0eXbS9Seb4ea2c9";
再取“-”依次放到第5、10、15、18、20位,直到得字符串"b5c4-eB0e-XbS9-Se-b-4ea2c9"。
5.转大写即为注册码。
注册信息会保存在:
HKEY_USERS\.DEFAULT\Software\MSSQL5.01\MSSQL5.01
"XB_N"="WD-WCAT11223415"
"XB_P"="B5C4-EB0E-XBS9-SE-B-4EA2C9"
删除变回未注册版本!
|
评分
-
查看全部评分
|