?? zipo.txt
字號:
加密與解密-自學破解
加密與解密——矛與盾的關系,兩者相互依存、缺一不可。別以為解密是什么很不光彩的事情,離開了我們這些CRACKER,軟件加密水平也不會有很大的提高。就好比武俠小說里寫的一樣,武功要相互切磋才會不斷進步。天外有天,人外有人,強中自有強中手,如果誰以為自己的武功蓋世,無敵天下,那就是固步自封。今天你的武功好我很多,我就會去研究你的武功,然后到處去學習化解招式,總有一天會讓你屁股尿流的^_^。但是反過來,現在我戰(zhàn)勝了你,并不等于你永遠會被我踩在腳下。學無止境,唯有不斷學習,才能始終保持不敗!
為什么要加密呢?加密的結果就是讓你不能隨便使用軟件產品,防止盜版!為什么不能隨便使用軟件呢?因為這是個商品經濟社會,一切都要以經濟(錢,就是MONEY^_^)為核心。別人在開發(fā)軟件產品中付出了人力、物力和財力,需要從中得到回報,維持生存。所以只有在付出了合適的費用之后,我們才能得到使用別人軟件的權力。
為什么要解密呢?這個問題不太好回答,因為解密的緣由很多,不同的人有不同的動機。可能是因為對解密技術感興趣(像我一樣,我可是經常買正版軟件的);可能就是因為想要無償的、免費使用軟件;可能是因為需要用某個軟件,雖然愿意付錢,但是很難辦到;可能是為了盜版,獲取非法利益(這個可不好噢!犯法的,小心進班房啊^_^)。。。。。。總之,你有你的理由,我有我的根據,但是大家都走到一起來了。
早期的軟件加密其操作系統(tǒng)平臺主要是DOS,在那個時代,我們可以很容易的寫個程序控制整個計算機。因為DOS比較簡單,安全性較差,用戶可以進行各種低層操作,例如調用各種中斷、讀寫內存區(qū)域、操作I/O端口等等。總之,利用DOS本身提供的環(huán)境,我們幾乎可以控制任何我們想要控制的東西,甚至控制DOS本身也不是難題。那個時候的加密技術主要有磁盤加密(包括軟盤和硬盤)、文件和目錄的加密、各種硬件(加密卡、加密狗等)加密等等。當時最流行的莫過于軟磁盤的加密技術了,包括特殊磁道(如額外磁道、螺旋磁道、無縫磁道等)、特殊扇段(超長扇段、亂序扇段、異常ID等)、特殊方法(如弱位技術、FM格式法、磁道噪聲法、針孔加密技術等)。那時我們經常會見到很多軟件都需要鑰匙盤,到處都是,那些鑰匙盤用的就是各種各樣的軟磁盤加密技術。為了防止解密,還運用了多種反跟蹤技術,比如修改中斷向量、鎖鍵盤、關閉視屏、覆蓋技術、廢指令、逆指令流、指令隊列預取法等等。總之,DOS時代你可以充分運用你的想象力去構造各種各樣新奇的加密技術,因為DOS給你了很多自由發(fā)揮的空間。
到了WINDOWS時代,你會覺得一切都變了,自己不再是主人,我們只能在限定的范圍內活動。WINDOWS把低層的東西都隱藏了起來,我們只能看到各種各樣的殼,至于里面的東西嘛,只有WINDOWS自己才能動。WINDOWS把程序分了三六九等,普通的應用程序是工作在Ring 3(三級特權級),而系統(tǒng)關鍵的程序和數據工作在Ring 0(零級)特權級下,也就是最高特權級。因為不能再像以前一樣按照自己的意愿進行低層操作,所以DOS下的加密技術到了WINDOWS基本上都是英雄無用武之地。不過凡事都是有利有弊,不能一概而論的。不同的環(huán)境有不同的方法、對策,雖然不能應用DOS下那些老辦法來進行加密,但是還可以通過其它的方法來實現,各種技術總是會隨著時間逐漸進步的,這是歷史發(fā)展的方向。
[color=red]好了,廢話到此為止,下面讓我們進入正題吧。。。。。。[/color]
[table][tr][td][size=12px]常見軟件加密保護技術簡介
在這里并不是要系統(tǒng)的討論軟件加密保護技術,只是簡單介紹一些和破解相關的軟件保護方式,目的是讓大家搞清楚哪些是我們解密的對象。有一點是要首先明確的,并不是所有的受限制軟件都可以破解的。因為作為破解一方來說,只能是將軟件中不允許、受限制的功能變?yōu)榭捎玫摹]有限制的。如果軟件本身就沒有某些功能在里面,那么我們是無論如何也沒有辦法的(除非你自己去寫,好像太夸張了一點噢^_^)。
下面是幾種常見的軟件保護方式:
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保護:這種加密多用于大型的商業(yè)軟件,軟件通過正確的License文件運行。License文件都有固定的格式(這里所說的不是有關License的說明性文本文件),一般是一個License對應軟件的一個功能模塊。如果想要增加軟件功能,只要購買相應的模塊,得到一個License,然后就可以使用了,軟件本身并不需要進行升級;或者是不同的License許可的用戶數量不同,有單用戶License、多用戶License,有單機版License、網絡版License等;
7. 軟件壓縮:就是通常說的加殼,利用專門的壓縮軟件將應用程序進行壓縮,程序文件失去了本來的面目。如果你用反匯編工具反匯編,那么你是什么也看不到的,因為軟件本身已經被壓縮,并不是真實的可執(zhí)行文件代碼了;
8. 光盤加密(CD KEY):這類保護多用于游戲中,程序運行時要求將原版CD碟放在光驅中,然后輸入光盤附帶的CD KEY,或者是程序直接檢查光盤上的特殊數據(指紋等),由此來判斷使用的是否是正版光碟;
9. 還有一些并不屬于加密保護之列,但也常常是我們破解的對象。比如游戲中的生命值、經驗值、法力值、錢和物品的數量等等(當然了,有很多專用的游戲修改器可以達到這些目的)。[/size]
[size=12px][size=12px]準 備 工 作
俗話說磨刀不誤砍柴工,要學習軟件破解技術,首先要有一定的基礎知識:匯編語言。你不需要很精通匯編語言編程,只要能知道各條指令的作用及相關的基礎知識就可以了。當然,如果你對匯編語言編程比較熟悉的話,對于你的破解學習會很有好處的。雖然現在已經進入WINDOWS時代,匯編語言也從最基本8086匯編演變到了復雜的Win32匯編,但是對于解密來說,并無必要去學習Win32編程,8086匯編語言足以勝任破解的需要。如果你對8086匯編語言一竅不通,那就先去學習吧! 8086匯編教學方面的書籍很多,到計算機書店都有賣的。如果有什么不明白的地方,可以來問我,我會盡量幫你的。
槍桿子里出政權,打仗自然要有槍了。破解也一樣需要家伙,就像修理電器要用萬用表一樣,縱然你技術再怎么高明,沒有工具的幫忙也是枉然:
1. 我們最重要的破解工具自然是鼎鼎大名的Softice(WIN95/98版、WIN NT版)了,這是個動態(tài)跟蹤調試工具,任何想要破解的人都必須學會用它,我們決大部分的解密工作都是在Softice下完成的。另外一個可供選擇的動態(tài)調試工具是Trw2000,中國人自己編寫的,功能和用法和Softice都差不多。如今有些軟件專門針對Softice做了一些防范,碰到這種情況我們就不得不借助于Trw2000了,俗話說人怕出名豬怕壯,說不定哪天也會有很多軟件會盯上Trw2000呢^_^!
2. WINDOWS下的軟件解密有個好處,就是任何程序都逃脫不了動態(tài)跟蹤。但有時候我們也可以利用靜態(tài)分析工具來幫助我們快速的找到軟件破解的突破口;或者是在解密的動態(tài)跟蹤過程中,被狡猾的程序搞得暈頭轉向、摸不著頭緒的時候,我們也許能根據對程序的靜態(tài)分析來獲取破解信息。靜態(tài)分析工具推薦Win32DASM黃金版,這是個Win32反匯編程序,能夠將應用程序反編譯為匯編源程序,并能提供很多相關的信息,是解密的重要工具;
3. 通常軟件破解分為兩類:完全破解和暴力破解,所謂完全破解就是指通過獲取正確的注冊碼的破解方式,而有些軟件的破解并不能通過獲取注冊碼得到(比如只是顯示未注冊畫面),或者是很難得到正確的注冊碼(軟件太狡猾,隱藏得比較深),此時我們就需要通過修改程序代碼來達到破解的目的。修改應用程序代碼需要專用的十六進制編輯器,比如UltraEdit、Hex WorkShop、Hiew等。本人比較喜歡用Hiew,因為它不但支持十六進制編輯,同時也支持反匯編及直接的匯編程序修改,簡單小巧,使用非常方便;
4. 現在有很多的軟件都用壓縮工具壓縮了(也就是通常說的加殼了),如ACDSEE、THE BAT等。當我們用Win32DASM進行反匯編之后,根本就發(fā)現不了任何有意義的信息;如果你想暴力破解這種軟件,當用Hiew打開程序進行編輯的時候你會發(fā)覺找不到要修改的地方。遇到這種情況你就應該用文件檢測工具看看程序是否有殼,是什么樣的殼。知道了是什么殼,然后才可以去殼,接著才能修改程序。文件類型偵測工具很多,本人比較喜歡gtw這個工具,它是WINDOWS界面,使用起來較為方便。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -