破解日期9:51 04-10-4
破解人:保密
破解程序:电影魔方2003 ,来自电脑报2003光盘
破解时用到的工具:W32dsm8.93 trw1.22 ultraEdit10 侦壳工具
破解方法:胡思乱想
无壳
反编译参考,找到有用的参考:
"MVW-MPEG1-T2JUNWHWTY51NC"(这竟然就是注册码,不过是一个特定期限的注册码。没有用的啦!!!过了日期后,就只有修改系统时间才可以再用。)
"此试用版已经过期"(重点查找!!!!)
开始找!!!!!
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403EFD(C)
|
* Possible StringData Ref from Data Obj ->"此试用版已经过期"
来自这里:
* Reference To: MFC42.Ordinal:0C14, Ord:0C14h
|
:00403EF6 E89B260000 Call 00406596 (这个Call
会来到:00406596 FF2534714000 Jmp dword ptr [00407134]可是我们的主程序最长也只到了:00406FEB
那么它一定跳到另外的地方,通过调试,知道它跳到了MFC42.dll,在这里它比较了程序设定的日期与系统时间。我原想如果在这里面修改那个设定的时间,就是完美破解版,可以功力有限,水平太差!!)
:00403EFB 85C0 test eax, eax
:00403EFD 740E je 00403F0D(相等则会跳到此试用版已过期!)
单纯修改这个跳转是不会成功的!!!
将日期调到2003-12-4
显示为还有110天试用期!!!按确定按钮可以进入程序。好搞!终于可以调试了呀!!!
可是输入注册号,竟然确定按钮不可选,原因就在于这个注册号是有期限的呀。看来只能修改时间,让它永不过期!!!
用记事本程序可以查看upgrade.uid(这是保存注册信息的地方)
知道:
time limited Evalution License
"MVW-MPEG1-T2JUNWHWTY51NC"
time limited evaluation: 110 days (Tue Mar 23 11:46:41 2004)原来如此!!
再仔细看看该如何修改:
* Reference To: MFC42.Ordinal:0C14, Ord:0C14h
|
:00403EF6 E89B260000 Call 00406596
:00403EFB 85C0 test eax, eax(注意这里@offset 000032FBh
:00403EFD 740E je 00403F0D (注意这里@offset 000032FDh
:00403EFF 8D8EB8010000 lea ecx, dword ptr [esi+000001B8](注意这里@000032FFh在调试器中,过了这一行,可以D ecx 见到试用日期110)
* Possible StringData Ref from Data Obj ->"此试用版已经过期"
|
:00403F0D 6834914000 push 00409134
:00403F12 8D96B8010000 lea edx, dword ptr [esi+000001B8](还有这里,它也要这个数据。所以一定要修改dword ptr [esi+000001B8]里面的值!!!!)
:00403F18 52 push edx
从下面这一行可以学会如何修改!!!
:00403F2F C786B401000000000000 mov dword ptr [esi+000001B4], 00000000
我们开始修改:
:00403EFB C786B801000000036500 mov dword ptr [esi+000001B8], 00036500(经测试,这里为00000000也是可以的,启动程序时,在试用日期框内是乱码,但是确定按钮变为可选,我们可以启动程序。出现乱码是因为我们并没有向它传送试用日期呀,记得我们是替换了这几行哟
:00403EFB 85C0 test eax, eax
:00403EFD 740E je 00403F0D
:00403EFF 8D8EB8010000 lea ecx, dword ptr [esi+000001B8](特别要注意这里,在原程序中,过了这一行D ecx可以见到试用日期)
因为我们并未向程序传送这一指令,所以这时ecx内是乱码,只要不是零,那么就肯定可以再用,这里出现零的机率应该很少,如果是零,重启程序,应该可以解决问题。
现在可以说是通过修改程序,已经破解了它了日期限制。
为什么从:00403EFB这里开始修改呢,因为这三行加起来的长度刚好与我想写入内容一样呀(12个字节),并且这三行的丢失并不会影响程序的运行。如果这里的冗余代码更多些,就更有利于修改啦,加些nop就搞定。
修改后再用反编译可以看到:
* Reference To: MFC42.Ordinal:0C14, Ord:0C14h
|
:00403EF6 E89B260000 Call 00406596
:00403EFB C786B801000000036500 mov dword ptr [esi+000001B8], 00650300
:00403F05 51 push ecx(注意这一句,我们从这里得到了乱码!!)
:00403F06 8BC8 mov ecx, eax
* Reference To: MFC42.Ordinal:1837, Ord:1837h
|
:00403F08 E8BF260000 Call 004065CC
* Possible StringData Ref from Data Obj ->"此试用版已经过期"
我用aspack212r压缩它一下,保存为MpegVideoWizard1.exe
真的是罗索呀!!!水平又差,也不知解释得对不对。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!