- UID
- 1132
注册时间2005-4-20
阅读权限40
最后登录1970-1-1
独步武林
TA的每日心情 | 无聊 2020-4-10 17:02 |
---|
签到天数: 5 天 [LV.2]偶尔看看I
|
【原创】营养烹调大师 V0.99 Build 102 简单脱壳+算法分析
日期:2005年8月13日 破解人:冷血书生[OCN]
———————————————————————————————————————————
【软件名称】:营养烹调大师 软件版本:0.99
【软件大小】:1197 KB
【下载地址】:http://www.skycn.com/soft/7244.html
【软件简介】:营养烹调大师是一款集膳食营养与烹调技术于一体的家庭日常饮食管理软件。它能够根据家庭成员的营养素需求量及市场上的烹饪原料(或定制的菜肴)快速生成符合家庭需要的一天或多天食谱,并能迅速计算出营养素实际摄入量、成本、原料采购量等实用数据,是指导家庭科学膳食的好助手。内置的多功能的食谱编辑器可以让你方便地对食谱文件进行修改和调整,轻松打造出完全符合自己意愿的"梦幻食谱"。
【软件限制】:注册码限制
【破解声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
【破解工具】:
———————————————————————————————————————————
【破解过程】:
首先用PEID检测,查到UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo加壳!好,前两天刚学了手脱,现在就正好试试!下面OD载入程序:
载入之后,F8一下来到这里
005508E1 BE 00604D00 mov esi,Cookmast.004D6000
看看这个时候惊现了ESP,0012FFA4,我们就下硬件断点。
F9运行一下,F8几下就到了 004F69A8 55 push ebp
这个就是传说中的OEP了!好,就在这里DUMP下来啦!再次打开程序,发现可以打开,没什么失败啊,要修复啊之类的了,真棒!
再用PEID查一下,发现软件是用Borland Delphi 6.0 - 7.0编写的!
好了,再次开工!OD载入脱壳后的程序,右键,查找字符,找到注册的错误提示!
试炼信息:
机器码:SP791614707
注册码:123654789
找到错误提示,双击,往上翻,下断!
004EE1D0 55 push ebp ; 下断
004EE1D1 68 9CE24E00 push unpackCo.004EE29C
004EE1D6 64:FF30 push dword ptr fs:[eax]
004EE1D9 64:8920 mov dword ptr fs:[eax],esp
004EE1DC 8D85 80FEFFFF lea eax,dword ptr ss:[ebp-180]
004EE1E2 50 push eax
004EE1E3 8D95 7CFEFFFF lea edx,dword ptr ss:[ebp-184]
004EE1E9 8B83 F8020000 mov eax,dword ptr ds:[ebx+2F8]
004EE1EF E8 C4A3F5FF call unpackCo.004485B8
004EE1F4 8B85 7CFEFFFF mov eax,dword ptr ss:[ebp-184]
004EE1FA E8 196DF1FF call unpackCo.00404F18 ; EAX看到机器码
004EE1FF 83E8 02 sub eax,2 ; EAX-2
004EE202 50 push eax
004EE203 8D95 78FEFFFF lea edx,dword ptr ss:[ebp-188]
004EE209 8B83 F8020000 mov eax,dword ptr ds:[ebx+2F8]
004EE20F E8 A4A3F5FF call unpackCo.004485B8
004EE214 8B85 78FEFFFF mov eax,dword ptr ss:[ebp-188]
004EE21A BA 03000000 mov edx,3 ; 取机器码的第三位开始到最后一位
004EE21F 59 pop ecx
004EE220 E8 4B6FF1FF call unpackCo.00405170
004EE225 8B85 80FEFFFF mov eax,dword ptr ss:[ebp-180]
004EE22B E8 ACB2F1FF call unpackCo.004094DC ; 将第三位开始到最后的机器码转成16进制
004EE230 8BF0 mov esi,eax ; EAX送ESI
004EE232 8BC6 mov eax,esi ; ESI送EAX
004EE234 B9 0D000000 mov ecx,0D ; 0D送进ECX
004EE239 99 cdq
004EE23A F7F9 idiv ecx ; EAX=EAX/ECX
004EE23C 05 233E2400 add eax,243E23 ; EAX+243E23
004EE241 8BF0 mov esi,eax ; EAX送ESI
004EE243 8D95 74FEFFFF lea edx,dword ptr ss:[ebp-18C]
004EE249 8B83 FC020000 mov eax,dword ptr ds:[ebx+2FC]
004EE24F E8 64A3F5FF call unpackCo.004485B8
004EE254 8B85 74FEFFFF mov eax,dword ptr ss:[ebp-18C]
004EE25A 50 push eax ; 假码入栈
004EE25B 8D95 70FEFFFF lea edx,dword ptr ss:[ebp-190]
004EE261 8BC6 mov eax,esi
004EE263 E8 10B2F1FF call unpackCo.00409478
004EE268 8B95 70FEFFFF mov edx,dword ptr ss:[ebp-190] ; 看到真码
004EE26E 58 pop eax
004EE26F E8 E86DF1FF call unpackCo.0040505C ; 真假码比较,可做内存注册机
004EE274 74 1C je short unpackCo.004EE292 ; 相等就跳,爆破点
【算法总结】
(1)取机器码的第三位开始到最后,再转换成HEX,记为A
(2)A除以0D,记为B
(3)B+243E23=注册码
———————————————————————————————————————————
【Crack_总结】:
初学算法,不足之处,还请各位大侠指点!
[ Last edited by 冷血书生 on 2005-8-19 at 11:11 AM ] |
|