gg1211 发表于 2006-3-16 13:59:23

佳宜采购管理软件 1.50注册算法破解分析

【破文作者】gg1211
【破解平台】WinXp
【作者邮箱】[email protected]
【破解工具】PEiD 、OD
【保护方式】用户名+机器码+序列号
【破解目的】学习简单算法破解
【破解声明】我乃小菜鸟一只,偶得一点心得,愿与大家分享:)
【软件名称】佳宜采购管理软件 1.50
【下载地址】http://www.onlinedown.net/soft/39236.htm
【软件简介】采购管理软件参考了各类采购管理软件精华,溶入了各自的优点并采纳众多用户的宝贵意见,真正地从用户的需要出发,为客户需要而设计。
   本软件提供了完备的采购管理功能,包括采购管理(采购订货、采购收货、退货管理、付款登记)、基本信息(公司基本资料、供货商资料、货品资料、业务员、其他基础置)、单据查询(订货单查询、收货单查询、付款单查询)、系统维护(操作权限、数据备份及恢复、数据压缩、数据清理)等功能。
本系统采用安全稳定的数据库管理系统设计而成,介面友好,所见即所得,操作简便,多级密码设置及备份功能,数据安全可靠,全真模拟显示功能,经营业务管理成熟,汇集了许多优秀企业的成功管理经验。
现已广泛应用于:大中小型企业集团、工厂、进出口公司`、五交化公司、商场、购物中心、酒店、连锁店、专卖店、批发部;化工、建材、五金水电、医药、汽配、食品、服装、电子、电脑、图书、仓储、化装品等行业...
【破解步骤】先用PEiD 侦测,发现无壳
od载入
试验码gg1211
123456789
005E00AC   .55            push    ebp            这里下断
005E00AD   .68 12035E00   push    005E0312
005E00B2   .64:FF30       push    dword ptr fs:
005E00B5   .64:8920       mov   fs:, esp
005E00B8   .8D55 F0       lea   edx,
005E00BB   .8B45 FC       mov   eax,
005E00BE   .8B80 04030000 mov   eax,
005E00C4   .E8 D7EEE6FF   call    0044EFA0   \\计算用户名位数
005E00C9   .8B45 F0       mov   eax,
005E00CC   .8D55 F4       lea   edx,
005E00CF   .E8 4C96E2FF   call    00409720
005E00D4   .837D F4 00    cmp   dword ptr , 0\\ 判断用户名是否为空,空则死
005E00D8   .75 22         jnz   short 005E00FC
005E00DA   .6A 00         push    0
005E00DC   .68 20035E00   push    005E0320   \\ 请填写用户名称!
005E00E1   .E8 7E0AFFFF   call    <jmp.&PunUnitLib.ShowMess>
005E00E6   .8B45 FC       mov   eax,
005E00E9   .8B80 04030000 mov   eax,
005E00EF   .8B10          mov   edx,
005E00F1   .FF92 C0000000 call   
005E00F7   .E9 B1010000   jmp   005E02AD
005E00FC   >8D55 E8       lea   edx,
005E00FF   .8B45 FC       mov   eax,
005E0102   .8B80 FC020000 mov   eax,
005E0108   .E8 93EEE6FF   call    0044EFA0         \\计算注册码位数
005E010D   .8B45 E8       mov   eax,
005E0110   .8D55 EC       lea   edx,
005E0113   .E8 0896E2FF   call    00409720
005E0118   .837D EC 00    cmp   dword ptr , 0 \\ 判断注册码是否为空,是则死
005E011C   .75 22         jnz   short 005E0140
005E011E   .6A 00         push    0
005E0120   .68 34035E00   push    005E0334    \\ 授权号不能为空,请填写授权号!
005E0125   .E8 3A0AFFFF   call    <jmp.&PunUnitLib.ShowMess>
005E012A   .8B45 FC       mov   eax,
005E012D   .8B80 FC020000 mov   eax,
005E0133   .8B10          mov   edx,
005E0135   .FF92 C0000000 call                         
005E013B   .E9 6D010000   jmp   005E02AD
005E0140   >A1 38C56300   mov   eax,
005E0145   .8B00          mov   eax,
005E0147   .E8 844EE2FF   call    00404FD0
005E014C   .50            push    eax
005E014D   .8D55 E4       lea   edx,
005E0150   .8B45 FC       mov   eax,
005E0153   .8B80 F4020000 mov   eax,
005E0159   .E8 42EEE6FF   call    0044EFA0
005E015E   .8B45 E4       mov   eax, \\ 取机器码给eax参与运算
005E0161   .E8 6A4EE2FF   call    00404FD0
005E0166   .50            push    eax
005E0167   .E8 280AFFFF   call    <jmp.&PunUnitLib.GetRegPass> \\ 关键call进
005E016C   .8BD0          mov   edx, eax      \\可以作内存注册机
005E016E   .8D45 F8       lea   eax, \\但是我们研究算法键
005E0171   .E8 9A4BE2FF   call    00404D10      \\关键call跟进
005E0176   .8D55 DC       lea   edx,
005E0179   .8B45 FC       mov   eax,
005E017C   .8B80 FC020000 mov   eax,
005E0182   .E8 19EEE6FF   call    0044EFA0
005E0187   .8B45 DC       mov   eax,
005E018A   .8D55 E0       lea   edx,
005E018D   .E8 8E95E2FF   call    00409720
005E0192   .8B45 E0       mov   eax,     \\ 假码
005E0195   .8B55 F8       mov   edx,    \\ 真码
005E0198   .E8 7F4DE2FF   call    00404F1C   \\比较
005E019D   .0F85 FE000000 jnz   005E02A1       \\关键跳转
005E01A3   .33C0          xor   eax, eax
005E01A5   .55            push    ebp
005E01A6   .68 8D025E00   push    005E028D
005E01AB   .64:FF30       push    dword ptr fs:
005E01AE   .64:8920       mov   fs:, esp
005E01B1   .B2 01         mov   dl, 1
005E01B3   .A1 1C2F4700   mov   eax,
005E01B8   .E8 CB2EE9FF   call    00473088
005E01BD   .8BD8          mov   ebx, eax
005E01BF   .BA 02000080   mov   edx, 80000002
005E01C4   .8BC3          mov   eax, ebx
005E01C6   .E8 992FE9FF   call    00473164
005E01CB   .B1 01         mov   cl, 1
005E01CD   .8B15 70B96300 mov   edx,                ;stockMan.005DFFF4
005E01D3   .8BC3          mov   eax, ebx
005E01D5   .E8 CE30E9FF   call    004732A8
005E01DA   .8D55 D8       lea   edx,
005E01DD   .8B45 FC       mov   eax,
005E01E0   .8B80 04030000 mov   eax,
005E01E6   .E8 B5EDE6FF   call    0044EFA0
005E01EB   .8B4D D8       mov   ecx,
005E01EE   .BA 5C035E00   mov   edx, 005E035C               ;username
005E01F3   .8BC3          mov   eax, ebx
005E01F5   .E8 4A32E9FF   call    00473444
005E01FA   .8D55 D0       lea   edx,
005E01FD   .8B45 FC       mov   eax,
005E0200   .8B80 F4020000 mov   eax,
005E0206   .E8 95EDE6FF   call    0044EFA0
005E020B   .8B45 D0       mov   eax,
005E020E   .E8 BD4DE2FF   call    00404FD0
005E0213   .50            push    eax
005E0214   .E8 7309FFFF   call    <jmp.&PunUnitLib.SavePass>
005E0219   .8BD0          mov   edx, eax
005E021B   .8D45 D4       lea   eax,
005E021E   .E8 ED4AE2FF   call    00404D10
005E0223   .8B4D D4       mov   ecx,
005E0226   .BA 70035E00   mov   edx, 005E0370               ;signcode
005E022B   .8BC3          mov   eax, ebx
005E022D   .E8 1232E9FF   call    00473444
005E0232   .8B45 F8       mov   eax,
005E0235   .E8 964DE2FF   call    00404FD0
005E023A   .50            push    eax
005E023B   .E8 4C09FFFF   call    <jmp.&PunUnitLib.SavePass>
005E0240   .8BD0          mov   edx, eax
005E0242   .8D45 CC       lea   eax,
005E0245   .E8 C64AE2FF   call    00404D10
005E024A   .8B4D CC       mov   ecx,
005E024D   .BA 84035E00   mov   edx, 005E0384               ;regcode
005E0252   .8BC3          mov   eax, ebx
005E0254   .E8 EB31E9FF   call    00473444
005E0259   .8BC3          mov   eax, ebx
005E025B   .E8 CC39E2FF   call    00403C2C
005E0260   .6A 00         push    0
005E0262   .68 8C035E00   push    005E038C; 系统注册成功,欢迎你使用本软件!
005E0267   .E8 F808FFFF   call    <jmp.&PunUnitLib.ShowMess>
005E026C   .A1 34C56300   mov   eax,
005E0271   .C700 02000000 mov   dword ptr , 2
005E0277   .A1 ECC26300   mov   eax,
005E027C   .8B00          mov   eax,
005E027E   .E8 7108E9FF   call    00470AF4
005E0283   .33C0          xor   eax, eax
005E0285   .5A            pop   edx
005E0286   .59            pop   ecx
005E0287   .59            pop   ecx
005E0288   .64:8910       mov   fs:, edx
005E028B   .EB 20         jmp   short 005E02AD
005E028D   .^ E9 7A3EE2FF   jmp   0040410C
005E0292   .8B45 FC       mov   eax,
005E0295   .E8 AACFE8FF   call    0046D244
005E029A   .E8 9942E2FF   call    00404538
005E029F   .EB 0C         jmp   short 005E02AD
005E02A1   >6A 03         push    3
005E02A3   .68 B0035E00   push    005E03B0                      ;系统注册失败,请检查注册是否有误!


由上分析找到了关键call,跟进
来到这里005D0B94   $- FF25 4C0B6400 jmp   [<&PunUnitLib.GetRegPass>]    ;PunUnitL.GetRegPass
005D0B9A      8BC0          mov   eax, eax
005D0B9C   $- FF25 480B6400 jmp   [<&PunUnitLib.DispFormPos>]   ;PunUnitL.DispFormPos
005D0BA2      8BC0          mov   eax, eax
005D0BA4      FF            db      FF
005D0BA5      FF            db      FF
005D0BA6      FF            db      FF

f8来到这里
003E9024 >55            push    ebp
003E9025    8BEC            mov   ebp, esp
003E9027    B9 06000000   mov   ecx, 6
003E902C    6A 00         push    0
003E902E    6A 00         push    0
003E9030    49            dec   ecx
003E9031^ 75 F9         jnz   short 003E902C
003E9033    53            push    ebx
003E9034    56            push    esi
003E9035    33C0            xor   eax, eax
003E9037    55            push    ebp
003E9038    68 F2913E00   push    003E91F2
003E903D    64:FF30         push    dword ptr fs:
003E9040    64:8920         mov   fs:, esp
003E9043    8D45 EC         lea   eax,
003E9046    E8 65B5F8FF   call    003745B0
003E904B    8D45 F0         lea   eax,
003E904E    8B55 08         mov   edx,
003E9051    E8 4AB7F8FF   call    003747A0
003E9056    8B45 F0         mov   eax,
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         \\这里进行循环,将机器码字符窜转换位他对应的asc字符串,假设位a
003E9069    8D4D E8         lea   ecx,
003E906C    8B45 F0         mov   eax,
003E906F    0FB64418 FF   movzx   eax, byte ptr
003E9074    33D2            xor   edx, edx
003E9076    E8 F905F9FF   call    00379674
003E907B    8B55 E8         mov   edx,
003E907E    8D45 FC         lea   eax,
003E9081    E8 EAB7F8FF   call    00374870
003E9086    43            inc   ebx
003E9087    4E            dec   esi
003E9088^ 75 DF         jnz   short 003E9069   \\循环借宿
003E908A    8B45 FC         mov   eax,
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, \\这里将a颠倒,变换后假设为b
003E90A0    E8 C3B7F8FF   call    00374868
003E90A5    2BC3            sub   eax, ebx
003E90A7    8B55 FC         mov   edx,
003E90AA    8A1402          mov   dl,
003E90AD    8D45 E4         lea   eax,
003E90B0    E8 DBB6F8FF   call    00374790
003E90B5    8B55 E4         mov   edx,
003E90B8    8D45 F8         lea   eax,
003E90BB    E8 B0B7F8FF   call    00374870
003E90C0    43            inc   ebx
003E90C1    4E            dec   esi
003E90C2^ 75 D9         jnz   short 003E909D    \\循环借宿
003E90C4    8D45 FC         lea   eax,
003E90C7    50            push    eax
003E90C8    B9 04000000   mov   ecx, 4
003E90CD    BA 01000000   mov   edx, 1
003E90D2    8B45 F8         mov   eax,
003E90D5    E8 E6B9F8FF   call    00374AC0    \\取b的前四位,假设为c

003E90DA    8D45 F8         lea   eax,
003E90DD    50            push    eax
003E90DE    B9 04000000   mov   ecx, 4
003E90E3    BA 05000000   mov   edx, 5
003E90E8    8B45 F8         mov   eax,
003E90EB    E8 D0B9F8FF   call    00374AC0\\取b的5-8位,假设位d
003E90F0    8B45 FC         mov   eax,
003E90F3    E8 70B7F8FF   call    00374868
003E90F8    83F8 04         cmp   eax, 4
003E90FB    7D 2F         jge   short 003E912C
003E90FD    8B45 FC         mov   eax,
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,
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,
003E911E    8D45 FC         lea   eax,
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,
003E912F    E8 34B7F8FF   call    00374868
003E9134    83F8 04         cmp   eax, 4
003E9137    7D 2F         jge   short 003E9168
003E9139    8B45 F8         mov   eax,
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,
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,
003E915A    8D45 F8         lea   eax,
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,
003E916B    8B55 0C         mov   edx,
003E916E    E8 2DB6F8FF   call    003747A0
003E9173    8B45 D8         mov   eax,
003E9176    8D55 F4         lea   edx,
003E9179    E8 DE03F9FF   call    0037955C
003E917E    8D45 D4         lea   eax,
003E9181    50            push    eax
003E9182    B9 04000000   mov   ecx, 4
003E9187    BA 01000000   mov   edx, 1
003E918C    8B45 F4         mov   eax,
003E918F    E8 2CB9F8FF   call    00374AC0    \\取常量c26d-q628的前四位,假设位e
003E9194    FF75 D4         push    dword ptr
003E9197    68 0C923E00   push    003E920C
003E919C    FF75 FC         push    dword ptr
003E919F    8D45 D0         lea   eax,
003E91A2    50            push    eax
003E91A3    B9 05000000   mov   ecx, 5
003E91A8    BA 05000000   mov   edx, 5
003E91AD    8B45 F4         mov   eax,
003E91B0    E8 0BB9F8FF   call    00374AC0      \\取常量c26d-q628的后四位,假设位f
003E91B5    FF75 D0         push    dword ptr
003E91B8    68 0C923E00   push    003E920C
003E91BD    FF75 F8         push    dword ptr
003E91C0    8D45 EC         lea   eax,
003E91C3    BA 06000000   mov   edx, 6
003E91C8    E8 5BB7F8FF   call    00374928   \\将e,c,f,d按顺序用-连接,构成注册码
003E91CD    8B45 EC         mov   eax,
003E91D0    E8 8BB8F8FF   call    00374A60
003E91D5    8BD8            mov   ebx, eax
003E91D7    33C0            xor   eax, eax
003E91D9    5A            pop   edx
003E91DA    59            pop   ecx
003E91DB    59            pop   ecx
003E91DC    64:8910         mov   fs:, edx
003E91DF    68 F9913E00   push    003E91F9
003E91E4    8D45 D0         lea   eax,
003E91E7    BA 0C000000   mov   edx, 0C
003E91EC    E8 E3B3F8FF   call    003745D4
003E91F1    C3            retn
003E91F2^ E9 1DADF8FF   jmp   00373F14
003E91F7^ EB EB         jmp   short 003E91E4
003E91F9    8BC3            mov   eax, ebx
003E91FB    5E            pop   esi
003E91FC    5B            pop   ebx
003E91FD    8BE5            mov   esp, ebp
003E91FF    5D            pop   ebp
003E9200    C2 0800         retn    8


到了这里,分析就算完成了
他这个于用户名无关
注册码是直接由机器码和常量的来

通过以上分析知
我的注册码是C26D-1413-Q628-D473

风飘雪 发表于 2006-3-16 14:43:47

005E0192   .8B45 E0       mov   eax,     \\ 假码
005E0195   .8B55 F8       mov   edx,    \\ 真码
005E0198   .E8 7F4DE2FF   call    00404F1C   \\比较
005E019D   .0F85 FE000000 jnz   005E02A1       \\关键跳转
这种经典比较型的现在已经不多见了

yunfeng 发表于 2006-3-17 06:54:24

原帖由 风飘雪 于 2006-3-16 06:43 发表
005E0192   .8B45 E0       mov   eax,   \\ 假码
005E0195   .8B55 F8       mov   edx,    \\ 真码
005E0198   .E8 7F4DE2FF   call    00404F1C   \\比较
005E019D   .0F85 FE000000 jnz   ...
随着破解技术的提高,作者也更加精明了,将注册码分散比较.

yunfeng 发表于 2006-3-17 06:54:56

原帖由 风飘雪 于 2006-3-16 06:43 发表
005E0192   .8B45 E0       mov   eax,   \\ 假码
005E0195   .8B55 F8       mov   edx,    \\ 真码
005E0198   .E8 7F4DE2FF   call    00404F1C   \\比较
005E019D   .0F85 FE000000 jnz   ...
随着破解技术的提高,作者也更加精明了,将注册码分散比较.

wbhing 发表于 2006-3-17 12:20:58

学习学习,顶一下

chadd 发表于 2006-3-18 14:57:50

正在学习……

ynboyinkm 发表于 2006-7-29 09:50:42

注册了也没有用,有限制~~~~~
是不是还有一个注册码???
页: [1]
查看完整版本: 佳宜采购管理软件 1.50注册算法破解分析