1. 程式人生 > >教你如何解除試用版軟體的期限

教你如何解除試用版軟體的期限

一般說來,在軟體的第一次安裝時(或是在第一次執行時),它會以當前的日期時間作為基準,作為試用期的開始,記錄在案。以後的每一次執行都會在啟動前先取出這個記錄,再和當前的時間作一比較,如果在試用期內,那還好,您可以繼續使用;反之,那便罷也,軟體過期了。要繼續使用,Money!所以前面所提到的修改系統時間的方法,在這裡只是治標不治本。要解決這個問題,關鍵還是從根源抓起。

那麼如何修改這個時間記錄呢?您可別急。要改還不太簡單,首先您得要先找到它吧。這也是本文的關鍵之所在,您可要看仔細了。

動動腦筋,想一想這個記錄會放在哪兒呢?在Windows下,軟體配置資訊放在什麼地方?對!就在登錄檔裡(Registry),這個登錄檔是一個龐大而又很複雜的資料庫,所以對於一般使用者來說很神祕,不敢越雷池一步。這正好為一些軟體加密提供了藏身之處,許多軟體在第一次使用時,都會將當前的時間放在登錄檔裡的某一個位置。以後的每次執行先從這兒取出時間,再和當前的作比較,從而判斷出是否過期。而且這個記錄在軟體解除安裝後也不會自動清除掉,這就是為什麼我們在軟體過期後重裝一遍時它還會說過期的原因。 既然知道了這個記錄就在登錄檔裡,那我們怎麼去找到它呢?

有人會問,我怎麼用登錄檔編輯器(RegEdit)的搜尋功能找不到這個時間呢?

笨蛋!有這麼玩捉迷藏的嗎?既然是藏,難道能那樣隨隨便便就讓您給找到的?這個時間記錄它都是以加密後的資料存放的,您看到的一般都是諸如A4ECFA57-D0A3-9FF3-8481-A492EB945058之類的古怪而無實際意義的字串。想用Regedit去查詢諸如2000-1-1之類的日期格式,白費心機。所以在登錄檔中您看到一串古怪的資料,如果它越古怪就越值得懷疑。

其實想在登錄檔中找到它們也不難。方法有兩種:一是在軟體還未安裝前(第一次安裝),先備份一下整個登錄檔,然後再裝。將安裝前後的兩份登錄檔作一比較,找出新增加或改動了的地方,縮小可疑範圍,然後再進一步判斷。這兒我們可以藉助Regsnap來完成此項工作。不過這種方法有很大缺點那就是工作量較大,而且一旦事先已安裝過該軟體了,此法便無效了。所以在這種情況下只能藉助於第二種方法了。藉助於一些相關的工具來監視軟體對登錄檔的操作,如大名鼎鼎的RegMon(登錄檔監視器)。利用regmon,監視到軟體啟動時從登錄檔讀取這個記錄的事件,從而找到它的藏身之地。

具體操作方法下面我以Paint Shop Pro 6.0 為例來說明:

修改之前您得先安裝好Paint Shop Pro(廢話) 。準備好之後,那我們開始出發。開啟Regmon,在過濾設定中填上psp(Paint Shop Pro 的執行檔名),表示只對PSP檔案進行監視。設好過濾之後,開始監視。開啟PSP,在出現啟動畫面和顯示已使用時間的時候停止監視。想想在這一段時間裡,PSP會從登錄檔中讀取哪些資訊呢?然後仔細分析一下監視到的結果(重點在後一部分,想一想這是為什麼?)。由於軟體把這個時間是以加密的形式存放在登錄檔中,所以regmon監視到的資料中有一串很奇怪的字元便是這時間了。雖然我們並不知道它具體的加密演算法,但最簡單的一個方法——刪除不就解決問題了嗎?雙擊監視到的這個資料,直接讓RegMon開啟RegEdit,定位到HKEY_CLASSES_ROOT/CLSID/{ ADBB2D80-5DFD-11D2-A00C-00104B65AAF5 }/MS,將右視窗中的iPID60u值刪掉。重啟PSP,這時您便會發現它又從第一天開始計時了。

怎麼樣?改起來並不難吧?其實要手工去除一些軟體的時間限制就是這麼簡單,關鍵就是在於首先要找到這個時間記錄的藏身之處,之後的步驟就是輕輕的一個Del 鍵。搞定!

當然也並非所有的軟體都是這麼簡單就可以解決的,它們自身也似乎明白了這一點,光只在登錄檔中藏上一個值,是很容易被別人發現了。所以它們便再加上了一層保護。單獨的一個記錄也許您會瞎貓碰到死耗子,歪打正著地讓您給撞上了。兩個記錄您還有那麼好的運氣嗎?不過這也難不倒RegMon,只要是程式要讀寫登錄檔,那一切都逃不過它的監視。您只要仔細一點,多試試,N個記錄也能給找出來!哈哈…….。要想人不知,除非已莫為。你做的任何每當都會留點兒蛛絲馬跡的。嘿嘿…….。像藏有兩個記錄的軟體有Turbo Browser98,它的兩個記錄分別藏在:

[HKEY_LOCAL_MACHINE/Security]
"Tool1."=hex:e0,59,9b,87,fd,d5,be,01
[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/]
"Q. Status"=hex:e0,59,9b,87,fd,d5,be,01。

不過,難道它們僅僅只會在登錄檔裡捉迷藏嗎?硬碟空間那麼大,哪兒不好躲?所以還有相當一部分軟體的加密方法並不僅僅侷限於登錄檔裡,在硬碟上某個位置往往還有幾條漏網之魚。

經過一番苦戰,我終於找到了如何將這群在逃分子揖拿歸案的絕佳祕計,您可聽好了,此法乃我精心研究數十載,取眾家之所長,獨成一派,傳子不傳女的修改大法。在做法之前,我還得再請個助手。而且這位兄臺也正是前面所提到的 Regmon 孃家 Sysinternal 公司的又一同胞兄弟——Filemon。一聽大名,便知其是如何了得。果不其然,任何軟體對檔案的各種操作(無論是讀,寫,修改)都一一逃不過它那雙火眼眼睛。

比如對Zipmagic2000,採用Regmon和Fiemon珠壁聯合、共同合作的方式進行監視。通過RegMon可知Zipmagic2000啟動時從登錄檔中讀出了 [HKEY_CLASSES_ROOT/CLSID/{ 187b1580-324b-11d0-9398-0020aff0e034 }]    at ="GYSupport"
"Data28"="BIPJBPIGFSLHGKDULONNMOMPJNIUMLDM" 的值,而FileMon發現了啟動時也動了一下C:/windows/control dot ini 檔案,仔細分析一下Winini檔案中的內容,發現有一段可疑字串:
[screens data]
screens28=CJQKCQJHGTMIHLEVMPOONPNQKOJVNMEN

估計啟動時就是要從這兒讀取一個記錄,然後再同上面登錄檔中的另一個記錄進行一番互相校驗,從而得出第一次安裝的時間,再判斷軟體是否過期。

所以,為了驗證一下我們推測是否正確,我們先調整系統時間,使之超出30天的試用期限。然後刪除登錄檔中該鍵值和中這段字元。啟動一下,這時,它便告之您,軟體的試用時間記錄已經遭到破壞,請重新安裝。重新安裝之後便又可使用了。哈哈,上述推斷正確,加10分!

結束之前,我想也該稍做總結。

軟體試用的加密常用的一種,就是比較簡單的在登錄檔中的某一個位置藏上第一次使用的時間記錄,以後的每次執行就是先取出這個記錄,再同當前時間作一比較。從而判斷是否過期。

注1、    何時藏入這個記錄各個軟體不相同。有的是在您第一次安裝時,安裝程式取當前日期寫進登錄檔。所以有時直接刪除這個記錄不管用,您還需重新安裝一遍。而有的軟體是在程式第一次執行時加入的,這也就是說在安裝時它並沒有寫入時間。這些軟體在執行前先要在登錄檔中查詢這個記錄,如果沒有的話便以為這是第一次安裝,自作聰明地再取當時時間寫入登錄檔。所以對於這一類軟體,我們只需刪除這些記錄就行了。

注2、         注2、不一定是隻有一個記錄,有的軟體會在登錄檔中寫入兩個位置,互為校驗。一旦其中一個被破壞,那麼便會出錯,無法繼續使用。所以這一類軟體,您要打掃徹底了,將所有的時間記錄都清乾淨了。

另一種就是採取檔案加密的方法。軟體將時間記錄寫入一個檔案(或者多個檔案)中,並且這些檔案藏得都是很隱蔽。一般是在初始檔案中或者是以二進位制檔案的方式存放,藏在Windows 子目錄或Windows/system 等不易被人發現的目錄下,同時檔案也具有隱藏或只讀屬性。總之一句話,就是不能讓您輕易地就發現。不過這個我們也不怕,只要它啟動時要讀出這個記錄,那就能把它揪出來。

當然還有些軟體同時採用這兩種方法,註冊裡藏幾個值,系統目錄裡藏幾個檔案,它們之間互為校驗,缺一不可。只要其中一個破壞,便會出錯,所以這類軟體您一定一定要弄乾淨了。如Quick View Plus 5.0,像它竟然一下子在登錄檔藏了兩個值 HKEY_LOCAL_MACHINE/Software/CLASSES/.wav/{ A4ECFA57-D0A3-9FF3-8481-A492EB945058 } 和 HKEY_LOCAL_MACHINE/Software/CLASSES/CLSID/{ D60EB4AA-B69E-BA5C-88FE-CEFE4F8EECC7 } 系統目錄下有2個檔案

C:/os067271.bin 、C:/WINDOWS/SYSTEM/ws476828.ocx 和一個目錄 C:/WINDOWS/SYSTEM/Viewers! 可謂是層層加密,絞盡腦汁。不過它最終還是讓我給解決了,嘻嘻……

不知一下說了這麼多,您能明白了多少。“授人以魚,不如授之以漁”,希望本文能對您起個拋磚引玉的作用。