题目:电影编辑软件iFilmEdit 1.3版之破解
软件名称:iEdit14.exe(安装文件名字Ied14sts.exe)
软件来源:2002电脑爱好者光盘
软件描述:用VB开发的,软件开发者号称其软件是速度最快,最简单的MPEG电影编辑工具。只需要简单3步,大概15分钟即可搞定你的电影编辑,后
期制作。如果过期无法使用,而且试用期内无法制作超过5分钟的电影。
破解工具:SoftICE, OD, PEiD,UltraEDIT
破解目的:去除30天试用期限,去掉启动时过期NAG提示,去掉操作按钮时出现的NAG提示。
完成时间:2006年1月13日
引子:
今天从光盘上随便找了一个软件练手,结果就找到了这个软件,安装完毕实验了几下,软件作者说有30天试用期限,在试用期限内,不能够制作超过
5分钟的电影,完整(Full Version)版则没有此限制。试用版一旦过期,根本无法进入软件的。既然这样的话,我们自己动手把它变成完整版好了
。因为这个软件没有输入注册码的地方,干脆就是一个试用版!我现在就想把它变成作者所说的“完整版”。现在准备好工具,开工。拿出PEID查看
一下,哟!是VB写的,我顿时来了兴致,因为VB写的东西比较讨厌,转来转去的头都大了。因为没有可以输入注册码的地方,直接用Softice所带的
Loader加载程序,开始几句代码一定用F8跟踪,就是这个调用VB动态库函数的指令:
1. 去掉启动后的NAG提示窗口。
00403058 > $ 68 08454000 PUSH IEDIT142.00404508
0040305D . E8 EEFFFFFF CALL <JMP.&MSVBVM60.#100> //按F8从这里开始进入VB的MSVBVM60.dll库了。代码如下:
======================================
6600DE22 > 55 PUSH EBP
6600DE23 8BEC MOV EBP,ESP
*省略多行
6600DE71 BE 70F41066 MOV ESI,MSVBVM60.6610F470
6600DE76 8BCE MOV ECX,ESI
6600DE78 E8 60000000 CALL MSVBVM60.6600DEDD //这个地方需要按F8跟入
6600DE7D 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX
6600DE80 85C0 TEST EAX,EAX
6600DE82 7C 51 JL SHORT MSVBVM60.6600DED5
一直按F8我们来到主程序代码空间:
00455AE9 . 57 PUSH EDI
00455AEA . 50 PUSH EAX
00455AEB . FF15 64104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu> //此CALL出现主窗口
00455AF1 > 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30]
*省略多行
00455B81 . 8942 08 MOV DWORD PTR DS:[EDX+8],EAX
00455B84 . 8B85 28FFFFFF MOV EAX,DWORD PTR SS:[EBP-D8]
00455B8A . 8942 0C MOV DWORD PTR DS:[EDX+C],EAX
00455B8D . FF91 B0020000 CALL DWORD PTR DS:[ECX+2B0] //此CALL出现播放电影工作窗口
00455B93 . 3BC3 CMP EAX,EBX
*省略多行
00455C26 . 8941 08 MOV DWORD PTR DS:[ECX+8],EAX
00455C29 . 8B85 28FFFFFF MOV EAX,DWORD PTR SS:[EBP-D8]
00455C2F . 8941 0C MOV DWORD PTR DS:[ECX+C],EAX
00455C32 . FF92 B0020000 CALL DWORD PTR DS:[EDX+2B0] //此CALL出现录制电影工作窗口
00455C38 . 85C0 TEST EAX,EAX
00455C3A . DBE2 FCLEX
*省略几百行
00455EC5 . 8B85 1CFFFFFF MOV EAX,DWORD PTR SS:[EBP-E4]
00455ECB . 8901 MOV DWORD PTR DS:[ECX],EAX
00455ECD . 8B85 20FFFFFF MOV EAX,DWORD PTR SS:[EBP-E0]
00455ED3 . 8941 04 MOV DWORD PTR DS:[ECX+4],EAX
00455ED6 . 8B85 24FFFFFF MOV EAX,DWORD PTR SS:[EBP-DC]
00455EDC . 8941 08 MOV DWORD PTR DS:[ECX+8],EAX
00455EDF . 8B85 28FFFFFF MOV EAX,DWORD PTR SS:[EBP-D8]
00455EE5 . 8941 0C MOV DWORD PTR DS:[ECX+C],EAX
00455EE8 . FF92 B0020000 CALL DWORD PTR DS:[EDX+2B0] //此CALL 显示“软件30天后过期,购买请访问其网站”的信息。把这个地方NOP掉
即可去掉那个启动后的NAG。
00455EEE . 85C0 TEST EAX,EAX
00455EF0 . DBE2 FCLEX
======================================
2. 现在启动过程比较清洁了,但是进入程序操作几个功能,结果按电影“录制”和“预览”按钮时弹出的第二个NAG,提示你“试用版不能够产生超
过5分钟的电影”。我们下面就让这个限制失效掉。在SOFTICE内下断点bpx rtcmsgbox,F5退出,点击OK按钮,被拦住,按一次F11键回到如下代码处
:
0045BB85 . 52 PUSH EDX
0045BB86 . FF15 60114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarCa>
0045BB8C . 50 PUSH EAX
0045BB8D . FF15 7C104000 CALL DWORD PTR DS:[<&MSVBVM60.#595>] //就是这个CALL出现那个不可以超过5分钟的提示NAG。把45BB8C和
此行NOP掉即可。
0045BB93 . 8D85 F8FEFFFF LEA EAX,DWORD PTR SS:[EBP-108]
0045BB99 . 50 PUSH EAX
0045BB9A . 8D8D 08FFFFFF LEA ECX,DWORD PTR SS:[EBP-F8]
======================================
3. 可是问题接踵而至,“不能超过5分钟”的NAG去掉了,但是在按“录制”和“预览”的时候,却出现了跟第一个NAG一样的窗口,提示你30天过期
,而且出现这个窗口的时机是随机的,有时可以直接打开“预览处理”窗口和“录制处理”窗口,有时就直接显示这个提示NAG,取消后可以打开处
理窗口。这个窗口用bpx rtcmsgbox断点不管用了,好象不是消息窗口类型,断不下。看来作者不烦死用户是不罢休的。只好另找出路,用消息断点
,先用hwnd查看句柄,发现ThunderRT6MDIform比较可疑,其句柄值为148,下断点bmsg 148 wm_command,然后F5返回主程序,点击“录制”或者“
预览”,如果按“录制”按钮则比较容易断在那个NAG调用处,“预览”好象不太可靠啦。(注意这是我自己试验出来的结论!一家之言!),否则
就断在处理过程窗口调用上,所以这里需要你仔细一点。如果断下的不对,就只好重新来过啦。我这里总结了一个经验,如果按F12超过6次还没有回
到VB代码内,则肯定断在了处理调用上。如果按F12的次数6次后到达的窗口是BFF5xxxx字样的时候,说明已经断在了NAG调用上了,你再换F10即可跟
踪到VBVM里,继续跟踪就回到如下代码:
6602C054 FF50 10 CALL DWORD PTR DS:[EAX+10]
6602C057 8B8E 20050000 MOV ECX,DWORD PTR DS:[ESI+520]
6602C05D 6A 04 PUSH 4
6602C05F E8 C486FEFF CALL MSVBVM60.66014728 //这个CALL出NAG提示。
等NAG出来后,你就点击Cancel按钮,再次被拦住,继续F10跟踪,一直来到如下主程序代码处了:
004563A3 FF97 B0020000 CALL DWORD PTR DS:[EDI+2B0]
004563A9 85C0 TEST EAX,EAX //你来到这里。说明是上面这个CALL的调用NAG。NOP掉即可。
004563AB DBE2 FCLEX
004563AD 7D 12 JGE SHORT IEDIT14.004563C1
004563AF 68 B0020000 PUSH 2B0
004563B4 68 A4D44000 PUSH IEDIT14.0040D4A4
004563B9 56 PUSH ESI
004563BA 50 PUSH EAX
004563BB FF15 64104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckObj>]
======================================
4.现在已经成功了一大半了,可是把时间调快了1年,再次运行程序,告诉你已经过期了,根本无法进入程序了。下面解决这个问题吧:还是用
Softice的Loader加载程序,跟第一个问题一样跟踪方法,先F8,跟踪到6600df72处,就可以按46次F12,路途很周折,回到主程序处。
下面是在VBVM内:
6600DE78 E8 60000000 CALL MSVBVM60.6600DEDD //此处一定换F8跟入。
6600DE7D 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX
6600DE80 85C0 TEST EAX,EAX
6600DE82 7C 51 JL SHORT MSVBVM60.6600DED5
6600DE84 6A 00 PUSH 0
6600DE86 6A 00 PUSH 0
*省去几十行代码
6600DF60 53 PUSH EBX
6600DF61 8BCE MOV ECX,ESI
6600DF63 E8 7F010000 CALL MSVBVM60.6600E0E7
6600DF68 FF75 0C PUSH DWORD PTR SS:[EBP+C]
6600DF6B 8BCB MOV ECX,EBX
6600DF6D C645 FF 01 MOV BYTE PTR SS:[EBP-1],1
6600DF71 57 PUSH EDI
6600DF72 E8 CD010000 CALL MSVBVM60.6600E144 //用F8跟入这个CALL后就可以用F12跟踪了。大概需要40多次F12,我们就可以顺利
来到下面主程序代码了:
0045767C 8D4D 94 LEA ECX,DWORD PTR SS:[EBP-6C]
0045767F FFD6 CALL ESI
00457681 8D4D 8C LEA ECX,DWORD PTR SS:[EBP-74]
00457684 FFD6 CALL ESI
00457686 C3 RETN //来到这个地方,按F10继续跟踪,然后来到下面代码处; (*)
======================================================
00447193 E8 58F20000 CALL IEDIT142.004563F0
00447198 83EC 10 SUB ESP,10 //从前面 (*)处返回到这里,继续用F10跟踪。
0044719B B9 0A000000 MOV ECX,0A
004471A0 8BD4 MOV EDX,ESP
004477A9 0F84 11020000 JE IEDIT14.004479C0 //把这里修改为JMP,机器码是E9 12 02 00 00 90。即可跳过后面的这个NAG。
004477AF A1 B8124700 MOV EAX,DWORD PTR DS:[4712B8]
004477B4 85C0 TEST EAX,EAX
004477B6 75 10 JNZ SHORT IEDIT14.004477C8
004477B8 68 B8124700 PUSH IEDIT14.004712B8
004477BD 68 24694000 PUSH IEDIT14.00406924
*中间省去2000多行代码
00447981 8B85 44FFFFFF MOV EAX,DWORD PTR SS:[EBP-BC]
00447987 56 PUSH ESI
00447988 8941 04 MOV DWORD PTR DS:[ECX+4],EAX
0044798B 8951 08 MOV DWORD PTR DS:[ECX+8],EDX
0044798E 8B95 4CFFFFFF MOV EDX,DWORD PTR SS:[EBP-B4]
00447994 8951 0C MOV DWORD PTR DS:[ECX+C],EDX
00447997 FF97 B0020000 CALL DWORD PTR DS:[EDI+2B0] //到这里这个CALL就出现过期NAG了。
0044799D 85C0 TEST EAX,EAX
0044799F DBE2 FCLEX
004479A1 0F8D 3C010000 JGE IEDIT142.00447AE3
004479A7 8B3D 64104000 MOV EDI,DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckObj>>
======================================================
5.到这里为止,我们已经成功了。但是如果打开HELP里的ABOUT,显示的提示框字眼就是在 -xxxx天过期了,是个负数了。但是提示框的内容还是不
雅观,另外,主程序的标题栏内也是显示的Trial字样。赶紧把它改掉吧。用Ultra Edit打开破解后的程序,按照上面的要求修改后另行存盘。然后
接着查找Trail字样,你会看到很多个,但是要找跟标题栏内显示的一样的字符串,修改为Full。然后还可以把About提示框内的信息及标题栏信息统
统修改掉,比如This software is licenced for Mr.wang.
后记:
到此为止,我们真正把这个试用版变为正式版了,拿出一个VCD光盘试用了一下,可以制作任意时间长度的电影,没有任何限制了。yeh!真是高兴!
所以费了2个小时把过程写出来,希望对各位有所启发。VB程序比较讨厌。调试起来真累人!我在前面第3步的时候,费了周折,我试验了所有级别为
1的句柄,才找到这个规律的。在VB内下消息断点真是一件噩梦。因为那个窗口不是MESSAGEBOX。无论如何也断不下。回想破解过程真是一种享受啊
。成功在我手中!特奉献此文,分享我的喜悦!
qduwg
qduwg@163.com
完成日期2006/1/13
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!