首页
社区
课程
招聘
[旧帖] 里诺仓库3000(单机版)简单算法,学算法的新手们看看吧 0.00雪花
发表于: 2006-10-14 21:10 4736

[旧帖] 里诺仓库3000(单机版)简单算法,学算法的新手们看看吧 0.00雪花

2006-10-14 21:10
4736
【破文标题】里诺仓库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

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
2
哦,不错,顶一下
2006-10-14 22:36
0
雪    币: 212
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
算法一并放出来
2006-10-15 00:02
0
游客
登录 | 注册 方可回帖
返回
//