高手跳過:消除WinZip8.1版本過期提示框 (4千字)

看雪資料發表於2002-05-25

消除WinZip8.1版本過期提示框

    到看雪論壇,幾個月了,沒有發過一篇有關除錯軟體的帖子,畢竟本人太懶了,跟完程式,從不做筆記.
今天跟了一個這個程式,發現非常非常簡單,幾分鐘就搞定了,時間充裕,灌灌水吧.

除錯人  :zmworm
除錯物件:WinZip 8.1 BETA(4286)
軟體來源:電腦報配套光碟2001
除錯工具:SoftICE 4.25(NuMega DriverStudio 2.5 整合)
修改工具:U-Edit
除錯難度:極易
適應讀者:初學者


    關於WinZip的序號產生器的介紹已經很多了,我的WinZip也已經是註冊版本了.可是自打今年某月,
每次開啟winzip 就告訴我版本太舊了,要到網站更新.我懶的上網更新,畢竟WinZip的個頭不小,
而我的貓還在56Kbps上奔跑.
    我已厭倦了點那個確定鍵.於是對WinZip動手術了:

1. 用SoftICE載入Win98.
2. Ctrl-D 開啟SoftICE視窗
3. 設斷點bpx GetLocalTime.因為對話方塊與時間有關,所以攔這個API.
與時間有關的API: GetSystemTime GetLocalTime GetFileTime 等等.
4.執行WinZip,SoftICE攔到斷點,按F5,又被SoftICE攔到
5.按兩下F12,到00403F1E處,GetLocalTime就在這個CALL裡

下面是我對這段程式碼的註釋:

* Referenced by a CALL at Address:
|:0043D17B 
|
:00403F09 56                      push esi
:00403F0A 6A1E                    push 0000001E                        ;d=30日
:00403F0C 6A01                    push 00000001                        ;m=1月
:00403F0E 68D2070000              push 0000007D2                      ;y=2002年
:00403F13 E859960400              call 0044D571                        ;ax=[(y-1980)*16+m]*32+d
:00403F18 83C40C                  add esp, 0000000C
:00403F1B 668BF0                  mov si, ax                          ;si為規定日期
* bpx local 第二次攔到,再F12 兩次後 到這裡;
                                  |
:00403F1E E8BDFFFFFF              call 00403EE0

* 比較ax與si,就是比較當前日期是否到了規定日期2002.1.30日
                                  |
:00403F23 663BC6                  cmp ax, si                          ;ax為當前日期
:00403F26 7653                    jbe 00403F7B                        ;-)一定要跳走呀,否則你看看下面00403F5B處的幾行字

;--------------不要到這裡來-------------
:00403F28 FF35ACC64A00            push dword ptr [004AC6AC]

* Possible StringData Ref from Data Obj ->"70X_BETA1"
                                  |
:00403F2E BE10E34B00              mov esi, 004BE310
:00403F33 C60589BF4C0001          mov byte ptr [004CBF89], 01
:00403F3A 6A01                    push 00000001
:00403F3C 56                      push esi
:00403F3D FF35B0C64A00            push dword ptr [004AC6B0]
:00403F43 E8D16C0500              call 0045AC19
:00403F48 83C410                  add esp, 00000010
:00403F4B 85C0                    test eax, eax
:00403F4D 742C                    je 00403F7B
:00403F4F FF35ACC64A00            push dword ptr [004AC6AC]
:00403F55 56                      push esi
:00403F56 BE44C54C00              mov esi, 004CC544

* Possible StringData Ref from Data Obj ->"This PRE-RELEASE BETA version "
                                        ->"of WinZip is quite old.

This "
                                        ->"version will continue to run, "
                                        ->"but will display this message "
                                        ->"when you start it.  You are strongly "
                                        ->"encouraged to download the current "
                                        ->"version from the WinZip home page "
                                        ->"at http://www.winzip.com."
                                  |
:00403F5B 68E8DC4B00              push 004BDCE8
:00403F60 56                      push esi

* Reference To: USER32.wsprintfA, Ord:02B3h
                                  |
:00403F61 FF158CC44A00            Call dword ptr [004AC48C]            ;-(彈出對話方塊
:00403F67 56                      push esi
:00403F68 FF3538C14C00            push dword ptr [004CC138]
:00403F6E 68DD000000              push 000000DD
:00403F73 E85F840400              call 0044C3D7
:00403F78 83C41C                  add esp, 0000001C


*------------------到這裡就不顯對話方塊了----------------------
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00403F26(C), :00403F4D(C)
|
:00403F7B 5E                      pop esi
:00403F7C C3                      ret


瞭解了這段程式碼的含義,我們就可以做手術了.
手術方案1:永遠跳

:00403F26 7653                    jbe 00403F7B
改為
:00403F26 EB53                    jmp 00403F7B

用U-Edit 開啟WinZip32.exe.在3F26處
將    76
改為  EB


手術方案2:改變規定日期

:00403F0E 68D2070000              push 0000007D2                      ;y=2002年
改為
:00403F0E 6834080000              push 000000834                      ;y=2100年

用U-Edit 開啟WinZip32.exe.在3F0E處
將    D2 07
改為  34 08

我的WinZip永遠不會過期了!!

相關文章