- UID
- 2
注册时间2004-12-1
阅读权限255
最后登录1970-1-1
总坛主
TA的每日心情 | 开心 2024-12-1 11:04 |
---|
签到天数: 12 天 [LV.3]偶尔看看II
|
【破文标题】[PYG]算法分析入门第七课
【破文作者】飘云[PYG]
【作者主页】https://www.chinapyg.com
【破解平台】winxp
【破解工具】PEiD0.93、AspackDie、w32dasm、OD二哥修改版
【作者邮箱】[email protected]
【软件名称】佳宜仓库管理软件 V2.25 单机版
【软件大小】7169 KB
【原版下载】http://www3.skycn.com/soft/18980.html
【软件简介】本软件适用于中小型企业、商场、生产厂等物资供销、商品流通部门进行物资(商品)的采购、销售、库存的管理。主要功能包括进采购、采购退货、销售、销售退货、物料领用、领料退回、库存盘点、仓库调拨、借入、借出、借入还出、借出还入,供方客户资料管理,供方供货汇总、明细报表,客户供货汇总、明细报表,部门领用汇总、明细报表、仓库汇总、明细报表。
销售毛利汇总明细报表,销售年报表等多种报表,使公司业务情况一目了然。
本系统采用安全稳定的数据库管理系统设计而成,介面友好,所见即所得,操作简便,多级密码设置及备份功能,数据安全可靠,全真模拟显示功能,经营业务管理成熟,汇集了许多优秀企业的成功管理经验。
现已广泛应用于:鞋业、外贸企业、医药、汽配、食品、服装、电子、电脑等行业。
【分析过程】先用PEiD探测一下:没有加壳,Borland Delphi 6.0 - 7.0编写。
用W32找到关键:
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:005EF981(C), :005EF98B(C), :005EF995(C) ★就是从这些地方跳向死亡★
|
:005EFA99 6A03 push 00000003
* Possible StringData Ref from Code Obj ->"系统注册失败,请检查注册是否有误!"
*************************************************************************************************
输入假信息:
用户名:piaoyun
注册码:789456123abcde
用od载入来到关键代码处:
005EF92A . 8D55 DC lea edx,dword ptr ss:[ebp-24]
005EF92D . 8B45 F8 mov eax,dword ptr ss:[ebp-8]
005EF930 . E8 EB9DE1FF call DepotMan.00409720
005EF935 . 8B45 DC mov eax,dword ptr ss:[ebp-24] ; 假码入栈
005EF938 . E8 9B54E1FF call DepotMan.00404DD8 ; 计算假码位数
005EF93D . 83F8 0C cmp eax,0C ; 是否小于12位
005EF940 . 7E 3C jle short DepotMan.005EF97E ; 小于就没得玩了
005EF942 . 8B45 F8 mov eax,dword ptr ss:[ebp-8] ; [EBP-8]是假码
005EF945 . 8078 03 4D cmp byte ptr ds:[eax+3],4D ; 第4位是否为 4D(即字符“M”)
005EF949 . 74 04 je short DepotMan.005EF94F ; 是则跳(到底该不该跳呢?看下面的分析)
005EF94B . 33DB xor ebx,ebx
005EF94D . EB 02 jmp short DepotMan.005EF951
005EF94F > B3 01 mov bl,1 ; 跳到这里则bl=1
005EF951 > 8B45 F8 mov eax,dword ptr ss:[ebp-8]
005EF954 . 8078 05 44 cmp byte ptr ds:[eax+5],44 ; 第6位是否位44(即字符“D”)
005EF958 . 75 20 jnz short DepotMan.005EF97A ; 不是则跳
005EF95A . C645 F7 01 mov byte ptr ss:[ebp-9],1 ; 不跳则[EBP-9]=1
005EF95E . 8B45 F8 mov eax,dword ptr ss:[ebp-8]
005EF961 . 8078 09 46 cmp byte ptr ds:[eax+9],46 ; 第10位是否位46(即字符“F”)
005EF965 . 75 04 jnz short DepotMan.005EF96B ; 不是则跳
005EF967 . C645 F6 01 mov byte ptr ss:[ebp-A],1 ; 否则[EBP-A]=1
005EF96B > 8B45 F8 mov eax,dword ptr ss:[ebp-8]
005EF96E . 8078 0B 38 cmp byte ptr ds:[eax+B],38 ; 第12位是否为38(即十进制8)
005EF972 . 75 0A jnz short DepotMan.005EF97E ; 不是就跳
005EF974 . C645 F5 01 mov byte ptr ss:[ebp-B],1 ; 否则[EBP-B]=1
005EF978 . EB 04 jmp short DepotMan.005EF97E
005EF97A > C645 F7 00 mov byte ptr ss:[ebp-9],0 ; [EBP-9]等于0
005EF97E > 845D F7 test byte ptr ss:[ebp-9],bl ; bl为1就不跳
005EF981 . 0F84 12010000 je DepotMan.005EFA99 ; 跳则完蛋~
005EF987 . 807D F6 00 cmp byte ptr ss:[ebp-A],0 ; [EBP-A]是否为0
005EF98B . 0F84 08010000 je DepotMan.005EFA99 ; 不能跳
005EF991 . 807D F5 00 cmp byte ptr ss:[ebp-B],0 ; [EBP-B]是否为0
005EF995 . 0F84 FE000000 je DepotMan.005EFA99 ; 不能跳
★★★从这几句可分析出:前面的条件必须成立★★★
005EF99B . 33C0 xor eax,eax
005EF99D . 55 push ebp
005EF99E . 68 85FA5E00 push DepotMan.005EFA85 ; 以下是把用户名和机器码以及注册码加密换算后保存到注册表中
005EF9A3 . 64:FF30 push dword ptr fs:[eax]
005EF9A6 . 64:8920 mov dword ptr fs:[eax],esp
005EF9A9 . B2 01 mov dl,1
005EF9AB . A1 94304700 mov eax,dword ptr ds:[473094]
005EF9B0 . E8 4B38E8FF call DepotMan.00473200
005EF9B5 . 8BD8 mov ebx,eax
005EF9B7 . BA 02000080 mov edx,80000002
005EF9BC . 8BC3 mov eax,ebx
005EF9BE . E8 1939E8FF call DepotMan.004732DC
005EF9C3 . B1 01 mov cl,1
005EF9C5 . 8B15 B0DA6700 mov edx,dword ptr ds:[67DAB0] ; DepotMan.005EF7B0
005EF9CB . 8BC3 mov eax,ebx
005EF9CD . E8 4E3AE8FF call DepotMan.00473420
005EF9D2 . 8D55 D8 lea edx,dword ptr ss:[ebp-28]
005EF9D5 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
005EF9D8 . 8B80 0C030000 mov eax,dword ptr ds:[eax+30C]
005EF9DE . E8 8DF6E5FF call DepotMan.0044F070
005EF9E3 . 8B4D D8 mov ecx,dword ptr ss:[ebp-28]
005EF9E6 . BA 54FB5E00 mov edx,DepotMan.005EFB54 ; ASCII "UserName"
005EF9EB . 8BC3 mov eax,ebx
005EF9ED . E8 CA3BE8FF call DepotMan.004735BC
005EF9F2 . 8D55 D0 lea edx,dword ptr ss:[ebp-30]
005EF9F5 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
005EF9F8 . 8B80 F4020000 mov eax,dword ptr ds:[eax+2F4]
005EF9FE . E8 6DF6E5FF call DepotMan.0044F070
005EFA03 . 8B45 D0 mov eax,dword ptr ss:[ebp-30]
005EFA06 . E8 C555E1FF call DepotMan.00404FD0
005EFA0B . 50 push eax
005EFA0C . E8 970AFFFF call <jmp.&PunUnitLib.SavePass>
005EFA11 . 8BD0 mov edx,eax
005EFA13 . 8D45 D4 lea eax,dword ptr ss:[ebp-2C]
005EFA16 . E8 F552E1FF call DepotMan.00404D10
005EFA1B . 8B4D D4 mov ecx,dword ptr ss:[ebp-2C]
005EFA1E . BA 68FB5E00 mov edx,DepotMan.005EFB68 ; ASCII "SignCode"
005EFA23 . 8BC3 mov eax,ebx
005EFA25 . E8 923BE8FF call DepotMan.004735BC
005EFA2A . 8B45 F8 mov eax,dword ptr ss:[ebp-8]
005EFA2D . E8 9E55E1FF call DepotMan.00404FD0
005EFA32 . 50 push eax
005EFA33 . E8 700AFFFF call <jmp.&PunUnitLib.SavePass>
005EFA38 . 8BD0 mov edx,eax
005EFA3A . 8D45 CC lea eax,dword ptr ss:[ebp-34]
005EFA3D . E8 CE52E1FF call DepotMan.00404D10
005EFA42 . 8B4D CC mov ecx,dword ptr ss:[ebp-34]
005EFA45 . BA 7CFB5E00 mov edx,DepotMan.005EFB7C ; ASCII "RegCode"
005EFA4A . 8BC3 mov eax,ebx
005EFA4C . E8 6B3BE8FF call DepotMan.004735BC
005EFA51 . 8BC3 mov eax,ebx
005EFA53 . E8 D441E1FF call DepotMan.00403C2C
005EFA58 . 6A 00 push 0
005EFA5A . 68 84FB5E00 push DepotMan.005EFB84
005EFA5F . E8 1C0AFFFF call <jmp.&PunUnitLib.ShowMess>
005EFA64 . A1 C4E66700 mov eax,dword ptr ds:[67E6C4]
005EFA69 . C700 02000000 mov dword ptr ds:[eax],2
005EFA6F . A1 78E46700 mov eax,dword ptr ds:[67E478]
005EFA74 . 8B00 mov eax,dword ptr ds:[eax]
005EFA76 . E8 F111E8FF call DepotMan.00470C6C
005EFA7B . 33C0 xor eax,eax
005EFA7D . 5A pop edx
005EFA7E . 59 pop ecx
005EFA7F . 59 pop ecx
005EFA80 . 64:8910 mov dword ptr fs:[eax],edx
005EFA83 . EB 20 jmp short DepotMan.005EFAA5
005EFA85 .^ E9 8246E1FF jmp DepotMan.0040410C
005EFA8A . 8B45 FC mov eax,dword ptr ss:[ebp-4]
005EFA8D . E8 2AD9E7FF call DepotMan.0046D3BC
005EFA92 . E8 A14AE1FF call DepotMan.00404538
005EFA97 . EB 0C jmp short DepotMan.005EFAA5
005EFA99 > 6A 03 push 3
005EFA9B . 68 A8FB5E00 push DepotMan.005EFBA8
005EFAA0 . E8 DB09FFFF call <jmp.&PunUnitLib.ShowMess>
005EFAA5 > 33C0 xor eax,eax
005EFAA7 . 5A pop edx
005EFAA8 . 59 pop ecx
005EFAA9 . 59 pop ecx
005EFAAA . 64:8910 mov dword ptr fs:[eax],edx
005EFAAD . 68 0FFB5E00 push DepotMan.005EFB0F
005EFAB2 > 8D45 CC lea eax,dword ptr ss:[ebp-34]
005EFAB5 . E8 6650E1FF call DepotMan.00404B20
005EFABA . 8D45 D0 lea eax,dword ptr ss:[ebp-30]
005EFABD . E8 5E50E1FF call DepotMan.00404B20
005EFAC2 . 8D45 D4 lea eax,dword ptr ss:[ebp-2C]
005EFAC5 . E8 5650E1FF call DepotMan.00404B20
005EFACA . 8D45 D8 lea eax,dword ptr ss:[ebp-28]
005EFACD . E8 4E50E1FF call DepotMan.00404B20
005EFAD2 . 8D45 DC lea eax,dword ptr ss:[ebp-24]
005EFAD5 . E8 4650E1FF call DepotMan.00404B20
005EFADA . 8D45 E0 lea eax,dword ptr ss:[ebp-20]
005EFADD . BA 02000000 mov edx,2
005EFAE2 . E8 5D50E1FF call DepotMan.00404B44
005EFAE7 > 8D45 E8 lea eax,dword ptr ss:[ebp-18]
005EFAEA . E8 3150E1FF call DepotMan.00404B20
005EFAEF . 8D45 EC lea eax,dword ptr ss:[ebp-14]
005EFAF2 . E8 2950E1FF call DepotMan.00404B20
005EFAF7 . 8D45 F0 lea eax,dword ptr ss:[ebp-10]
005EFAFA . E8 2150E1FF call DepotMan.00404B20
005EFAFF . 8D45 F8 lea eax,dword ptr ss:[ebp-8]
005EFB02 . E8 1950E1FF call DepotMan.00404B20
005EFB07 . C3 retn
005EFB08 .^ E9 B348E1FF jmp DepotMan.004043C0
005EFB0D .^ EB A3 jmp short DepotMan.005EFAB2
005EFB0F . 5F pop edi
005EFB10 . 5E pop esi
005EFB11 . 5B pop ebx
005EFB12 . 8BE5 mov esp,ebp
005EFB14 . 5D pop ebp
005EFB15 . C3 retn
【算法总结】
注册码必须为12位以上,只要第4位为M,第6位位D,第10位为F,第12位为8就是合法的注册码,至于用户名和机器码,只有在写入注册表时才用到。
送个靓号:888M8D888FB88
后面加密后写注册表的过程有兴趣的可以跟一下~~~
附:注册信息保存在:HKEY_LOCAL_MACHINE\SOFTWARE\meida\mdDepot。删除后又可以继续研究。
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢 |
|