频道栏目
首页 > 资讯 > 加密破解 > 正文

佳宜仓库管理软件算法分析

09-03-31        来源:[db:作者]  
收藏   我要投稿

【破文标题】佳宜仓库算法分析及注册机编写
【破文作者】shine
【破解平台】winxpsp3
【破解工具】PEiD0.94、TheOD
【作者邮箱】kuailenanhai-1@163.com
【软件名称】佳宜仓库管理软件V3.48 (企业版)
【软件大小】4.11M
【原版下载】http://www3.skycn.com/soft/18980.html
【软件简介】佳宜仓库管理软件参考了各类仓库管理软件精华,溶入了各自
的优点并采纳众多用户的宝 贵意见,真正地从用户的需要出发,为客户需要而设计。本软件适用于中小型企业、商场、生产厂等物资供销、商品流通部门进行物资(商品)的采购、销售、库存的管理。主要功能包括进采购、采购退货、销售、销售退货、物料领用、领料退回、库存盘点、仓库调拨、借入、借出、借入还出、借出还入,供方客户资料管理,供方供货汇总、明细报表,客户供货汇总、明细报表,部门领用汇总、明细报表、仓库汇总、明细报表。销售毛利汇总明细报表,销售年报表等多种报表,使公司业务情况一目了然。本系统采用安全稳定的数据库管理系统设计而成,介面友好,所见即所得,操作简便,多级密码设置及备份功能,数据安全可靠,全真模拟显示功能,经营业务管理成熟,汇集了许多优秀企业的成功管理经验。

1.PEID-----Borland Delphi 6.0 - 7.0

2.OD载入,可以用查找字符串,F12堆栈调用,查找按钮事件到达关键处。

=========================================================================================
005EE780   > A1 A4C66800   mov eax, dword ptr ds:[68C6A4]
005EE785   .  8B00          mov eax, dword ptr ds:[eax]              ;  eax=CA5D-36Q8
005EE787   .  E8 4468E1FF   call DepotMan.00404FD0
005EE78C   .  50            push eax
005EE78D   .  8D55 E4       lea edx, dword ptr ss:[ebp-1C]
005EE790   .  8B45 FC       mov eax, dword ptr ss:[ebp-4]
005EE793   .  8B80 F4020000 mov eax, dword ptr ds:[eax+2F4]
005EE799   .  E8 FE07E6FF   call DepotMan.0044EF9C                   ;  取机器码
005EE79E   .  8B45 E4       mov eax, dword ptr ss:[ebp-1C]           ;  机器码给eax
005EE7A1   .  E8 2A68E1FF   call DepotMan.00404FD0
005EE7A6   .  50            push eax
005EE7A7   .  E8 640AFFFF   call <jmp.&PunUnitLib.GetRegPass>        ;  算法call,F7进
005EE7AC   .  8BD0          mov edx, eax
005EE7AE   .  8D45 F8       lea eax, dword ptr ss:[ebp-8]
005EE7B1   .  E8 5A65E1FF   call DepotMan.00404D10
005EE7B6   .  8D55 DC       lea edx, dword ptr ss:[ebp-24]
005EE7B9   .  8B45 FC       mov eax, dword ptr ss:[ebp-4]
005EE7BC   .  8B80 FC020000 mov eax, dword ptr ds:[eax+2FC]
005EE7C2   .  E8 D507E6FF   call DepotMan.0044EF9C
005EE7C7   .  8B45 DC       mov eax, dword ptr ss:[ebp-24]
005EE7CA   .  8D55 E0       lea edx, dword ptr ss:[ebp-20]
005EE7CD   .  E8 4EAFE1FF   call DepotMan.00409720
005EE7D2   .  8B45 E0       mov eax, dword ptr ss:[ebp-20]
005EE7D5   .  8B55 F8       mov edx, dword ptr ss:[ebp-8]
005EE7D8   .  E8 3F67E1FF   call DepotMan.00404F1C
005EE7DD   .  0F85 FE000000 jnz DepotMan.005EE8E1                    ;  关键跳
=========================================================================================
F7进005EE7A7处call来到下面
=========================================================================================
00889046    E8 65B5F8FF     call PunUnitL.008145B0
0088904B    8D45 F0         lea eax, dword ptr ss:[ebp-10]
0088904E    8B55 08         mov edx, dword ptr ss:[ebp+8]            ; 机器码给edx
00889051    E8 4AB7F8FF     call PunUnitL.008147A0                   ; edx清零
00889056    8B45 F0         mov eax, dword ptr ss:[ebp-10]           ; 机器码给eax
00889059    E8 0AB8F8FF     call PunUnitL.00814868                   ; 计算长度放eax=E
0088905E    8BF0            mov esi, eax                             ; esi=E
00889060    85F6            test esi, esi
00889062    7E 26           jle short PunUnitL.0088908A
00889064    BB 01000000     mov ebx, 1                               ; EBX=1
00889069    8D4D E8         lea ecx, dword ptr ss:[ebp-18]
0088906C    8B45 F0         mov eax, dword ptr ss:[ebp-10]           ; EAX是机器码
0088906F    0FB64418 FF     movzx eax, byte ptr ds:[eax+ebx-1]       ; 逐位取ascii值给eax
00889074    33D2            xor edx, edx                             ; edx清零
00889076    E8 F905F9FF     call PunUnitL.00819674                   ; ecx清零
0088907B    8B55 E8         mov edx, dword ptr ss:[ebp-18]           ; ascii值给edx
0088907E    8D45 FC         lea eax, dword ptr ss:[ebp-4]
00889081    E8 EAB7F8FF     call PunUnitL.00814870
00889086    43              inc ebx
00889087    4E              dec esi
00889088  ^ 75 DF           jnz short PunUnitL.00889069
0088908A    8B45 FC         mov eax, dword ptr ss:[ebp-4]            ; ascii值排列给eax
0088908D    E8 D6B7F8FF     call PunUnitL.00814868                   ; 1C是ascii长度
00889092    8BF0            mov esi, eax
00889094    85F6            test esi, esi
00889096    7E 2C           jle short PunUnitL.008890C4
00889098    BB 01000000     mov ebx, 1                               ; ebx=1
0088909D    8B45 FC         mov eax, dword ptr ss:[ebp-4]            ; ascii值排列给eax
008890A0    E8 C3B7F8FF     call PunUnitL.00814868
008890A5    2BC3            sub eax, ebx                             ; 1c-1,EBX玄幻一次加一
008890A7    8B55 FC         mov edx, dword ptr ss:[ebp-4]            ; 取前两个47给edx
008890AA    8A1402          mov dl, byte ptr ds:[edx+eax]            ; 取后一位的7的ascii37给dl
008890AD    8D45 E4         lea eax, dword ptr ss:[ebp-1C]
008890B0    E8 DBB6F8FF     call PunUnitL.00814790
008890B5    8B55 E4         mov edx, dword ptr ss:[ebp-1C]
008890B8    8D45 F8         lea eax, dword ptr ss:[ebp-8]
008890BB    E8 B0B7F8FF     call PunUnitL.00814870
008890C0    43              inc ebx
008890C1    4E              dec esi
008890C2  ^ 75 D9           jnz short PunUnitL.0088909D
008890C4    8D45 FC         lea eax, dword ptr ss:[ebp-4]
008890C7    50              push eax
008890C8    B9 04000000     mov ecx, 4                               ; ECX=4
008890CD    BA 01000000     mov edx, 1                               ; EDX=1
008890D2    8B45 F8         mov eax, dword ptr ss:[ebp-8]            ; 倒序后给eax
008890D5    E8 E6B9F8FF     call PunUnitL.00814AC0                   ; ecx=0
008890DA    8D45 F8         lea eax, dword ptr ss:[ebp-8]
008890DD    50              push eax
008890DE    B9 04000000     mov ecx, 4                               ; ECX=4
008890E3    BA 05000000     mov edx, 5                               ; edx=5
008890E8    8B45 F8         mov eax, dword ptr ss:[ebp-8]            ; 倒序后给eax
008890EB    E8 D0B9F8FF     call PunUnitL.00814AC0
008890F0    8B45 FC         mov eax, dword ptr ss:[ebp-4]            ; 取前四位7475
008890F3    E8 70B7F8FF     call PunUnitL.00814868                   ; 计算位数给eax
008890F8    83F8 04         cmp eax, 4
008890FB    7D 2F           jge short PunUnitL.0088912C              ; 大于等于四位就跳
008890FD    8B45 FC         mov eax, dword ptr ss:[ebp-4]
00889100    E8 63B7F8FF     call PunUnitL.00814868
00889105    8BD8            mov ebx, eax
00889107    83FB 03         cmp ebx, 3
0088910A    7F 20           jg short PunUnitL.0088912C
0088910C    8D4D E0         lea ecx, dword ptr ss:[ebp-20]
0088910F    8BC3            mov eax, ebx
00889111    C1E0 02         shl eax, 2
00889114    33D2            xor edx, edx
00889116    E8 5905F9FF     call PunUnitL.00819674
0088911B    8B55 E0         mov edx, dword ptr ss:[ebp-20]
0088911E    8D45 FC         lea eax, dword ptr ss:[ebp-4]
00889121    E8 4AB7F8FF     call PunUnitL.00814870
00889126    43              inc ebx
00889127    83FB 04         cmp ebx, 4
0088912A  ^ 75 E0           jnz short PunUnitL.0088910C
0088912C    8B45 F8         mov eax, dword ptr ss:[ebp-8]            ; 再取四位E403
0088912F    E8 34B7F8FF     call PunUnitL.00814868
00889134    83F8 04         cmp eax, 4                               ; 是不是大于四
00889137    7D 2F           jge short PunUnitL.00889168              ; 大就跳
00889139    8B45 F8         mov eax, dword ptr ss:[ebp-8]
0088913C    E8 27B7F8FF     call PunUnitL.00814868
00889141    8BD8            mov ebx, eax
00889143    83FB 03         cmp ebx, 3
00889146    7F 20           jg short PunUnitL.00889168
00889148    8D4D DC         lea ecx, dword ptr ss:[ebp-24]
0088914B    8BC3            mov eax, ebx
0088914D    C1E0 02         shl eax, 2
00889150    33D2            xor edx, edx
00889152    E8 1D05F9FF     call PunUnitL.00819674
00889157    8B55 DC         mov edx, dword ptr ss:[ebp-24]
0088915A    8D45 F8         lea eax, dword ptr ss:[ebp-8]
0088915D    E8 0EB7F8FF     call PunUnitL.00814870
00889162    43              inc ebx
00889163    83FB 04         cmp ebx, 4
00889166  ^ 75 E0           jnz short PunUnitL.00889148
00889168    8D45 D8         lea eax, dword ptr ss:[ebp-28]           ; 取固定码
0088916B    8B55 0C         mov edx, dword ptr ss:[ebp+C]            ; CA9D-36Q8
0088916E    E8 2DB6F8FF     call PunUnitL.008147A0                   ; edx=0
00889173    8B45 D8         mov eax, dword ptr ss:[ebp-28]           ; eax=CA9D-36Q8
00889176    8D55 F4         lea edx, dword ptr ss:[ebp-C]
00889179    E8 DE03F9FF     call PunUnitL.0081955C
0088917E    8D45 D4         lea eax, dword ptr ss:[ebp-2C]
00889181    50              push eax
00889182    B9 04000000     mov ecx, 4                               ; ecx=4
00889187    BA 01000000     mov edx, 1                               ; edx=1
0088918C    8B45 F4         mov eax, dword ptr ss:[ebp-C]            ; eax=CA9D-36Q8
0088918F    E8 2CB9F8FF     call PunUnitL.00814AC0
00889194    FF75 D4         push dword ptr ss:[ebp-2C]               ; CA9D
00889197    68 0C928800     push PunUnitL.0088920C
0088919C    FF75 FC         push dword ptr ss:[ebp-4]                ; 7475
0088919F    8D45 D0         lea eax, dword ptr ss:[ebp-30]
008891A2    50              push eax
008891A3    B9 05000000     mov ecx, 5                               ; ecx=5
008891A8    BA 05000000     mov edx, 5                               ; edx=5
008891AD    8B45 F4         mov eax, dword ptr ss:[ebp-C]            ; eax=CA9D-36Q8
008891B0    E8 0BB9F8FF     call PunUnitL.00814AC0
008891B5    FF75 D0         push dword ptr ss:[ebp-30]               ; -36Q8
008891B8    68 0C928800     push PunUnitL.0088920C
008891BD    FF75 F8         push dword ptr ss:[ebp-8]                ; E403
008891C0    8D45 EC         lea eax, dword ptr ss:[ebp-14]
008891C3    BA 06000000     mov edx, 6
008891C8    E8 5BB7F8FF     call PunUnitL.00814928
008891CD    8B45 EC         mov eax, dword ptr ss:[ebp-14]
008891D0    E8 8BB8F8FF     call PunUnitL.00814A60                   ; 最后连接成19位注册码
===========================================================================================
固定码:CA5D-36Q8
===========================================================================================
算法步骤:
1.机器码转换成Ascii值;
2.各位Ascii字符倒序排列;
3.取排列后的前八位,前四位记做sreg1,后四位sreg2;
4.CA5D放第一位,sreg1第二位,36Q8第三位,sreg2第四位,中间用‘-’号连接,生成注册码。
//=========================================================================================
//delphi注册机源码
//=========================================================================================
var
sreg2,sreg1,s1,s2,reg:string;
i,iasc:integer;
sasci:string;           //声明变量
begin
if length(edit1.Text)> 0 then
 begin
s1:=edit1.Text;
for i := 1 to length(s1) do
   begin
   iasc:=ord(s1[i]);
   s2:=s2+Format(%.2x,[Ord(iasc)]); //将Ascii转化为字符
   end;
sasci:=ReverseString(s2); //倒序后的字符串

sreg1:=copy(sasci,1,4);
sreg2:=copy(sasci,5,4);
reg:=CA5D+-+sreg1+-+36Q8+-+sreg2; //生成注册码

edit2.Text:=reg;//输出注册码
 end;
//============================================================================================


我的机器码:GEK854RH1W0NWG

注册码: CA5D-7475-36Q8-E403

 

PS:以前老版本(V2.87)注册方法有点不同,只是固定码为CA9D-36Q8,其他的算法都一样。

注册码保存在:softwarexajyjydepot

相关TAG标签
上一篇:管中窥豹2.05英文版破解教程
下一篇:虚拟机的安装教程+FTP搭建
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站