- UID
- 40746
注册时间2007-12-10
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
【破文标题】时间限制的爆破(2007年12月23日)
【破文作者】Jacksunblack
【作者邮箱】[email protected]
【破解工具】PeiD v0.94;Ollydbg;LordPE;Import REConstructor
【破解平台】Windows XP sp2
【软件名称】Easy To-Do Pro 2.0.0
【软件大小】2146KB
【原版下载】http://cncspace.newhua.com/soft/62913.htm
【保护方式】时间限制
【软件简介】Easy To-Do 是一款管理任务列表的程序,简单但功能强大,可以帮助你记住无论是在家里还是在办公室里你必须做的那些任务。通过使用Easy To-Do,你的工作效率会得到提高,会在短时间内完成更多的任务。该软件还可以作为项目管理软件使用。
【破解声明】本破解过程仅出于个人学习目的,如有不足敬请指教!
------------------------------------------------------------------------
【破解过程】 在软件中,未找到有关填写注册码的相关信息,作为一款试用(evaluation)软件,其限制试用时间为30天。
为此,决定采取爆破的方式,解除软件的时间限制。
首先,使用PeiD查壳,结果显示为Borland Delphi 6.0 - 7.0语言,无壳。为检测软件的错误提示窗口,故将系统时间提前一年。打开软件,在选中new 时,出现了警告窗口,其信息为:"Your evaluation period has expired, you cannot add any new tasks. Buy the full version today and start adding more tasks"
使用Ollydbg载入程序,shift+F9运行程序,待显示出主窗体后,设置条件断点“bp MessageBoxA”,点击new。程序暂停,其代码段如下:
77D5058A > 8BFF mov edi,edi ; ETODO.00762D04
77D5058C 55 push ebp
77D5058D 8BEC mov ebp,esp
77D5058F 833D BC04D777 0>cmp dword ptr ds:[77D704BC],0
77D50596 74 24 je short USER32.77D505BC
观察其堆栈窗口:
0012FAFC 0045717A /CALL 到 MessageBoxA 来自 ETODO.00457175
0012FB00 000A055E |hOwner = 000A055E ('Easy To-Do Pro (Evaluation) (...',class='TTodoMainForm')
0012FB04 00762D04 |Text = "Your evaluation period has expired, you cannot add any new tasks. Buy the full version today and start adding more tasks"
0012FB08 00762CC4 |Title = "Message"
0012FB0C 00000030 \Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
确定此处即为错误信息提示处,在堆栈窗口CALL处按ENTER返回到调用处
00457175 E8 C619FBFF call <jmp.&user32.MessageBoxA>
0045717A 8945 F4 mov dword ptr ss:[ebp-C],eax
0045717D 33C0 xor eax,eax
0045717F 5A pop edx
00457180 59 pop ecx
向上找到此段程序的起始处:
00457078 |. 5B pop ebx
00457079 \. C3 retn
0045707A 8BC0 mov eax,eax
0045707C /$ 55 push ebp ;此处即为此段程序的起始位置
0045707D |. 8BEC mov ebp,esp
0045707F |. 83C4 A8 add esp,-58
00457082 |. 53 push ebx
00457083 |. 56 push esi
在该位置下断点,重新载入并运行程序。程序断在0045707C的位置,查看堆栈窗口,显示信息如下:
0012FB84 007629F0 返回到 ETODO.007629F0 来自 ETODO.0045707C
在其上点击“ENTER”键,到达其返回位置:
007629EB . E8 8C46CFFF call ETODO.0045707C ;此处即为调用上段程序的入口处
007629F0 . E9 C8020000 jmp ETODO.00762CBD
007629F5 > 8B45 FC mov eax,dword ptr ss:[ebp-4]
类似于上述过程,向上查找到此段程序的开端:
0076297B . C3 retn
0076297C $ 55 push ebp ;此处即为该段程序的入口,在此处设断点
0076297D . 8BEC mov ebp,esp
重新载入并运行程序,来到了0076297C处,F8步进并分析代码:
007629D2 . 8078 44 00 cmp byte ptr ds:[eax+44],0
007629D6 . 74 1D je short ETODO.007629F5 ;此处的跳转未实现,出现错误窗口
007629D8 . 6A 30 push 30
007629DA . B9 C42C7600 mov ecx,ETODO.00762CC4 ; ASCII "Message"
007629DF . BA 042D7600 mov edx,ETODO.00762D04 ; ASCII "Your evaluation period has expired, you cannot add any new tasks. Buy the full version today and start adding more tasks"
007629E4 . A1 C4A17800 mov eax,dword ptr ds:[78A1C4]
由此,将007629D6处的代码修改为无条件跳转jmp,经测试程序运行成功。
------------------------------------------------------------------------
【破解总结】 在程序中,由于没有出现注册码的部分,故采用了爆破的方式。 在尝试过程中,曾经使用bp GetLocalTime进行跟踪,但效果并不理想。因为原程序中出现了过多次的调取过程,比较繁琐。通过提前系统时间,来使程序失效,查找相应的错误窗口。对错误的部分进行拦截(bp MessageBoxA)和分析。
------------------------------------------------------------------------
【版权声明】请尊重原版软件! |
评分
-
查看全部评分
|