题目:电影编辑软件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