文章作者: qduwg
软件名称:iEdit14.exe(安装文件名字Ied14sts.exe)
软件来源:2002电脑爱好者光盘
软件描述:用VB开发的,软件开发者号称其软件是速度最快,最简单的MPEG电影编辑工具。只需要简单3步,大概15分钟即可搞定你的电影编辑,后
期制作。如果过期无法使用,而且试用期内无法制作超过5分钟的电影。
破解工具:SoftICE,OD,PEiD,UltraEDIT
破解目的:去除30天试用期限,去掉启动时过期NAG提示,去掉操作按钮时出现的NAG提示。
完成时间:2006年1月13日
引子:
今天从光盘上随便找了一个软件练手,结果就找到了这个软件,安装完毕实验了几下,软件作者说有30天试用期限,在试用期限内,不能够制作超过
5分钟的电影,完整(FullVersion)版则没有此限制。试用版一旦过期,根本无法进入软件的。既然这样的话,我们自己动手把它变成完整版好了
。因为这个软件没有输入注册码的地方,干脆就是一个试用版!我现在就想把它变成作者所说的“完整版”。现在准备好工具,开工。拿出PEID查看
一下,哟!是VB写的,我顿时来了兴致,因为VB写的东西比较讨厌,转来转去的头都大了。因为没有可以输入注册码的地方,直接用Softice所带的
Loader加载程序,开始几句代码一定用F8跟踪,就是这个调用VB动态库函数的指令:
1.去掉启动后的NAG提示窗口。
00403058>$6808454000PUSHIEDIT142.00404508
0040305D.E8EEFFFFFFCALL//按F8从这里开始进入VB的MSVBVM60.dll库了。代码如下:
======================================
6600DE22>55PUSHEBP
6600DE238BECMOVEBP,ESP
*省略多行
6600DE71BE70F41066MOVESI,MSVBVM60.6610F470
6600DE768BCEMOVECX,ESI
6600DE78E860000000CALLMSVBVM60.6600DEDD//这个地方需要按F8跟入
6600DE7D8945E4MOVDWORDPTRSS:[EBP-1C],EAX
6600DE8085C0TESTEAX,EAX
6600DE827C51JLSHORTMSVBVM60.6600DED5
一直按F8我们来到主程序代码空间:
00455AE9.57PUSHEDI
00455AEA.50PUSHEAX
00455AEB.FF1564104000CALLDWORDPTRDS:[<&MSVBVM60.__vbaHresu>//此CALL出现主窗口
00455AF1>8D4DD0LEAECX,DWORDPTRSS:[EBP-30]
*省略多行
00455B81.894208MOVDWORDPTRDS:[EDX+8],EAX
00455B84.8B8528FFFFFFMOVEAX,DWORDPTRSS:[EBP-D8]
00455B8A.89420CMOVDWORDPTRDS:[EDX+C],EAX
00455B8D.FF91B0020000CALLDWORDPTRDS:[ECX+2B0]//此CALL出现播放电影工作窗口
00455B93.3BC3CMPEAX,EBX
*省略多行
00455C26.894108MOVDWORDPTRDS:[ECX+8],EAX
00455C29.8B8528FFFFFFMOVEAX,DWORDPTRSS:[EBP-D8]
00455C2F.89410CMOVDWORDPTRDS:[ECX+C],EAX
00455C32.FF92B0020000CALLDWORDPTRDS:[EDX+2B0]//此CALL出现录制电影工作窗口
00455C38.85C0TESTEAX,EAX
00455C3A.DBE2FCLEX
*省略几百行
00455EC5.8B851CFFFFFFMOVEAX,DWORDPTRSS:[EBP-E4]
00455ECB.8901MOVDWORDPTRDS:[ECX],EAX
00455ECD.8B8520FFFFFFMOVEAX,DWORDPTRSS:[EBP-E0]
00455ED3.894104MOVDWORDPTRDS:[ECX+4],EAX
00455ED6.8B8524FFFFFFMOVEAX,DWORDPTRSS:[EBP-DC]
00455EDC.894108MOVDWORDPTRDS:[ECX+8],EAX
00455EDF.8B8528FFFFFFMOVEAX,DWORDPTRSS:[EBP-D8]
00455EE5.89410CMOVDWORDPTRDS:[ECX+C],EAX
00455EE8.FF92B0020000CALLDWORDPTRDS:[EDX+2B0]//此CALL显示“软件30天后过期,购买请访问其网站”的信息。把这个地方NOP掉
即可去掉那个启动后的NAG。
00455EEE.85C0TESTEAX,EAX
00455EF0.DBE2FCLEX
======================================
2.现在启动过程比较清洁了,但是进入程序操作几个功能,结果按电影“录制”和“预览”按钮时弹出的第二个NAG,提示你“试用版不能够产生超
过5分钟的电影”。我们下面就让这个限制失效掉。在SOFTICE内下断点bpxrtcmsgbox,F5退出,点击OK按钮,被拦住,按一次F11键回到如下代码处
:
0045BB85.52PUSHEDX
0045BB86.FF1560114000CALLDWORDPTRDS:[<&MSVBVM60.__vbaVarCa>
0045BB8C.50PUSHEAX
0045BB8D.FF157C104000CALLDWORDPTRDS:[<&MSVBVM60.#595>]//就是这个CALL出现那个不可以超过5分钟的提示NAG。把45BB8C和
此行NOP掉即可。
0045BB93.8D85F8FEFFFFLEAEAX,DWORDPTRSS:[EBP-108]
0045BB99.50PUSHEAX
0045BB9A.8D8D08FFFFFFLEAECX,DWORDPTRSS:[EBP-F8]
======================================
3.可是问题接踵而至,“不能超过5分钟”的NAG去掉了,但是在按“录制”和“预览”的时候,却出现了跟第一个NAG一样的窗口,提示你30天过期
,而且出现这个窗口的时机是随机的,有时可以直接打开“预览处理”窗口和“录制处理”窗口,有时就直接显示这个提示NAG,取消后可以打开处
理窗口。这个窗口用bpxrtcmsgbox断点不管用了,好象不是消息窗口类型,断不下。看来作者不烦死用户是不罢休的。只好另找出路,用消息断点
,先用hwnd查看句柄,发现ThunderRT6MDIform比较可疑,其句柄值为148,下断点bmsg148wm_command,然后F5返回主程序,点击“录制”或者“
预览”,如果按“录制”按钮则比较容易断在那个NAG调用处,“预览”好象不太可靠啦。(注意这是我自己试验出来的结论!一家之言!),否则
就断在处理过程窗口调用上,所以这里需要你仔细一点。如果断下的不对,就只好重新来过啦。我这里总结了一个经验,如果按F12超过6次还没有回
到VB代码内,则肯定断在了处理调用上。如果按F12的次数6次后到达的窗口是BFF5xxxx字样的时候,说明已经断在了NAG调用上了,你再换F10即可跟
踪到VBVM里,继续跟踪就回到如下代码:
6602C054FF5010CALLDWORDPTRDS:[EAX+10]
6602C0578B8E20050000MOVECX,DWORDPTRDS:[ESI+520]
6602C05D6A04PUSH4
6602C05FE8C486FEFFCALLMSVBVM60.66014728//这个CALL出NAG提示。
等NAG出来后,你就点击Cancel按钮,再次被拦住,继续F10跟踪,一直来到如下主程序代码处了:
004563A3FF97B0020000CALLDWORDPTRDS:[EDI+2B0]
004563A985C0TESTEAX,EAX//你来到这里。说明是上面这个CALL的调用NAG。NOP掉即可。
004563ABDBE2FCLEX
004563AD7D12JGESHORTIEDIT14.004563C1
004563AF68B0020000PUSH2B0
004563B468A4D44000PUSHIEDIT14.0040D4A4
004563B956PUSHESI
004563BA50PUSHEAX
004563BBFF1564104000CALLDWORDPTRDS:[<&MSVBVM60.__vbaHresultCheckObj>]
======================================
4.现在已经成功了一大半了,可是把时间调快了1年,再次运行程序,告诉你已经过期了,根本无法进入程序了。下面解决这个问题吧:还是用
Softice的Loader加载程序,跟第一个问题一样跟踪方法,先F8,跟踪到6600df72处,就可以按46次F12,路途很周折,回到主程序处。
下面是在VBVM内:
6600DE78E860000000CALLMSVBVM60.6600DEDD//此处一定换F8跟入。
6600DE7D8945E4MOVDWORDPTRSS:[EBP-1C],EAX
6600DE8085C0TESTEAX,EAX
6600DE827C51JLSHORTMSVBVM60.6600DED5
6600DE846A00PUSH0
6600DE866A00PUSH0
*省去几十行代码
6600DF6053PUSHEBX
6600DF618BCEMOVECX,ESI
6600DF63E87F010000CALLMSVBVM60.6600E0E7
6600DF68FF750CPUSHDWORDPTRSS:[EBP+C]
6600DF6B8BCBMOVECX,EBX
6600DF6DC645FF01MOVBYTEPTRSS:[EBP-1],1
6600DF7157PUSHEDI
6600DF72E8CD010000CALLMSVBVM60.6600E144//用F8跟入这个CALL后就可以用F12跟踪了。大概需要40多次F12,我们就可以顺利
来到下面主程序代码了:
0045767C8D4D94LEAECX,DWORDPTRSS:[EBP-6C]
0045767FFFD6CALLESI
004576818D4D8CLEAECX,DWORDPTRSS:[EBP-74]
00457684FFD6CALLESI
00457686C3RETN//来到这个地方,按F10继续跟踪,然后来到下面代码处;(*)
======================================================
00447193E858F20000CALLIEDIT142.004563F0
0044719883EC10SUBESP,10//从前面(*)处返回到这里,继续用F10跟踪。
0044719BB90A000000MOVECX,0A
004471A08BD4MOVEDX,ESP
004477A90F8411020000JEIEDIT14.004479C0//把这里修改为JMP,机器码是E91202000090。即可跳过后面的这个NAG。
004477AFA1B8124700MOVEAX,DWORDPTRDS:[4712B8]
004477B485C0TESTEAX,EAX
004477B67510JNZSHORTIEDIT14.004477C8
004477B868B8124700PUSHIEDIT14.004712B8
004477BD6824694000PUSHIEDIT14.00406924
*中间省去2000多行代码
004479818B8544FFFFFFMOVEAX,DWORDPTRSS:[EBP-BC]
0044798756PUSHESI
00447988894104MOVDWORDPTRDS:[ECX+4],EAX
0044798B895108MOVDWORDPTRDS:[ECX+8],EDX
0044798E8B954CFFFFFFMOVEDX,DWORDPTRSS:[EBP-B4]
0044799489510CMOVDWORDPTRDS:[ECX+C],EDX
00447997FF97B0020000CALLDWORDPTRDS:[EDI+2B0]//到这里这个CALL就出现过期NAG了。
0044799D85C0TESTEAX,EAX
0044799FDBE2FCLEX
004479A10F8D3C010000JGEIEDIT142.00447AE3
004479A78B3D64104000MOVEDI,DWORDPTRDS:[<&MSVBVM60.__vbaHresultCheckObj>>
======================================================
5.到这里为止,我们已经成功了。但是如果打开HELP里的ABOUT,显示的提示框字眼就是在-xxxx天过期了,是个负数了。但是提示框的内容还是不
雅观,另外,主程序的标题栏内也是显示的Trial字样。赶紧把它改掉吧。用UltraEdit打开破解后的程序,按照上面的要求修改后另行存盘。然后
接着查找Trail字样,你会看到很多个,但是要找跟标题栏内显示的一样的字符串,修改为Full。然后还可以把About提示框内的信息及标题栏信息统
统修改掉,比如ThissoftwareislicencedforMr.wang.
后记:
到此为止,我们真正把这个试用版变为正式版了,拿出一个VCD光盘试用了一下,可以制作任意时间长度的电影,没有任何限制了。yeh!真是高兴!
所以费了2个小时把过程写出来,希望对各位有所启发。VB程序比较讨厌。调试起来真累人!我在前面第3步的时候,费了周折,我试验了所有级别为
1的句柄,才找到这个规律的。在VB内下消息断点真是一件噩梦。因为那个窗口不是MESSAGEBOX。无论如何也断不下。回想破解过程真是一种享受啊
。成功在我手中!特奉献此文,分享我的喜悦!
qduwg
qduwg@163.com