在這裡並不是要系統的討論軟件加密保護技術,只是簡單介紹一些和破解相關的軟件保護方式,目的是讓大家搞清楚哪些是我們解密的對象。有一點是要首先明確的,並不是所有的受限制軟件都可以破解的。因為作為破解一方來說,只能是將軟件中不允許、受限制的功能變為可用的、沒有限制的。如果軟件本身就沒有某些功能在裡面,那麼我們是無論如何也沒有辦法的(除非你自己去寫,好像太誇張了一點噢^_^)。 下面是幾種常見的軟件保護方式: 1. 軟件注冊:現在有兩種免費的軟件可以使用,一種是自由軟件(freeware),完全免費的,沒有任何的使用限制;一種是共享軟件(shareware),可以免費試用,如果要得到完全的功能或者服務的話,一般情況下需要注冊。現在網上有很多的免費軟件,其中共享軟件相對來說更多一些,真正免費的午餐還是不多的。有些共享軟件沒有任何的限制,只是有可能會提示你該注冊了,如果不注冊的話,並不影響軟件的正常使用,不會出現功能限制,但是注冊之後會有更多的支持與服務;更多的共享軟件都有諸多的限制,比如使用天數限制、有效日期限制、次數限制、功能限制、未注冊畫面、延遲或干脆禁用軟件等等,軟件的注冊方式具有以下一些形式: a. 用戶ID或注冊碼; b. 序列號; c. 用戶名(或用戶ID) 注冊碼(或序列號); d. 用戶名 單位名 序列號(或注冊碼); 以上這幾種方式都是將用戶輸入的信息經過一些特殊的運算,然後和正確的注冊信息相比較,如果相同則注冊成功。需要說明的是正確的注冊信息並不一定是顯式存在的,也就是說程序根據我們輸入的信息計算出一個結果後,有可能直接和正確的注冊信息相比較,也有可能是間接比較的。通常對於那些直接存在於內存中的注冊碼,我們比較容易破解;但是對於那些隱式存在於內存中的注冊碼,則需要我們仔細的去跟蹤、分析程序,才能得到正確的注冊碼,對付這類軟件通常需要更多的精力和耐心; 注意:這裡所指的用戶ID可能是用戶名,可能是一串軟件所帶的數字,也有可能就是注冊碼。。。具體根據不同的軟件來定;序列號通常具有以下的形式: XXXXX-XXXXX-XXXXX-XXXXX(這裡是隨便輸入的); e. 有些軟件注冊時會在你的電腦裡搜集一些信息,讓你EMAIL(或郵寄)給軟件公司並繳費,然後對方提供給你一個注冊碼。對於這類軟件,通常破解時要徹底搞清楚程序的算法,然後再給出一個破解方案。因為在自己的電腦上簡單的得到一個注冊碼,在其它電腦上並不能用,沒有什麼意義。 f. 還有一些軟件注冊時是通過網上或郵寄方式付款,然後對方會提供另外一個注冊過的軟件,對於這類共享軟件我們是沒有辦法破解的,,因為其共享軟件本身就缺乏某些功能,要得到功能完全的正式版,唯一的辦法就是通過正常的渠道去注冊^_^; g. KEY file保護方式,這類軟件的注冊並不需要你輸入注冊碼,而是會檢查某個文件的有效性,這個文件可能是普通的文本文件,也有可能是軟件自己定義的特殊格式文件,我們把這種文件叫做KEY file。 2. 密碼保護:這一類也是大家常見的加密保護方式,凡是需要你輸入密碼(PASSWORD)的地方都屬於這類,有應用軟件密碼、游戲密碼、文件密碼等等(當然我們的能破解的目標只是其中的一部分了); 3. 磁盤保護:一般是利用軟磁盤做成鑰匙盤,然後軟件運行的時候會去校驗軟盤中的數據是否正確,例如大家都很熟悉的殺毒軟件KV300就是如此; 4. 加密狗:看看現在的報紙雜志,狗聲四起,到處都能看到各種各樣的狗。所謂的狗,就是插在計算機接口上的一個數字電路,裡面存著若干數據,軟件通過計算機接口對這部分電路進行操作(讀取、修改等),只有正確的狗才能使軟件正常運行,從而達到保護軟件、防止盜版的目的; 5. 網卡加密:主要是利用網卡的序列號來進行識別,只有隨機帶的網卡才能正常使用軟件; 6. License保護:這種加密多用於大型的商業軟件,軟件通過正確的License文件運行。License文件都有固定的格式(這裡所說的不是有關License的說明性文本文件),一般是一個License對應軟件的一個功能模塊。如果想要增加軟件功能,只要購買相應的模塊,得到一個License,然後就可以使用了,軟件本身並不需要進行升級;或者是不同的License許可的用戶數量不同,有單用戶License、多用戶License,有單機版License、網絡版License等; 7. 軟件壓縮:就是通常說的加殼,利用專門的壓縮軟件將應用程序進行壓縮,程序文件失去了本來的面目。如果你用反匯編工具反匯編,那麼你是什麼也看不到的,因為軟件本身已經被壓縮,並不是真實的可執行文件代碼了; 8. 光盤加密(CD KEY):這類保護多用於游戲中,程序運行時要求將原版CD碟放在光驅中,然後輸入光盤附帶的CD KEY,或者是程序直接檢查光盤上的特殊數據(指紋等),由此來判斷使用的是否是正版光碟; 9. 還有一些並不屬於加密保護之列,但也常常是我們破解的對象。比如游戲中的生命值、經驗值、法力值、錢和物品的數量等等(當然了,有很多專用的游戲修改器可以達到這些目的)。