欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

将ACDSee V3.1 Build 921试用版变为注册版 (5千字)

将ACDSee V3.1 Build 921试用版变为注册版 (5千字)

将ACDSee V3.1 Build 921试用版变为注册版
              by liangs  2001/3/18
说明:软件可从《电脑报2000年合订本》配套光盘中获得。
  前两天买了套《电脑报2000年合订本》,装了一下这个软件觉得还不错,比原来
的2.4版功能强劲了不少。它的限制主要是时间限制,破掉它的时间限制很简单,但
程序启动后标题栏显示的Trial Version让人看到很不舒服,我们试着拿掉它看看。
(1)首先来搞定时间问题。过期后弹出 Trial Period Expired 的提示框,用W32Dasm
反汇编后,我们查找Expired的字样,我们可以找到如下的地址:
* Reference To: InTouchClient.?TrialPeriod_GetDaysLeft@InTouchClient@@QAEHXZ, Ord:005Dh
                                  |
:00404596 FF1564824D00            Call dword ptr [004D8264]
:0040459C 85C0                    test eax, eax
:0040459E 7F16                    jg 004045B6
* Reference To: InTouchClient.?g_itc@@3VInTouchClient@@A, Ord:0069h
                                  |
:004045A0 8B0D30824D00            mov ecx, dword ptr [004D8230]
:004045A6 6A00                    push 00000000
* Reference To: InTouchClient.?TrialMode_ShowExpiredBox@InTouchClient@@QAEHPAUHWND__@@@Z,
Ord:005Bh
                                  |
:004045A8 FF155C824D00            Call dword ptr [004D825C]
:004045AE 85C0                    test eax, eax
:004045B0 7521                    jne 004045D3
:004045B2 83C408                  add esp, 00000008
:004045B5 C3                      ret
  上面的 TrialMode_ShowExpiredBox 字样已经很能说明问题了,其它地方也能找到Expired
的字样,但是一看就知道不是,当然如果你看不出来的话,你就下bpx 00xxxxxx试试就知道了,
根本就不会在那儿中断下来。
很明显只要将0040459E处的jg 004045B6改为Jmp 004045B6就可以搞定时间问题了。
(2)接着要搞定的是标题栏显示的Trial Version字样。我们查找Trial Version的字样,我们可
以找到如下两处地址:
第一处地址:
:004172D0 B900434F00              mov ecx, 004F4300
:004172D5 E816320000              call 0041A4F0
:004172DA 85C0                    test eax, eax
:004172DC 7529                    jne 00417307
:004172DE 8D8C2414010000          lea ecx, dword ptr [esp+00000114]
:004172E5 6A50                    push 00000050
:004172E7 51                      push ecx
* Reference To: KERNEL32.lstrlenA, Ord:0335h
                                  |
:004172E8 FF1550834D00            Call dword ptr [004D8350]
:004172EE 8D940418010000          lea edx, dword ptr [esp+eax+00000118]
:004172F5 A124434F00              mov eax, dword ptr [004F4324]
:004172FA 52                      push edx
* Possible Reference to String Resource ID=00195: " Trial Version"
                                                  ^^^^^^^^^^^^^^^^^   
                                  |
:004172FB 68C3000000              push 000000C3
:00417300 50                      push eax
------------------------------------------------------------------------
第二处地址:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00465A0E(U)
|
:00465A36 B900434F00              mov ecx, 004F4300
:00465A3B E8B04AFBFF              call 0041A4F0
:00465A40 85C0                    test eax, eax
:00465A42 7520                    jne 00465A64
:00465A44 8D442408                lea eax, dword ptr [esp+08]
:00465A48 6A50                    push 00000050
:00465A4A 50                      push eax
:00465A4B FFD6                    call esi
:00465A4D 8B1524434F00            mov edx, dword ptr [004F4324]
:00465A53 8D4C040C                lea ecx, dword ptr [esp+eax+0C]
:00465A57 51                      push ecx
* Possible Reference to String Resource ID=00195: " Trial Version"
                                                  ^^^^^^^^^^^^^^^^^
                                  |
:00465A58 68C3000000              push 000000C3
:00465A5D 52                      push edx
  你注意看一下就可以发现,在判断是否是"Trial Version"的时候,在前面共同都
调用了call 0041A4F0来判断eax的值,如果eax到时候为0就铁定是" Trial Version"
我们进call 0041A4F0的里面去看看:
* Referenced by a CALL at Addresses:
|:004044F2  , :0040468F  , :0040488B  , :004049FE  , :004087DC 
|:004088D3  , :00412A6F  , :004172D5  , :0041837B  , :00418499 
|:0043D2B6  , :0043D3AB  , :0043D4B9  , :0043D5A5  , :0043D6E6 
|:0045A549  , :00465A3B 
|
:0041A4F0 33C0                    xor eax, eax
:0041A4F2 C3                      ret
:0041A4F3 90                      nop
:0041A4F4 90                      nop
:0041A4F5 90                      nop
:0041A4F6 90                      nop
:0041A4F7 90                      nop
  我们发现这里只有两行代码就是使eax为0,而且还有很多地方要调用这个Call,如果这里
eax返回的是1的话,我们的目的就完成了,好在0041A4F3后面有好几个nop可以给我们用。
将上面代码简单修改如下就可以了:
:0041A4F0 33C0                    xor eax, eax
:0041A4F2 40                      inc eax
:0041A4F3 c3                      ret
  现在再重新启动ACDSee看看,是不是已经变成注册版了,还有一点不尽入人意的地方就是
打开About ACDSee...菜单时,里面的"The software is license to:"和"license number:"
还是空的,要让它在这显示你的名字也很简单,用RegMon检测软件对注册表的读写,我们
可以找到如下的地方,写个注册文件运行一下就可以了,至此ACDSee V3.1就彻底搞定了。:->
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\ACD Systems\ACDInTouch]
"UserName"="liangs"
"CompanyName"="ZTE"
"UserEMail"="liangs@wx88.net"
[HKEY_LOCAL_MACHINE\Software\ACD Systems\ACDSee]
"LicenseNumber"="ZTE389"
[HKEY_CURRENT_USER\Software\ACD Systems\ACDInTouch]
"UserName"="liangs"

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功