【破文标题】里诺仓库3000(单机版)简单算法,学算法的新手们看看吧
【破文作者】XXNB
【作者邮箱】
【作者主页】
【破解工具】
【破解平台】
【软件名称】里诺仓库3000(单机版) 2.30
【软件大小】3520KB
【原版下载】http://www.onlinedown.net/soft/45998.htm
【保护方式】
【软件简介】里诺仓库3000是一个功能强大的仓库管理软件。软件界面设计简洁,美观。其人性化的软件流程,使普通用户不需培训也能很快
掌握软件的使用方法,软件界面沿用里诺软件传统风格,简洁、美观、易用。功能模块包括入库、出库、调拨、组装和拆卸、盘点、报表汇总
。
【破解声明】好不容易找到一个非常简单的算法,分享下
------------------------------------------------------------------------
【破解过程】刚才有位兄弟曾经写过一篇,我看到没有算法,所以跟了下,发现简单所以.....
查找字符串可以轻松找到以下函数断下。
006455D6 |. 55 push ebp
006455D7 |. 68 D5566400 push 006456D5
006455DC |. 64:FF30 push dword ptr fs:[eax]
006455DF |. 64:8920 mov fs:[eax], esp
006455E2 |. 8D55 F8 lea edx, [ebp-8]
006455E5 |. 8B86 08030000 mov eax, [esi+308]
006455EB |. E8 9C2DE4FF call 0048838C
006455F0 |. 8B45 F8 mov eax, [ebp-8] ; 假码
006455F3 |. 8D55 FC lea edx, [ebp-4]
006455F6 |. E8 5144DCFF call 00409A4C
006455FB |. 8B45 FC mov eax, [ebp-4] ; 假码
006455FE |. 50 push eax
006455FF |. 8D55 EC lea edx, [ebp-14]
00645602 |. 8B86 04030000 mov eax, [esi+304] ; hyg
00645608 |. E8 7F2DE4FF call 0048838C
0064560D |. 8B45 EC mov eax, [ebp-14] ; 用户名
00645610 |. 8D55 F0 lea edx, [ebp-10]
00645613 |. E8 3444DCFF call 00409A4C
00645618 |. 8B55 F0 mov edx, [ebp-10] ; 用户名
0064561B |. 8D4D F4 lea ecx, [ebp-C]
0064561E |. 8BC6 mov eax, esi
00645620 |. E8 FF000000 call 00645724 ; 关键Call,算法Call,F7进
00645625 |. 8B55 F4 mov edx, [ebp-C] ; 真码
00645628 |. 58 pop eax
00645629 |. E8 36F8DBFF call 00404E64
0064562E |. 75 50 jnz short 00645680 ;
00645630 |. B3 01 mov bl, 1
00645632 |. 8D55 E4 lea edx, [ebp-1C]
...............
-----------------------------------------------------------------------------
进到这里:
00645724 /$ 55 push ebp
00645725 |. 8BEC mov ebp, esp
00645727 |. 51 push ecx
00645728 |. B9 04000000 mov ecx, 4
0064572D |> 6A 00 /push 0
0064572F |. 6A 00 |push 0
00645731 |. 49 |dec ecx
00645732 |.^ 75 F9 \jnz short 0064572D
00645734 |. 51 push ecx
00645735 |. 874D FC xchg [ebp-4], ecx
00645738 |. 53 push ebx
00645739 |. 56 push esi
0064573A |. 57 push edi
0064573B |. 8BF9 mov edi, ecx
0064573D |. 8955 FC mov [ebp-4], edx
00645740 |. 8B45 FC mov eax, [ebp-4]
00645743 |. E8 C0F7DBFF call 00404F08
00645748 |. 33C0 xor eax, eax
0064574A |. 55 push ebp
0064574B |. 68 E5586400 push 006458E5
00645750 |. 64:FF30 push dword ptr fs:[eax]
00645753 |. 64:8920 mov fs:[eax], esp
00645756 |. 8BC7 mov eax, edi
00645758 |. E8 FBF2DBFF call 00404A58
0064575D |. 8B45 FC mov eax, [ebp-4]
00645760 |. E8 B3F5DBFF call 00404D18 ; 计算用户名位数
00645765 |. 8BF0 mov esi, eax
00645767 |. 85F6 test esi, esi
00645769 |. 7E 26 jle short 00645791
0064576B |. BB 01000000 mov ebx, 1 ; 计数器ebx=1
00645770 |> 8D4D EC /lea ecx, [ebp-14]
00645773 |. 8B45 FC |mov eax, [ebp-4] ; 用户名
00645776 |. 0FB64418 FF |movzx eax, byte ptr [eax+ebx-1] ; 逐个取用户名ASCII码
0064577B |. 33D2 |xor edx, edx
0064577D |. E8 E249DCFF |call 0040A164
00645782 |. 8B55 EC |mov edx, [ebp-14] ; 用户名的码转成为字符串到edx
00645785 |. 8D45 F8 |lea eax, [ebp-8]
00645788 |. E8 93F5DBFF |call 00404D20
0064578D |. 43 |inc ebx
0064578E |. 4E |dec esi
0064578F |.^ 75 DF \jnz short 00645770
00645791 |> 8B45 F8 mov eax, [ebp-8] ; 用户名转化后的ASCII码字符串
00645794 |. E8 7FF5DBFF call 00404D18
00645799 |. 8BF0 mov esi, eax ; 计算转换后的位数
0064579B |. 85F6 test esi, esi
0064579D |. 7E 2C jle short 006457CB
0064579F |. BB 01000000 mov ebx, 1 ; 计数器ebx=1,开始新一轮的计算
006457A4 |> 8B45 F8 /mov eax, [ebp-8]
006457A7 |. E8 6CF5DBFF |call 00404D18 ; 计算位数
006457AC |. 2BC3 |sub eax, ebx ; 位数-计数值
006457AE |. 8B55 F8 |mov edx, [ebp-8] ; 放到edx
006457B1 |. 8A1402 |mov dl, [edx+eax] ; 取最后一位出来
006457B4 |. 8D45 E8 |lea eax, [ebp-18]
006457B7 |. E8 84F4DBFF |call 00404C40
006457BC |. 8B55 E8 |mov edx, [ebp-18]
006457BF |. 8D45 F4 |lea eax, [ebp-C] ;这个循环是把上面计算得到的ASCII码字符串倒过来
006457C2 |. E8 59F5DBFF |call 00404D20
006457C7 |. 43 |inc ebx
006457C8 |. 4E |dec esi
006457C9 |.^ 75 D9 \jnz short 006457A4
006457CB |> 8D45 F8 lea eax, [ebp-8]
006457CE |. 50 push eax
006457CF |. B9 04000000 mov ecx, 4
006457D4 |. BA 01000000 mov edx, 1
006457D9 |. 8B45 F4 mov eax, [ebp-C] ; 全部倒过来了,
006457DC |. E8 97F7DBFF call 00404F78
006457E1 |. 8D45 F4 lea eax, [ebp-C]
006457E4 |. 50 push eax
006457E5 |. B9 04000000 mov ecx, 4 ; 这里的ecx意思是取四位
006457EA |. BA 05000000 mov edx, 5 ; edx意思是从那一串字符串的第5位开始取
006457EF |. 8B45 F4 mov eax, [ebp-C] ; 把倒过来后的字符串放到eax。准备按上面的ecx和edx取字符
006457F2 |. E8 81F7DBFF call 00404F78
006457F7 |. 8B45 F8 mov eax, [ebp-8] ; 取前面4位
006457FA |. E8 19F5DBFF call 00404D18
006457FF |. 83F8 04 cmp eax, 4
00645802 |. 7D 2F jge short 00645833
00645804 |. 8B45 F8 mov eax, [ebp-8]
00645807 |. E8 0CF5DBFF call 00404D18
0064580C |. 8BD8 mov ebx, eax
0064580E |. 83FB 03 cmp ebx, 3
00645811 |. 7F 20 jg short 00645833
00645813 |> 8D4D E4 /lea ecx, [ebp-1C]
00645816 |. 8BC3 |mov eax, ebx
00645818 |. C1E0 02 |shl eax, 2
0064581B |. 33D2 |xor edx, edx
0064581D |. E8 4249DCFF |call 0040A164
00645822 |. 8B55 E4 |mov edx, [ebp-1C]
00645825 |. 8D45 F8 |lea eax, [ebp-8]
00645828 |. E8 F3F4DBFF |call 00404D20
0064582D |. 43 |inc ebx
0064582E |. 83FB 04 |cmp ebx, 4
00645831 |.^ 75 E0 \jnz short 00645813
00645833 |> 8B45 F4 mov eax, [ebp-C] ; 这里的结果作为 真码的后面4位
00645836 |. E8 DDF4DBFF call 00404D18
0064583B |. 83F8 04 cmp eax, 4
0064583E |. 7D 2F jge short 0064586F
00645840 |. 8B45 F4 mov eax, [ebp-C]
00645843 |. E8 D0F4DBFF call 00404D18
00645848 |. 8BD8 mov ebx, eax
0064584A |. 83FB 03 cmp ebx, 3
0064584D |. 7F 20 jg short 0064586F
0064584F |> 8D4D E0 /lea ecx, [ebp-20]
00645852 |. 8BC3 |mov eax, ebx
00645854 |. C1E0 02 |shl eax, 2
00645857 |. 33D2 |xor edx, edx
00645859 |. E8 0649DCFF |call 0040A164
0064585E |. 8B55 E0 |mov edx, [ebp-20]
00645861 |. 8D45 F4 |lea eax, [ebp-C]
00645864 |. E8 B7F4DBFF |call 00404D20
00645869 |. 43 |inc ebx
0064586A |. 83FB 04 |cmp ebx, 4
0064586D |.^ 75 E0 \jnz short 0064584F
0064586F |> 8D45 F0 lea eax, [ebp-10]
00645872 |. BA FC586400 mov edx, 006458FC ; 固定字符串dp30268d58k
00645877 |. E8 74F2DBFF call 00404AF0
0064587C |. 8D45 DC lea eax, [ebp-24]
0064587F |. 50 push eax
00645880 |. B9 04000000 mov ecx, 4
00645885 |. BA 01000000 mov edx, 1
0064588A |. 8B45 F0 mov eax, [ebp-10] ;
0064588D |. E8 E6F6DBFF call 00404F78
00645892 |. FF75 DC push dword ptr [ebp-24] ; 取出固定字符串的前4位dp30
00645895 |. 68 10596400 push 00645910 ; - 划一个连接号
0064589A |. FF75 F8 push dword ptr [ebp-8] ; 取出用户名ASCII码倒过来后的前4位
0064589D |. 8D45 D8 lea eax, [ebp-28]
006458A0 |. 50 push eax
006458A1 |. B9 05000000 mov ecx, 5
006458A6 |. BA 05000000 mov edx, 5
006458AB |. 8B45 F0 mov eax, [ebp-10] ; 又是刚才的固定字符串dp30268d58k
006458AE |. E8 C5F6DBFF call 00404F78
006458B3 |. FF75 D8 push dword ptr [ebp-28] ; 从第5位开始,再取5位268d5
006458B6 |. 68 10596400 push 00645910 ; - 划一个连接号
006458BB |. FF75 F4 push dword ptr [ebp-C] ; 取出用户名ASCII码倒过来后的4~8位
006458BE |. 8BC7 mov eax, edi
006458C0 |. BA 06000000 mov edx, 6
006458C5 |. E8 0EF5DBFF call 00404DD8
006458CA |. 33C0 xor eax, eax
006458CC |. 5A pop edx
006458CD |. 59 pop ecx
006458CE |. 59 pop ecx
006458CF |. 64:8910 mov fs:[eax], edx
006458D2 |. 68 EC586400 push 006458EC
006458D7 |> 8D45 D8 lea eax, [ebp-28]
006458DA |. BA 0A000000 mov edx, 0A
006458DF |. E8 98F1DBFF call 00404A7C
006458E4 \. C3 retn
VB的注册机算法等下写写看看。
------------------------------------------------------------------------
【算法总结】
1、把用户名每位的ASCII码连接成一个字符串,记为A
2、把得到的字符串A倒过来,记为B
3、取固定字符串DP30268d58K的头4位作为真码的头4位,记为N1
4、取字符串B的前4位作为N2a
5、取固定字符串DP30268d58K的5~9位268d5 N2a+268d5=N2
6、从字符串B的第5位开始取4位连续字符作为真码的后4位,记为N3
7、真码为:N1-N2-N3
pediy
Dp30-9796268d5-4656
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!