以前的曾经提过这个东西关于开机弹窗的问题(链接:http://www.h4ck.org.cn/2012/11/windowblinds-7-4蛋疼的弹窗/),那时候是解决了,并且顺便patch掉了那个试用期的提示,但是周一开机的时候忽然发现那个原本的效果不见了,取而代之的是一个灰色的没有任何风格的窗口,这个蛋疼啊。
于是就又开始相关的一些折腾,但是调试来调试去没发现那个时间是怎么计算的,因为在上次修改的那个dll文件中做任何的修改都没有效果,只要过期之后开机之后还是没有任何的风格效果。后来发现有个什么trial reset的东西,大体看了一下,原来程序的安装日期是写在Windows目录下的win.ini文件中,有如下的两行代码:
[zktrpliAorkjhkW2]
oweddpnnhgh87hjhkj17=1352195996
而在wbsrv.dll文件中校验是否已经过期用的也是这个文件,代码如下:
.text:100046EB loc_100046EB:
.text:100046EB lea eax, [ebp+hDesktop]
.text:100046EE mov dword_1002EA38, ecx
.text:100046F4 push eax ; Time
.text:100046F5 call ds:time
.text:100046FB fild dword ptr [ebp+hDesktop]
.text:100046FE pop ecx
.text:100046FF lea eax, [ebp+String]
.text:10004705 push 0FFh ; nSize
.text:1000470A push eax ; lpReturnedString
.text:1000470B fstp qword ptr [ebp+h]
.text:1000470E push offset WindowName ; lpDefault
.text:10004713 push offset aOweddpnnhgh87h ; "oweddpnnhgh87hjhkj17"
.text:10004718 push offset aZktrpliaorkjhk ; "zktrpliAorkjhkW2"
.text:1000471D call ds:GetProfileStringA
.text:10004723 lea eax, [ebp+String]
.text:10004729 push eax ; Str
.text:1000472A call strlen
.text:1000472F test eax, eax
.text:10004731 pop ecx
.text:10004732 jbe loc_1000480F
因而要想重置试用期也就比较简单了,直接删除上面提到的两行代码就行了。其中第二行的那个数字是个unix time,转换之后就看到效果了:2012年11月6日 17:59:56
另外一个方法就是重新计算之后将时间写入即可,但是如果删除这个区段在设置新的主题的时候程序会重新写入这个区段。而有了这个区段就变得容易过期,于是就做的再绝一点,在程序每次推出的时候直接删除这个文件中的对应区段即可。因为像kmplayer之类的也会创建修改这个文件,因而最好不要删除文件,以免导致其他的问题。最简单的办法,直接写个dll然后导入到主程序中在退出的时候调用就行了,也就不必每次去点什么重置试用期了,手工编辑这个文件也是可以的。
下载链接:http://pan.baidu.com/share/link?shareid=165702&uk=3188888025
本次修改并不能去掉每次试用的使用弹窗(只能无限期试用),如果喜欢本软件还是去买正版吧。
4 comments
灌点水,我来过了,没打算看懂。
欢迎欢迎,嘿嘿,没看懂也没神马滴。
直接改jmp不行嗎??
修改主程序的那个跳转意义不大,需要跟踪其他的文件。我懒得调试了,所以用了投机取巧的办法,哈哈。达到目的就好。