先说结论:
这软件其实存在 3 种注册码。
一种是 Standard 标准版本
一种是 Pro 专业版
另一种是 Upgrade 升级版本。
专业版注册码长度必须是 24,29,31,34。 其中 24
不知道是官方写错代码,或是刻意作废的。
底下是刚刚临时做的笔记。
完整笔记的代码太长论坛发不上来,所以贴片段。
0058CA4F 8B00 mov eax,dword ptr ds:[eax] ; 获取注册码长度,保存到 ebx
0058CA51 8BD8 mov ebx,eax
0058CA53 A1 B02F6000 mov eax,dword ptr ds:[<版本类别标志位>]
0058CA58 C700 FFFFFFFF mov dword ptr ds:[eax],-0x1 ; 这里是注册标记,先给它填值为 -1
0058CA5E 8B45 F4 mov eax,dword ptr ss:[ebp-0xC] ; eax 指向注册码
0058CA61 E8 12F6FFFF call <授权的第一套算法> ; 授权第一套算法
0058CA66 8945 D8 mov dword ptr ss:[ebp-0x28],eax ; edx:eax 是计算结果
0058CA69 8955 DC mov dword ptr ss:[ebp-0x24],edx
0058CA6C 837D DC 00 cmp dword ptr ss:[ebp-0x24],0x0
0058CA70 75 13 jnz short 0058CA85
0058CA72 817D D8 EE35000>cmp dword ptr ss:[ebp-0x28],0x35EE
0058CA79 75 0A jnz short 0058CA85
0058CA7B BB 01000000 mov ebx,0x1 ; 单用户授权
0058CA80 E9 10080000 jmp 0058D295
0058CA85 837D DC 00 cmp dword ptr ss:[ebp-0x24],0x0
0058CA89 75 13 jnz short 0058CA9E
0058CA8B 817D D8 CD39000>cmp dword ptr ss:[ebp-0x28],0x39CD
0058CA92 75 0A jnz short 0058CA9E
0058CA94 BB 02000000 mov ebx,0x2 ; 2 用户授权
0058CA99 E9 F7070000 jmp 0058D295
0058CA9E 837D DC 00 cmp dword ptr ss:[ebp-0x24],0x0
0058CAA2 75 13 jnz short 0058CAB7
0058CAA4 817D D8 6F2E000>cmp dword ptr ss:[ebp-0x28],0x2E6F
0058CAAB 75 0A jnz short 0058CAB7
0058CAAD BB 03000000 mov ebx,0x3 ; 3 用户授权
0058CAB2 E9 DE070000 jmp 0058D295
0058CAB7 837D DC 00 cmp dword ptr ss:[ebp-0x24],0x0
0058CABB 75 13 jnz short 0058CAD0
0058CABD 817D D8 832F000>cmp dword ptr ss:[ebp-0x28],0x2F83
0058CAC4 75 0A jnz short 0058CAD0
0058CAC6 BB 05000000 mov ebx,0x5 ; 5 用户授权
0058CACB E9 C5070000 jmp 0058D295
0058CAD0 837D DC 00 cmp dword ptr ss:[ebp-0x24],0x0
0058CAD4 75 13 jnz short 0058CAE9
0058CAD6 817D D8 922E000>cmp dword ptr ss:[ebp-0x28],0x2E92
0058CADD 75 0A jnz short 0058CAE9
0058CADF BB 0A000000 mov ebx,0xA ; 10 用户授权
0058CAE4 E9 AC070000 jmp 0058D295
0058CAE9 837D DC 00 cmp dword ptr ss:[ebp-0x24],0x0
0058CAED 75 13 jnz short 0058CB02
0058CAEF 817D D8 5524000>cmp dword ptr ss:[ebp-0x28],0x2455
0058CAF6 75 0A jnz short 0058CB02
0058CAF8 BB 14000000 mov ebx,0x14 ; 20 用户授权
0058CAFD E9 93070000 jmp 0058D295
0058CB02 837D DC 00 cmp dword ptr ss:[ebp-0x24],0x0
0058CB06 75 13 jnz short 0058CB1B
0058CB08 817D D8 502F000>cmp dword ptr ss:[ebp-0x28],0x2F50
0058CB0F 75 0A jnz short 0058CB1B
0058CB11 BB 32000000 mov ebx,0x32 ; 50 用户授权
0058CB16 E9 7A070000 jmp 0058D295
0058CB1B 837D DC 00 cmp dword ptr ss:[ebp-0x24],0x0
0058CB1F 75 13 jnz short 0058CB34
0058CB21 817D D8 A62F000>cmp dword ptr ss:[ebp-0x28],0x2FA6
0058CB28 75 0A jnz short 0058CB34
0058CB2A BB 0F270000 mov ebx,0x270F ; 9999 用户,也就是无限用户授权
0058CB2F E9 61070000 jmp 0058D295
0058CB34 A1 B02F6000 mov eax,dword ptr ds:[<版本类别标志位>]
0058CB39 C700 FFFFFFFF mov dword ptr ds:[eax],-0x1
0058CB3F 83FB 1A cmp ebx,0x1A ; 注册码长度 26 的情况
0058CB42 0F85 09010000 jnz 0058CC51
0058CB48 A1 B02F6000 mov eax,dword ptr ds:[<版本类别标志位>]
0058CB4D 33D2 xor edx,edx
0058CB4F 8910 mov dword ptr ds:[eax],edx
0058CB51 8B45 F4 mov eax,dword ptr ss:[ebp-0xC]
0058CB54 E8 9FFDFFFF call <授权的第二套算法函数> ; 授权第二套算法
0058CB59 8945 D8 mov dword ptr ss:[ebp-0x28],eax
0058CB5C 8955 DC mov dword ptr ss:[ebp-0x24],edx
0058CB5F 817D DC 3428340>cmp dword ptr ss:[ebp-0x24],0x1342834
0058CB66 75 13 jnz short 0058CB7B
0058CB68 817D D8 74B4843>cmp dword ptr ss:[ebp-0x28],0x3784B474
0058CB6F 75 0A jnz short 0058CB7B
0058CB71 BB 01000000 mov ebx,0x1 ; 单用户授权
0058CB76 E9 1A070000 jmp 0058D295
0058CB7B 817D DC 35DEA00>cmp dword ptr ss:[ebp-0x24],0x1A0DE35
0058CB82 75 13 jnz short 0058CB97
0058CB84 817D D8 45796B3>cmp dword ptr ss:[ebp-0x28],0x386B7945
0058CB8B 75 0A jnz short 0058CB97
0058CB8D BB 02000000 mov ebx,0x2 ; 2 用户授权
0058CB92 E9 FE060000 jmp 0058D295
0058CB97 817D DC ED48560>cmp dword ptr ss:[ebp-0x24],0x15648ED
0058CB9E 75 13 jnz short 0058CBB3
0058CBA0 817D D8 3988BF7>cmp dword ptr ss:[ebp-0x28],0x78BF8839
0058CBA7 75 0A jnz short 0058CBB3
0058CBA9 BB 03000000 mov ebx,0x3 ; 3 用户授权
0058CBAE E9 E2060000 jmp 0058D295
0058CBB3 817D DC 504C2C0>cmp dword ptr ss:[ebp-0x24],0x12C4C50
0058CBBA 75 13 jnz short 0058CBCF
0058CBBC 817D D8 EBBD027>cmp dword ptr ss:[ebp-0x28],0x7302BDEB
0058CBC3 75 0A jnz short 0058CBCF
0058CBC5 BB 05000000 mov ebx,0x5 ; 5 用户授权
0058CBCA E9 C6060000 jmp 0058D295
0058CBCF 817D DC 1226180>cmp dword ptr ss:[ebp-0x24],0x1182612
0058CBD6 75 13 jnz short 0058CBEB
0058CBD8 817D D8 3D61B93>cmp dword ptr ss:[ebp-0x28],0x32B9613D
0058CBDF 75 0A jnz short 0058CBEB
0058CBE1 BB 0A000000 mov ebx,0xA ; 10 用户授权
0058CBE6 E9 AA060000 jmp 0058D295
0058CBEB 817D DC EFCC690>cmp dword ptr ss:[ebp-0x24],0x169CCEF
0058CBF2 75 13 jnz short 0058CC07
0058CBF4 817D D8 964EC34>cmp dword ptr ss:[ebp-0x28],0x47C34E96
0058CBFB 75 0A jnz short 0058CC07
0058CBFD BB 14000000 mov ebx,0x14 ; 20 用户授权
0058CC02 E9 8E060000 jmp 0058D295
0058CC07 817D DC 2F98520>cmp dword ptr ss:[ebp-0x24],0x152982F
0058CC0E 75 13 jnz short 0058CC23
0058CC10 817D D8 08391FD>cmp dword ptr ss:[ebp-0x28],0xD61F3908
0058CC17 75 0A jnz short 0058CC23
0058CC19 BB 32000000 mov ebx,0x32 ; 50 用户授权
0058CC1E E9 72060000 jmp 0058D295
0058CC23 817D DC D211720>cmp dword ptr ss:[ebp-0x24],0x17211D2
0058CC2A 75 13 jnz short 0058CC3F
0058CC2C 817D D8 D4FC05B>cmp dword ptr ss:[ebp-0x28],0xB605FCD4
0058CC33 75 0A jnz short 0058CC3F
0058CC35 BB 0F270000 mov ebx,0x270F ; 9999 用户,也就是无限用户授权
0058CC3A E9 56060000 jmp 0058D295
0058CC3F 33DB xor ebx,ebx
0058CC41 A1 B02F6000 mov eax,dword ptr ds:[<版本类别标志位>]
0058CC46 C700 FFFFFFFF mov dword ptr ds:[eax],-0x1
0058CC4C E9 44060000 jmp 0058D295
0058CC51 83FB 1F cmp ebx,0x1F ; *** 注册码长度 31位的情况 ***
0058CC54 0F85 56010000 jnz 0058CDB0
0058CC5A 8D45 F0 lea eax,dword ptr ss:[ebp-0x10]
0058CC5D 50 push eax
0058CC5E B9 1A000000 mov ecx,0x1A ; 从注册码第一位开始取 0x1A 位,其实就是最开始的26位。
0058CC63 BA 01000000 mov edx,0x1
0058CC68 8B45 F4 mov eax,dword ptr ss:[ebp-0xC]
0058CC6B E8 601DE8FF call 0040E9D0
0058CC70 8D45 EC lea eax,dword ptr ss:[ebp-0x14]
0058CC73 50 push eax
0058CC74 B9 04000000 mov ecx,0x4 ; 从注册码 0x1C 位开始取四位,其实就是最后4位。
0058CC79 BA 1C000000 mov edx,0x1C
0058CC7E 8B45 F4 mov eax,dword ptr ss:[ebp-0xC]
0058CC81 E8 4A1DE8FF call 0040E9D0
0058CC86 8B45 EC mov eax,dword ptr ss:[ebp-0x14] ; 先取最后四位做计算
0058CC89 E8 6AFCFFFF call <授权的第二套算法函数> ; 授权的第二套算法函数
0058CC8E 83FA 00 cmp edx,0x0
0058CC91 75 14 jnz short 0058CCA7
0058CC93 3D 903F0000 cmp eax,0x3F90 ; *** 正确的计算结果是 0x3F90 , 这是专业版的关键 ***
0058CC98 75 0D jnz short 0058CCA7
0058CC9A A1 B02F6000 mov eax,dword ptr ds:[<版本类别标志位>]
0058CC9F C700 01000000 mov dword ptr ds:[eax],0x1 ; 这里设置了专业版的注册标记
0058CCA5 EB 09 jmp short 0058CCB0
0058CCA7 A1 B02F6000 mov eax,dword ptr ds:[<版本类别标志位>]
0058CCAC 33D2 xor edx,edx
0058CCAE 8910 mov dword ptr ds:[eax],edx ; 不是 0x3F90 的话,就设定为标准版
0058CCB0 8B45 F0 mov eax,dword ptr ss:[ebp-0x10]
0058CCB3 E8 40FCFFFF call <授权的第二套算法函数> ; 授权的第二套算法函数
0058CCB8 8945 D8 mov dword ptr ss:[ebp-0x28],eax
0058CCBB 8955 DC mov dword ptr ss:[ebp-0x24],edx
0058CCBE 817D DC 3428340>cmp dword ptr ss:[ebp-0x24],0x1342834
0058CCC5 75 13 jnz short 0058CCDA
0058CCC7 817D D8 74B4843>cmp dword ptr ss:[ebp-0x28],0x3784B474
0058CCCE 75 0A jnz short 0058CCDA
0058CCD0 BB 01000000 mov ebx,0x1 ; 单用户授权
0058CCD5 E9 BB050000 jmp 0058D295
0058CCDA 817D DC 35DEA00>cmp dword ptr ss:[ebp-0x24],0x1A0DE35
0058CCE1 75 13 jnz short 0058CCF6
0058CCE3 817D D8 45796B3>cmp dword ptr ss:[ebp-0x28],0x386B7945
0058CCEA 75 0A jnz short 0058CCF6
0058CCEC BB 02000000 mov ebx,0x2 ; 2 用户授权
0058CCF1 E9 9F050000 jmp 0058D295
0058CCF6 817D DC ED48560>cmp dword ptr ss:[ebp-0x24],0x15648ED
0058CCFD 75 13 jnz short 0058CD12
0058CCFF 817D D8 3988BF7>cmp dword ptr ss:[ebp-0x28],0x78BF8839
0058CD06 75 0A jnz short 0058CD12
0058CD08 BB 03000000 mov ebx,0x3 ; 3 用户授权
0058CD0D E9 83050000 jmp 0058D295
0058CD12 817D DC 504C2C0>cmp dword ptr ss:[ebp-0x24],0x12C4C50
0058CD19 75 13 jnz short 0058CD2E
0058CD1B 817D D8 EBBD027>cmp dword ptr ss:[ebp-0x28],0x7302BDEB
0058CD22 75 0A jnz short 0058CD2E
0058CD24 BB 05000000 mov ebx,0x5 ; 5 用户授权
0058CD29 E9 67050000 jmp 0058D295
0058CD2E 817D DC 1226180>cmp dword ptr ss:[ebp-0x24],0x1182612
0058CD35 75 13 jnz short 0058CD4A
0058CD37 817D D8 3D61B93>cmp dword ptr ss:[ebp-0x28],0x32B9613D
0058CD3E 75 0A jnz short 0058CD4A
0058CD40 BB 0A000000 mov ebx,0xA ; 10 用户授权
0058CD45 E9 4B050000 jmp 0058D295
0058CD4A 817D DC EFCC690>cmp dword ptr ss:[ebp-0x24],0x169CCEF
0058CD51 75 13 jnz short 0058CD66
0058CD53 817D D8 964EC34>cmp dword ptr ss:[ebp-0x28],0x47C34E96
0058CD5A 75 0A jnz short 0058CD66
0058CD5C BB 14000000 mov ebx,0x14 ; 20 用户授权
0058CD61 E9 2F050000 jmp 0058D295
0058CD66 817D DC 2F98520>cmp dword ptr ss:[ebp-0x24],0x152982F
0058CD6D 75 13 jnz short 0058CD82
0058CD6F 817D D8 08391FD>cmp dword ptr ss:[ebp-0x28],0xD61F3908
0058CD76 75 0A jnz short 0058CD82
0058CD78 BB 32000000 mov ebx,0x32 ; 50 用户授权
0058CD7D E9 13050000 jmp 0058D295
0058CD82 817D DC D211720>cmp dword ptr ss:[ebp-0x24],0x17211D2
0058CD89 75 13 jnz short 0058CD9E
0058CD8B 817D D8 D4FC05B>cmp dword ptr ss:[ebp-0x28],0xB605FCD4
0058CD92 75 0A jnz short 0058CD9E
0058CD94 BB 0F270000 mov ebx,0x270F ; 9999 用户,也就是无限用户授权
0058CD99 E9 F7040000 jmp 0058D295
0058CD9E 33DB xor ebx,ebx
0058CDA0 A1 B02F6000 mov eax,dword ptr ds:[<版本类别标志位>]
0058CDA5 C700 FFFFFFFF mov dword ptr ds:[eax],-0x1
0058CDAB E9 E5040000 jmp 0058D295
0058CDB0 83FB 14 cmp ebx,0x14 ; 注册码长度为 20 的情况
0058CDB3 0F85 0B010000 jnz 0058CEC4
0058CDB9 A1 B02F6000 mov eax,dword ptr ds:[<版本类别标志位>]
0058CDBE C700 03000000 mov dword ptr ds:[eax],0x3 ; 这个授权可能是需要升级用的吧? 没深入研究
0058CDC4 8B45 F4 mov eax,dword ptr ss:[ebp-0xC]
0058CDC7 E8 40FAFFFF call <授权的第三套算法>
0058CDCC 8945 D8 mov dword ptr ss:[ebp-0x28],eax
:
:
0058D1E9 83FB 18 cmp ebx,0x18 ; 注册码长度为 24 的情况, 以下参考上面的注释
0058D1EC 0F85 A1000000 jnz 0058D293
0058D1F2 8D45 F0 lea eax,dword ptr ss:[ebp-0x10]
0058D1F5 50 push eax
0058D1F6 B9 13000000 mov ecx,0x13
0058D1FB BA 01000000 mov edx,0x1
0058D200 8B45 F4 mov eax,dword ptr ss:[ebp-0xC]
0058D203 E8 C817E8FF call 0040E9D0
0058D208 8D45 EC lea eax,dword ptr ss:[ebp-0x14]
0058D20B 50 push eax
0058D20C B9 04000000 mov ecx,0x4
0058D211 BA 15000000 mov edx,0x15
0058D216 8B45 F4 mov eax,dword ptr ss:[ebp-0xC]
0058D219 E8 B217E8FF call 0040E9D0
0058D21E 8D45 E8 lea eax,dword ptr ss:[ebp-0x18]
0058D221 50 push eax
0058D222 B9 04000000 mov ecx,0x4
0058D227 BA 1A000000 mov edx,0x1A ; 明显这里超过长度的 24,可以说是官方写错代码了。
0058D22C 8B45 F4 mov eax,dword ptr ss:[ebp-0xC]
0058D22F E8 9C17E8FF call 0040E9D0
0058D234 8B45 E8 mov eax,dword ptr ss:[ebp-0x18]
0058D237 E8 BCF6FFFF call <授权的第二套算法函数>
0058D23C 83FA 00 cmp edx,0x0
0058D23F 75 14 jnz short 0058D255
0058D241 3D 903F0000 cmp eax,0x3F90
0058D246 75 0D jnz short 0058D255
0058D248 A1 B02F6000 mov eax,dword ptr ds:[<版本类别标志位>]
0058D24D C700 01000000 mov dword ptr ds:[eax],0x1 ; 专业版授权
0058D253 EB 09 jmp short 0058D25E
0058D255 A1 B02F6000 mov eax,dword ptr ds:[<版本类别标志位>]
0058D25A 33D2 xor edx,edx
0058D25C 8910 mov dword ptr ds:[eax],edx ; 标准版授权
0058D25E 8B45 F0 mov eax,dword ptr ss:[ebp-0x10]
0058D261 E8 92F6FFFF call <授权的第二套算法函数>
太久没发帖了,不知道代码要怎么对齐。
至于想要直接获取成品的朋友,底下的两套注册码可以直接拿去享用。