【破文标题】非常简单的“佳宜客户管理软件 1.75 企业版”注册算法
【破文作者】XXNB
【作者邮箱】
【作者主页】
【破解工具】OD
【破解平台】xpsp2
【软件名称】佳宜客户管理软件 1.75 企业版
【软件大小】3191KB
【原版下载】
http://www.newhua.com/soft/39534.htm
【保护方式】
【软件简介】佳宜客户管理软件参考了各类客户管理软件精华,溶入了各自的优点并采纳众多用户的宝贵意见,真正地从用户的需要出发,为客户需要而设计,实现如下功能:
1、轻松管理日益增多的客户资源;
2、提供科学的发展潜在客户的步骤,按步照班,渐入佳境;
....
【破解声明】向大侠们学习!!!
------------------------------------------------------------------------
【破解过程】
------------------------------------------------------------------------
1、字符串参考可以找到如下关键代码:
005E6E3C . 55 push ebp
005E6E3D . 68 A2705E00 push 005E70A2
005E6E42 . 64:FF30 push dword ptr fs:[eax]
005E6E45 . 64:8920 mov fs:[eax], esp
005E6E48 . 8D55 F0 lea edx, [ebp-10]
005E6E4B . 8B45 FC mov eax, [ebp-4]
005E6E4E . 8B80 04030000 mov eax, [eax+304]
005E6E54 . E8 3B82E6FF call 0044F094
005E6E59 . 8B45 F0 mov eax, [ebp-10] ; 用户名
005E6E5C . 8D55 F4 lea edx, [ebp-C]
005E6E5F . E8 7429E2FF call 004097D8
005E6E64 . 837D F4 00 cmp dword ptr [ebp-C], 0
005E6E68 . 75 22 jnz short 005E6E8C ; 看看有没有输入用户名
005E6E6A . 6A 00 push 0
005E6E6C . 68 B0705E00 push 005E70B0 ; 请填写用户名称!
005E6E71 . E8 4207FFFF call <jmp.&PunUnitLib.ShowMess>
005E6E76 . 8B45 FC mov eax, [ebp-4]
005E6E79 . 8B80 04030000 mov eax, [eax+304]
005E6E7F . 8B10 mov edx, [eax]
005E6E81 . FF92 C0000000 call [edx+C0]
005E6E87 . E9 B1010000 jmp 005E703D
005E6E8C > 8D55 E8 lea edx, [ebp-18]
005E6E8F . 8B45 FC mov eax, [ebp-4]
005E6E92 . 8B80 FC020000 mov eax, [eax+2FC]
005E6E98 . E8 F781E6FF call 0044F094
005E6E9D . 8B45 E8 mov eax, [ebp-18] ; 假码
005E6EA0 . 8D55 EC lea edx, [ebp-14]
005E6EA3 . E8 3029E2FF call 004097D8
005E6EA8 . 837D EC 00 cmp dword ptr [ebp-14], 0
005E6EAC . 75 22 jnz short 005E6ED0 ; 看看有没有输入假码
005E6EAE . 6A 00 push 0
005E6EB0 . 68 C4705E00 push 005E70C4 ; 授权号不能为空,请填写授权号!
005E6EB5 . E8 FE06FFFF call <jmp.&PunUnitLib.ShowMess>
005E6EBA . 8B45 FC mov eax, [ebp-4]
005E6EBD . 8B80 FC020000 mov eax, [eax+2FC]
005E6EC3 . 8B10 mov edx, [eax]
005E6EC5 . FF92 C0000000 call [edx+C0]
005E6ECB . E9 6D010000 jmp 005E703D
005E6ED0 > A1 34156300 mov eax, [631534]
005E6ED5 . 8B00 mov eax, [eax] ; 出现这个固定字符串“6J9Y-K3H7”
005E6ED7 . E8 A4E1E1FF call 00405080
005E6EDC . 50 push eax ; 固定字符串入栈
005E6EDD . 8D55 E4 lea edx, [ebp-1C]
005E6EE0 . 8B45 FC mov eax, [ebp-4]
005E6EE3 . 8B80 F4020000 mov eax, [eax+2F4]
005E6EE9 . E8 A681E6FF call 0044F094
005E6EEE . 8B45 E4 mov eax, [ebp-1C] ; 机器码出现(硬盘序列号)
005E6EF1 . E8 8AE1E1FF call 00405080
005E6EF6 . 50 push eax ; 机器码入栈
005E6EF7 . E8 EC06FFFF call <jmp.&PunUnitLib.GetRegPass> ; 算法Call
005E6EFC . 8BD0 mov edx, eax ; 这个不会就是注册码吧“6J9Y-6395-K3H7-9583”
005E6EFE . 8D45 F8 lea eax, [ebp-8]
005E6F01 . E8 BADEE1FF call 00404DC0
005E6F06 . 8D55 DC lea edx, [ebp-24]
005E6F09 . 8B45 FC mov eax, [ebp-4]
005E6F0C . 8B80 FC020000 mov eax, [eax+2FC]
005E6F12 . E8 7D81E6FF call 0044F094
005E6F17 . 8B45 DC mov eax, [ebp-24] ; 假码
005E6F1A . 8D55 E0 lea edx, [ebp-20]
005E6F1D . E8 B628E2FF call 004097D8
005E6F22 . 8B45 E0 mov eax, [ebp-20] ; 假码
005E6F25 . 8B55 F8 mov edx, [ebp-8] ; 真码
005E6F28 . E8 9FE0E1FF call 00404FCC ; 比较函数
005E6F2D . 0F85 FE000000 jnz 005E7031 ; 关键跳~~
005E6F33 . 33C0 xor eax, eax
005E6F35 . 55 push ebp
005E6F36 . 68 1D705E00 push 005E701D
005E6F3B . 64:FF30 push dword ptr fs:[eax]
005E6F3E . 64:8920 mov fs:[eax], esp
005E6F41 . B2 01 mov dl, 1
005E6F43 . A1 30304700 mov eax, [473030]
005E6F48 . E8 4FC2E8FF call 0047319C
005E6F4D . 8BD8 mov ebx, eax
005E6F4F . BA 02000080 mov edx, 80000002
005E6F54 . 8BC3 mov eax, ebx
005E6F56 . E8 1DC3E8FF call 00473278
005E6F5B . B1 01 mov cl, 1
005E6F5D . 8B15 74096300 mov edx, [630974] ; JyCrm.005E6D84
005E6F63 . 8BC3 mov eax, ebx
005E6F65 . E8 52C4E8FF call 004733BC
005E6F6A . 8D55 D8 lea edx, [ebp-28]
005E6F6D . 8B45 FC mov eax, [ebp-4]
005E6F70 . 8B80 04030000 mov eax, [eax+304]
005E6F76 . E8 1981E6FF call 0044F094
005E6F7B . 8B4D D8 mov ecx, [ebp-28]
005E6F7E . BA EC705E00 mov edx, 005E70EC ; username
005E6F83 . 8BC3 mov eax, ebx
005E6F85 . E8 CEC5E8FF call 00473558
005E6F8A . 8D55 D0 lea edx, [ebp-30]
005E6F8D . 8B45 FC mov eax, [ebp-4]
005E6F90 . 8B80 F4020000 mov eax, [eax+2F4]
005E6F96 . E8 F980E6FF call 0044F094
005E6F9B . 8B45 D0 mov eax, [ebp-30]
005E6F9E . E8 DDE0E1FF call 00405080
005E6FA3 . 50 push eax
005E6FA4 . E8 3706FFFF call <jmp.&PunUnitLib.SavePass>
005E6FA9 . 8BD0 mov edx, eax
005E6FAB . 8D45 D4 lea eax, [ebp-2C]
005E6FAE . E8 0DDEE1FF call 00404DC0
005E6FB3 . 8B4D D4 mov ecx, [ebp-2C]
005E6FB6 . BA 00715E00 mov edx, 005E7100 ; signcode
005E6FBB . 8BC3 mov eax, ebx
005E6FBD . E8 96C5E8FF call 00473558
005E6FC2 . 8B45 F8 mov eax, [ebp-8]
005E6FC5 . E8 B6E0E1FF call 00405080
005E6FCA . 50 push eax
005E6FCB . E8 1006FFFF call <jmp.&PunUnitLib.SavePass>
005E6FD0 . 8BD0 mov edx, eax
005E6FD2 . 8D45 CC lea eax, [ebp-34]
005E6FD5 . E8 E6DDE1FF call 00404DC0
005E6FDA . 8B4D CC mov ecx, [ebp-34]
005E6FDD . BA 14715E00 mov edx, 005E7114 ; regcode
005E6FE2 . 8BC3 mov eax, ebx
005E6FE4 . E8 6FC5E8FF call 00473558
005E6FE9 . 8BC3 mov eax, ebx
005E6FEB . E8 ECCCE1FF call 00403CDC
005E6FF0 . 6A 00 push 0
005E6FF2 . 68 1C715E00 push 005E711C ; 系统注册成功,欢迎你使用本软件!
2、跟进call <jmp.&PunUnitLib.GetRegPass> 这个算法call,就是一个跳转,然后可以找到如下关键代码:
003E904B 8D45 F0 lea eax, [ebp-10]
003E904E 8B55 08 mov edx, [ebp+8] ; 机器码
003E9051 E8 4AB7F8FF call 003747A0
003E9056 8B45 F0 mov eax, [ebp-10]
003E9059 E8 0AB8F8FF call 00374868
003E905E 8BF0 mov esi, eax
003E9060 85F6 test esi, esi
003E9062 7E 26 jle short 003E908A
003E9064 BB 01000000 mov ebx, 1
003E9069 8D4D E8 lea ecx, [ebp-18] ; 循环开始
003E906C 8B45 F0 mov eax, [ebp-10]
003E906F 0FB64418 FF movzx eax, byte ptr [eax+ebx-1] ; 逐个取机器码的ASCII码值,(16进制)
003E9074 33D2 xor edx, edx
003E9076 E8 F905F9FF call 00379674
003E907B 8B55 E8 mov edx, [ebp-18]
003E907E 8D45 FC lea eax, [ebp-4]
003E9081 E8 EAB7F8FF call 00374870
003E9086 43 inc ebx
003E9087 4E dec esi
003E9088 ^ 75 DF jnz short 003E9069 ; 循环回去。这个循环得到的结果是机器码的ASCII值的16进制字符串
003E908A 8B45 FC mov eax, [ebp-4] ; 这里就是了
003E908D E8 D6B7F8FF call 00374868
003E9092 8BF0 mov esi, eax
003E9094 85F6 test esi, esi
003E9096 7E 2C jle short 003E90C4
003E9098 BB 01000000 mov ebx, 1
003E909D 8B45 FC mov eax, [ebp-4] ; 另一个循环开始了
003E90A0 E8 C3B7F8FF call 00374868
003E90A5 2BC3 sub eax, ebx
003E90A7 8B55 FC mov edx, [ebp-4]
003E90AA 8A1402 mov dl, [edx+eax] ; 从上次计算得到的字符串的最后开始取
003E90AD 8D45 E4 lea eax, [ebp-1C]
003E90B0 E8 DBB6F8FF call 00374790
003E90B5 8B55 E4 mov edx, [ebp-1C]
003E90B8 8D45 F8 lea eax, [ebp-8]
003E90BB E8 B0B7F8FF call 00374870
003E90C0 43 inc ebx
003E90C1 4E dec esi
003E90C2 ^ 75 D9 jnz short 003E909D ; 循环回去。这个循环的结果是得到机器码ASCII值的,倒过来的字符串
003E90C4 8D45 FC lea eax, [ebp-4]
003E90C7 50 push eax
003E90C8 B9 04000000 mov ecx, 4
003E90CD BA 01000000 mov edx, 1
003E90D2 8B45 F8 mov eax, [ebp-8] ; 这里就是了。和上面003E908A刚刚是到过来的。
003E90D5 E8 E6B9F8FF call 00374AC0
003E90DA 8D45 F8 lea eax, [ebp-8]
003E90DD 50 push eax
003E90DE B9 04000000 mov ecx, 4
003E90E3 BA 05000000 mov edx, 5
003E90E8 8B45 F8 mov eax, [ebp-8]
003E90EB E8 D0B9F8FF call 00374AC0
003E90F0 8B45 FC mov eax, [ebp-4] ; 取前面4位
003E90F3 E8 70B7F8FF call 00374868
003E90F8 83F8 04 cmp eax, 4
003E90FB 7D 2F jge short 003E912C
003E90FD 8B45 FC mov eax, [ebp-4]
003E9100 E8 63B7F8FF call 00374868
003E9105 8BD8 mov ebx, eax
003E9107 83FB 03 cmp ebx, 3
003E910A 7F 20 jg short 003E912C
003E910C 8D4D E0 lea ecx, [ebp-20]
003E910F 8BC3 mov eax, ebx
003E9111 C1E0 02 shl eax, 2
003E9114 33D2 xor edx, edx
003E9116 E8 5905F9FF call 00379674
003E911B 8B55 E0 mov edx, [ebp-20]
003E911E 8D45 FC lea eax, [ebp-4]
003E9121 E8 4AB7F8FF call 00374870
003E9126 43 inc ebx
003E9127 83FB 04 cmp ebx, 4
003E912A ^ 75 E0 jnz short 003E910C
003E912C 8B45 F8 mov eax, [ebp-8] ; 取5~8位
003E912F E8 34B7F8FF call 00374868
003E9134 83F8 04 cmp eax, 4
003E9137 7D 2F jge short 003E9168
003E9139 8B45 F8 mov eax, [ebp-8]
003E913C E8 27B7F8FF call 00374868
003E9141 8BD8 mov ebx, eax
003E9143 83FB 03 cmp ebx, 3
003E9146 7F 20 jg short 003E9168
003E9148 8D4D DC lea ecx, [ebp-24]
003E914B 8BC3 mov eax, ebx
003E914D C1E0 02 shl eax, 2
003E9150 33D2 xor edx, edx
003E9152 E8 1D05F9FF call 00379674
003E9157 8B55 DC mov edx, [ebp-24]
003E915A 8D45 F8 lea eax, [ebp-8]
003E915D E8 0EB7F8FF call 00374870
003E9162 43 inc ebx
003E9163 83FB 04 cmp ebx, 4
003E9166 ^ 75 E0 jnz short 003E9148
003E9168 8D45 D8 lea eax, [ebp-28]
003E916B 8B55 0C mov edx, [ebp+C] ; 固定字符串出现
003E916E E8 2DB6F8FF call 003747A0
003E9173 8B45 D8 mov eax, [ebp-28]
003E9176 8D55 F4 lea edx, [ebp-C]
003E9179 E8 DE03F9FF call 0037955C
003E917E 8D45 D4 lea eax, [ebp-2C]
003E9181 50 push eax
003E9182 B9 04000000 mov ecx, 4
003E9187 BA 01000000 mov edx, 1
003E918C 8B45 F4 mov eax, [ebp-C]
003E918F E8 2CB9F8FF call 00374AC0
003E9194 FF75 D4 push dword ptr [ebp-2C] ; 分开固定字符串,这里是前面
003E9197 68 0C923E00 push 003E920C
003E919C FF75 FC push dword ptr [ebp-4] ; 插入
003E919F 8D45 D0 lea eax, [ebp-30]
003E91A2 50 push eax
003E91A3 B9 05000000 mov ecx, 5
003E91A8 BA 05000000 mov edx, 5
003E91AD 8B45 F4 mov eax, [ebp-C]
003E91B0 E8 0BB9F8FF call 00374AC0
003E91B5 FF75 D0 push dword ptr [ebp-30] ; 分开固定字符串,这里是后面
003E91B8 68 0C923E00 push 003E920C
003E91BD FF75 F8 push dword ptr [ebp-8] ; 插入
003E91C0 8D45 EC lea eax, [ebp-14]
003E91C3 BA 06000000 mov edx, 6
003E91C8 E8 5BB7F8FF call 00374928
003E91CD 8B45 EC mov eax, [ebp-14] ; 注册码出现了。“6J9Y-6395-K3H7-9583”
003E91D0 E8 8BB8F8FF call 00374A60
【算法总结】
------------------------------------------------------------------------
1、注册码的得到只与机器码(硬盘序列号)有关。其他的不参与计算。
2、固定字符串"6J9Y-K3H7"将成为最后真注册码的第一和第三部分。格式为“6J9Y-SN1-K3H7-SN2”
3、先运算得到机器码的Ascii字符串(16进制),然后整个字符串倒过来。
4、取倒过来后的前4位为SN1。取倒过来的5~8为SN2。
【易语言注册机】
------------------------------------------------------------------------
.版本 2
.子程序 _按钮1_被单击
.局部变量 jiqima, 文本型
.局部变量 len1, 整数型
.局部变量 ascjiqima, 文本型
.局部变量 daojiqima, 文本型
.局部变量 a, 整数型
.局部变量 j, 整数型
.局部变量 i, 整数型
.局部变量 sn1, 文本型
.局部变量 sn2, 文本型
.局部变量 sn, 文本型
jiqima = 编辑框1.内容
len1 = 取文本长度 (jiqima)
.计次循环首 (len1, i)
a = 取代码 (jiqima, i)
ascjiqima = ascjiqima + 取十六进制文本 (a)
.计次循环尾 ()
daojiqima = 倒转字符串 (ascjiqima)
sn = 取文本左边 (daojiqima, 8)
sn1 = 取文本左边 (sn, 4)
sn2 = 取文本右边 (sn, 4)
编辑框2.内容 = “6J9Y” + “-” + sn1 + “-” + “K3H7” + “-” + sn2
编辑框3.内容 = daojiqima
.子程序 倒转字符串, 文本型
.参数 string, 文本型
.局部变量 k, 整数型
.局部变量 RChar, 文本型
.局部变量 LChar, 文本型
.局部变量 WChar, 文本型
.判断循环首 (k < 取文本长度 (string))
LChar = 取文本左边 (string, 取文本长度 (string) - k)
RChar = 取文本右边 (LChar, 1)
k = k + 1
WChar = WChar + RChar
.判断循环尾 ()
返回 (WChar)
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课