版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第12章軟件保護(hù)技術(shù)本章:3
學(xué)時第12章
軟件保護(hù)技術(shù)熟練掌握:破壞中斷技術(shù)、警告(NAG)窗口、時間限制、功能限制。
掌握:反靜態(tài)分析技術(shù)、反動態(tài)跟蹤、常用保護(hù)技術(shù)、加殼軟件、文件脫殼。了解:軟件保護(hù)技術(shù)概述、軟件加殼的概念、軟件保護(hù)建議。第12章
軟件保護(hù)技術(shù)12.1軟件保護(hù)技術(shù)概述12.2軟件保護(hù)的基本要求12.3常見軟件保護(hù)技術(shù)12.4軟件保護(hù)的應(yīng)用模式12.5軟件加殼12.6軟件保護(hù)的一些建議本章小結(jié)12.1軟件保護(hù)技術(shù)概述軟件保護(hù)技術(shù)從廣義的角度來說,可包括計算機(jī)軟件和系統(tǒng)的安全。目前大多數(shù)關(guān)于計算機(jī)安全的研究,主要是研究如何防止合法用戶和其數(shù)據(jù)被惡意客戶端程序所攻擊,以及如何設(shè)計和管理計算機(jī)系統(tǒng)來實現(xiàn)一個嚴(yán)密的安全系統(tǒng)。軟件保護(hù)技術(shù)從狹義的角度來說,即如何防止合法軟件被盜版,主要包括基于硬件的保護(hù)方式和基于軟件的保護(hù)方式。在介紹具體的軟件保護(hù)技術(shù)之前,先介紹一下軟件保護(hù)技術(shù)的產(chǎn)生、發(fā)展以及軟件保護(hù)與軟件破解的關(guān)系。12.1軟件保護(hù)技術(shù)概述12.1.1軟件保護(hù)技術(shù)的產(chǎn)生計算機(jī)的應(yīng)用已普及到人類生活中的各個領(lǐng)域。軟件是用戶與計算機(jī)硬件之間的接口,是不可缺少的工具。1976年,美國版權(quán)法就規(guī)定:為存檔或為電子等方面的損壞而進(jìn)行的軟件復(fù)制是合法的。在
Windows操作系統(tǒng)下,只需用鼠標(biāo)拖動就可以輕松完成。軟件復(fù)制給用戶帶來極大的方便,用戶可以根據(jù)自己所需復(fù)制和使用軟件。對軟件商來說,他們開發(fā)軟件的主要目是獲取利潤。一方面,很多用戶總是在有意或無意地逃避這些費用,在未經(jīng)軟件商授權(quán)的情況下進(jìn)行非法復(fù)制,這些行為對軟件開發(fā)12.1軟件保護(hù)技術(shù)概述12.1.1軟件保護(hù)技術(shù)的產(chǎn)生商和銷售商的利益造成了侵害;另一方面,有些用戶想深入了解某個軟件,對該軟件進(jìn)行修改和加工以形成自己的軟件,這嚴(yán)重?fù)p害了原軟件開發(fā)商的利益。為了保護(hù)自身的利益,軟件開發(fā)商和銷售商不得不采取一定的措施,以防止自己開發(fā)或銷售的軟件被無償?shù)貜?fù)制,這就促進(jìn)了軟件保護(hù)技術(shù)的產(chǎn)生和發(fā)展,出現(xiàn)了各種各樣的軟件保護(hù)技術(shù)。軟件保護(hù)與技術(shù)可謂相生相克,相互促進(jìn),共同發(fā)展。12.1軟件保護(hù)技術(shù)概述12.1.2軟件保護(hù)的發(fā)展軟件保護(hù)最早出現(xiàn)的時間很難確定,大體上來說,于20世紀(jì)80年代初期,首先在游戲機(jī)上開始。對于當(dāng)時的游戲玩家來說,游戲軟件給他們帶來了娛樂,但并沒有創(chuàng)造什么價值,因此很多人還不習(xí)慣于花錢購買游戲軟件,更多的是相互間交換游戲軟件。商家自然很不滿意,便開始采取一些措施迫使玩家去購買軟件,這就促成了軟件保護(hù)的產(chǎn)生。12.1軟件保護(hù)技術(shù)概述1.DOS時代在DOS年代,軟盤保護(hù)是軟件保護(hù)的主要方式。軟盤保護(hù)的基本原理是在軟盤上制作出一些特殊的標(biāo)志,這些標(biāo)志采用常規(guī)的方法無法進(jìn)行復(fù)制,軟件在運行時對這些標(biāo)志進(jìn)行檢測,以此作為判斷是原盤還是復(fù)制盤的依據(jù)。在這一時期,還出現(xiàn)過一種密碼本保護(hù)模式,密碼本是采用抗復(fù)印的低色差方式印出來的,以此來限制軟件的非法盜用。這種保護(hù)模式成本低,效果也就相對差一些。國內(nèi)在這個時期出現(xiàn)了卡保護(hù)技術(shù),即將軟件的密碼存放在保護(hù)卡上。對于開發(fā)商來說,這種保護(hù)方式的成本比較高,而對于用戶來說,安裝軟件需要打開計算機(jī)才能進(jìn)行,很多人無法接受。卡保護(hù)技術(shù)在Windows出現(xiàn)后很快就從市場上消失了。12.1軟件保護(hù)技術(shù)概述2.Windows時代在操作系統(tǒng)出現(xiàn)后,CD-ROM技術(shù)逐漸興起,原有的軟盤保護(hù)技術(shù)被淘汰,市場呼喚新的保護(hù)技術(shù)出現(xiàn)。保護(hù)鎖技術(shù)早在DOS時代就已經(jīng)存在了,但直到這個階段,才得到人們的重視。保護(hù)鎖的工作原理同保護(hù)卡相似,都是通過軟件捆綁硬件的方式實現(xiàn)對軟件的保護(hù)。但保護(hù)鎖在設(shè)計上克服了保護(hù)卡成本太高、用戶使用不方便的缺陷。另外保護(hù)鎖安裝在計算機(jī)外部,用戶自己可以安裝使用。這些特點使得保護(hù)鎖技術(shù)慢慢成為軟件保護(hù)的主流技術(shù)。但是保護(hù)鎖技術(shù)也存在一定的成本問題。對于售價較高的商用軟件來說,這可能不是什么問題,可是對于售價較低、以量取勝的民用類、娛樂類軟件來說,這個問題就不容忽視了。所以,光盤保護(hù)技術(shù)成為人們關(guān)注的新焦點。12.1軟件保護(hù)技術(shù)概述3.互聯(lián)網(wǎng)時代隨著Windows
98的普及,計算機(jī)的發(fā)展進(jìn)入互聯(lián)網(wǎng)時代。軟件的宣傳和銷售出現(xiàn)了一種新的形式,即共享軟件:用戶可以先試用軟件,然后決定是否購買。銷售模式的變化直接導(dǎo)致了軟件保護(hù)模式的變化,這時軟件注冊機(jī)制成為共享軟件的主流保護(hù)手段。著名的游戲DOOM就是第一個通過這種方
式得以成功的典型范例。但其中也有一些問題。例如,一個用戶在獲取合法的注冊信息后,如果他把這些信息透露給他人,他人的共享軟件也成了正式軟件。必須采取一些措施防止這種情況發(fā)生。針對軟件注冊機(jī)制中出現(xiàn)的軟件注冊信息被隨意擴(kuò)散的問題,有人提出了許可證保護(hù)方式。該方式是對軟件注冊機(jī)制的一種改良,把原來的“一人一碼”的方式改成“一機(jī)一碼”。12.1軟件保護(hù)技術(shù)概述12.1.3軟件保護(hù)與破解從表面上看,破解要比保護(hù)難度大一些,因為保護(hù)者可以自由采取各種手段,而破解者必須通過層層剖析來分析破解者的思路,才能實現(xiàn)對保護(hù)的破解。但事實上恰恰相反,因為軟件保護(hù)往往是由一個人或一個公司的部分人員完成的,其保護(hù)方法不會拿出去與別人、特別是別的公司進(jìn)行交流,這就大大限制了保護(hù)技術(shù)的發(fā)展。如果開發(fā)者之間多進(jìn)行交流,不但可以發(fā)現(xiàn)自己的保護(hù)技術(shù)存在的缺陷,而且可以學(xué)習(xí)別人的技術(shù)的優(yōu)點,可以開發(fā)出更多、更好的保護(hù)方法和技術(shù)。很多保護(hù)者對軟件保護(hù)都有一個錯誤的認(rèn)識,認(rèn)為只有不能被破解的保護(hù)才是成功的保護(hù)。事實上,就目前的計算機(jī)體系而言,這只能是一種不可實現(xiàn)的理想。因為軟件最終要交給用戶使用,而破解者就存在于眾多的用戶之中。對保護(hù)者來說,開發(fā)和選擇保護(hù)技術(shù)不能以永遠(yuǎn)不能破解為目標(biāo),而是要看在軟件的生命周期內(nèi),這種保護(hù)技術(shù)是否是安全的。12.2軟件保護(hù)的基本要求軟件保護(hù)的目的主要有兩個:一是防止軟件被非法復(fù)制,二是防止軟件被非法使用和修改。為了達(dá)到這兩個目的,軟件保護(hù)必須滿足3個基本要求:反拷貝、反靜態(tài)分析和反動態(tài)跟蹤。12.2.1反拷貝反拷貝實質(zhì)上就是通過采取某種保護(hù)措施,使得一般用戶無法利用正常的拷貝命令和各種拷貝軟件對受保護(hù)的軟件進(jìn)行完整的復(fù)制,或者是復(fù)制的軟件不能正常使用。反拷貝技術(shù)的實現(xiàn)通常依托于一定的硬件,其基本原理都是在硬件上設(shè)置一些特殊的反拷貝標(biāo)志,以此作為判別軟件是否為盜版的依據(jù)。反拷貝的工作過程如下圖所示。YN開始讀取反拷貝標(biāo)志反拷貝標(biāo)識正確性判斷正常運行結(jié)束拒絕運行12.2軟件保護(hù)的基本要求12.2軟件保護(hù)的基本要求12.2.2
反靜態(tài)分析反靜態(tài)分析就是通過采取防護(hù)措施,使得破解者無法利用靜態(tài)分析工具獲得有用的信息,從而阻止破解。軟件破解者利用靜態(tài)分析工具跟蹤機(jī)器代碼程序的執(zhí)行,對被保護(hù)的軟件進(jìn)行靜態(tài)的反匯編,閱讀到反拷貝的這一段程序,然后對這段程序進(jìn)行修改,使得被保護(hù)的軟件在運行時不進(jìn)行反拷貝識別,無條件地正常執(zhí)行。這樣反拷貝的功能就完全失去了作用。因此,必須對被保護(hù)的軟件采取防靜態(tài)分析措施,使得破解者無法通過反匯編找到軟件中的反拷貝程序段,從而無法對該程序段進(jìn)行修改。反拷貝軟件被破解后的執(zhí)行過程如下圖所示。其中,虛線代表了反拷貝軟件正常的執(zhí)行流程,左邊的實線代表反拷貝軟件被破解后的執(zhí)行流程。12.2軟件保護(hù)的基本要求YN開始讀取反拷貝標(biāo)志反拷貝標(biāo)志正確性判斷正常運行結(jié)束拒絕運行12.2軟件保護(hù)的基本要求12.2.3
反動態(tài)跟蹤動態(tài)跟蹤是利用調(diào)試程序?qū)σ平獾能浖M(jìn)行跟蹤,在軟件的執(zhí)行過程中捕捉保護(hù)點,通過嘗試修改保護(hù)點的判別和跳轉(zhuǎn)來實現(xiàn)對軟件的破解。由于任何的保護(hù)措施都要與軟件相結(jié)合,因此保護(hù)的思路、算法、對密鑰的讀取及對用戶合法性的判別都會在軟件中體現(xiàn)出來。如果被保護(hù)軟件中沒有采取任何反跟蹤措施,保護(hù)執(zhí)行時的每一個動作都會在破解者面前暴露無遺,破解者就可以順藤摸瓜,徹底弄清保護(hù)者的思路,實現(xiàn)對軟件的破解,再優(yōu)秀的保護(hù)技術(shù)也都失去了作用,所以軟件保護(hù)必須考慮反動態(tài)跟蹤。12.2軟件保護(hù)的基本要求反動態(tài)跟蹤是軟件保護(hù)中最能顯示技術(shù)水平的部分。一個有效的反跟蹤技術(shù)應(yīng)具有以下3個特征:重要的程序段是不可跳躍和修改的。如果沒有使用保護(hù)系統(tǒng)的破解算法,保護(hù)部分應(yīng)不可破解。保護(hù)系統(tǒng)不能被動態(tài)跟蹤執(zhí)行。保護(hù)者們設(shè)計了眾多的反動態(tài)跟蹤技術(shù),常見的有破壞中斷向量、封鎖鍵盤、控制屏幕顯示、時鐘檢測、程序自檢、逆指令流技術(shù)等。12.3常見軟件保護(hù)技術(shù)軟件保護(hù)技術(shù)比較多,其原理和實現(xiàn)方法各不相同。在了解不同軟件保護(hù)技術(shù)的基礎(chǔ)上,將其有機(jī)組合,可以獲得更佳效果。因為軟件保護(hù)多基于硬件或者軟件的底層,因此常用匯編語言描述其原理或者具體實現(xiàn)方法。12.3.1破壞中斷技術(shù)在利用動態(tài)跟蹤方法進(jìn)行破解時,破解者經(jīng)常使用的一個軟件是DEBUG調(diào)試程序。在進(jìn)行跟蹤時,使用得最多的是利用單步中斷(INT
1)和斷點中斷(INT
3)兩個中斷向量,所以只要破壞了這兩個中斷向量,即可阻止DEBUG調(diào)試程序的正常運行,從而阻止了跟蹤。對中斷向量的處理可采用以下方法:修改INT
1和INT
3這兩個中斷服務(wù)程序入口地址。將單步中斷向量地址和端點中斷向量地址作為保護(hù)軟件必須使用的數(shù)據(jù)單元,在軟件運行過程中必須使用存放在其中的數(shù)據(jù)??梢灾匦略O(shè)置單步中斷和斷點中斷向量,使它們指向保護(hù)程序自己的一個子程序段。重新設(shè)置單步中斷和斷點中斷向量,使其指向別的中斷向量服務(wù)程序。在單步中斷和斷點中斷向量地址中存放一段程序,保護(hù)程序在運行過程中轉(zhuǎn)到中斷向量地址執(zhí)行該段程序。12.3常見軟件保護(hù)技術(shù)12.3常見軟件保護(hù)技術(shù)12.3.2封鎖鍵盤技術(shù)無論使用何種手段進(jìn)行動態(tài)跟蹤,跟蹤者都需要向系統(tǒng)發(fā)送命令,所以可以在軟件程序執(zhí)行過程中不需要鍵盤支持的時間里封鎖鍵盤,不響應(yīng)跟蹤者的輸入,使得跟蹤無法進(jìn)行。鍵盤信息輸入采用的是硬件中斷方式,由BIOS中的鍵盤中斷服務(wù)程序來接收、識別、轉(zhuǎn)換,然后送入鍵盤緩沖區(qū)。在軟件運行過程中不需要鍵盤支持時,先封鎖鍵盤的輸入,等需要鍵盤支持或識別程序運行結(jié)束時,再恢復(fù)鍵盤的原有功能。這樣并不影響程序的正常運行,而跟蹤者卻不能輸入任何命令,其跟蹤自然無法進(jìn)行下去。封鎖鍵盤輸入的方法有以下幾種。1.修改鍵盤中斷向量鍵盤中斷向量為9,BIOS的鍵盤I/O中斷的中斷向量為16H,它們的中斷服務(wù)程序的入口地址分別存放在內(nèi)存地址0000:0024H和0000:0058H起始的4個字節(jié)中,改變這些地址中的內(nèi)容,鍵盤信息就不能正常輸入了。12.3常見軟件保護(hù)技術(shù)2.禁止鍵盤中斷鍵盤中斷是一個可屏蔽中斷,可通過向主板上的8259芯片中斷控制器發(fā)送屏蔽控制字來屏蔽鍵盤中斷??刂奇I盤的是中斷屏蔽寄存器的第1位,只要將該位置1,即可關(guān)閉鍵盤的中斷。封鎖鍵盤中斷的指令如下:
IN
AL,21HOR
AL,02HOUT
21H,AL開放鍵盤中斷的指令如下:
IN
AL,21HAND
AL,0FDHOUT
21H,AL12.3常見軟件保護(hù)技術(shù)12.3常見軟件保護(hù)技術(shù)3.禁止接收鍵盤數(shù)據(jù)鍵盤數(shù)據(jù)的接收是由主板上的8255芯片并行接口完成的。其中,端口A用來接收鍵盤掃描碼,端口B的第7位用來控制端口A的接收,該位為0表示允許鍵盤輸入,為1則清除鍵盤。正常情況下,來自鍵盤的掃描碼從端口A接收之后,都要清除鍵盤,然后再允許鍵盤輸入。為了封鎖鍵盤輸入,只需將端口B的第7位置1即可,指令如下:IN
AL,61HOR
AL,80HOUT
61H,AL當(dāng)需要恢復(fù)鍵盤輸入時,執(zhí)行以下指令:
IN
AL,61HAND
AL,7FHOUT
61H,AL12.3常見軟件保護(hù)技術(shù)4.不接受指定鍵如果保護(hù)系統(tǒng)在運行時必須從鍵盤上接收信息,可以通過對鍵盤中斷服務(wù)程序進(jìn)行修改擴(kuò)充,使之不接受一些敏感的鍵碼,以達(dá)到反跟蹤的目的。但該方法是一種不得以而采取的方法,因為它有相當(dāng)大的局限性和漏洞:首先,如果跟蹤者使用的跟蹤軟件不能很好的確定鍵盤輸入信息,那么敏感鍵碼就無法確定;其次如果保護(hù)系統(tǒng)在接收的信息中牽涉到一些敏感的鍵碼,這種方法就完全行不通了。在反跟蹤結(jié)束時要及時恢復(fù)鍵盤中斷,保證系統(tǒng)的正常運行。12.3常見軟件保護(hù)技術(shù)12.3.3控制屏幕顯示在利用調(diào)試工具進(jìn)行跟蹤時,跟蹤者需要根據(jù)屏幕顯示內(nèi)容對程序進(jìn)行解讀,所以可以在軟件程序執(zhí)行過程中在無須屏幕顯示的時間里控制屏幕顯示,使得跟蹤者無法看到屏幕正確的輸出,進(jìn)而阻止跟蹤??刂破聊伙@示的方法如下:1.封鎖屏幕顯示嵌入受保護(hù)程序中的識別程序在執(zhí)行期間通常不需要在屏幕上顯示信息,而跟蹤軟件在執(zhí)行時需要將跟蹤情況在屏幕上顯示出來,以供跟蹤者查看。因此,在識別程序中可以增加一段程序,將前景色和背景色置為同一種顏色,使得跟蹤者在跟蹤時無法看到調(diào)試信息,以此達(dá)到反動態(tài)跟蹤的目的。用以下指令即可實現(xiàn)屏幕顯示的封鎖:
MOV
AH,0BHMOV
BH,0MOV
BL,0INT
10H2.修改顯示器I/O中斷服務(wù)程序的入口地址顯示器I/O中斷INT
10H的中斷入口地址存放在內(nèi)存地址0000:0040H開始的4個字節(jié)中,修改這4個字節(jié)
中的內(nèi)容,就可破壞或擴(kuò)充顯示器I/O中斷服務(wù)程序。由于動態(tài)調(diào)試程序DEBUG的顯示信息基本上是通過INT
10H來進(jìn)行的,因此,修改INT
10H中斷向量即可
實現(xiàn)對屏幕的封鎖,同時造成“死機(jī)”的假象,給跟蹤者造成錯覺。12.3常見軟件保護(hù)技術(shù)12.3常見軟件保護(hù)技術(shù)3.檢查保護(hù)軟件是否處于動態(tài)調(diào)試程序的監(jiān)控之下動態(tài)調(diào)試程序DEBUG在顯示信息時,必然會出現(xiàn)屏幕上滾和換頁等操作。因此,通過經(jīng)常檢查屏幕上某些信息的狀態(tài),就可以判別保護(hù)程序是否處于動態(tài)調(diào)試程序的監(jiān)控之下。獲取屏幕信息可用以下指令來實現(xiàn):MOVAH,02HMOVBH,00HMOVDH,行坐標(biāo)MOVDL,列坐標(biāo)INT10HMOVAH,08HINT10H12.3常見軟件保護(hù)技術(shù)4.定時清屏每臺機(jī)器都有固定位置和長度的視屏緩沖區(qū),具體的位置和長度隨顯示器的類型而不同。各類顯示器上的所有信息都是視屏緩沖區(qū)中信息的反應(yīng)。如果直接對視屏緩沖區(qū)進(jìn)行操作,可以獲得比利用顯示中斷快得多的顯示速度?,F(xiàn)在許多先進(jìn)的跟蹤調(diào)試軟件都采取了這種方法,其目的有兩個:一是提高速度,二是針對反跟蹤技術(shù)。反跟蹤技術(shù)也可以利用這個方法,通過對時鐘中斷進(jìn)行修改擴(kuò)充,可以使時鐘中斷定時、頻繁清屏,這樣就使得跟蹤者無法看清屏幕顯示的跟蹤信息,達(dá)到破壞跟蹤的目的。12.3常見軟件保護(hù)技術(shù)12.3.4時鐘檢測定時檢測定時檢測指的是選定一段程序執(zhí)行的時間,比較這段程序的正常執(zhí)行時間和實際執(zhí)行時間是否一致。定時檢測技術(shù)在具體實現(xiàn)時要注意以下兩點。程序正常運行時間的確定這個時間一般應(yīng)比用戶可能使用的最慢機(jī)器運行的時間稍微長一些。如果在檢測時發(fā)現(xiàn)程序執(zhí)行所用時間還大于該時間,就可以確定當(dāng)前的程序是被跟蹤執(zhí)行了。程序執(zhí)行時間較短的情況如果發(fā)現(xiàn)程序執(zhí)行所用的時間小于預(yù)計的時間,不能認(rèn)為是絕對沒被跟蹤,應(yīng)進(jìn)行進(jìn)一步檢測。12.3常見軟件保護(hù)技術(shù)偶爾檢測在保護(hù)軟件中加入判斷時間的功能,當(dāng)時間滿足某一條件時,對保護(hù)軟件中的關(guān)鍵部位進(jìn)行判斷。利用時鐘中斷法時鐘中斷INT
8大約每隔55ms就要被執(zhí)行一次,它主要執(zhí)行兩項任務(wù):一是計時,二是管理軟盤驅(qū)動器的啟閉時間。另外,在它執(zhí)行時,還要再次調(diào)用INT
1
AH和INT
1
CH中斷。其中,INT
1
CH中斷
實質(zhì)上只是一個空操作的中斷,當(dāng)用戶有某種周期性的工作時,用戶可以自己設(shè)計中斷服務(wù)程序取而代之。12.3常見軟件保護(hù)技術(shù)12.3.5程序自檢程序自檢指的是系統(tǒng)自動檢測當(dāng)前程序是否符合常規(guī)或者約定的規(guī)則,如果不符合,則有可能被跟蹤了。通常有文件屬性自檢和程序代碼自檢兩種方式。1.文件屬性的自檢為了避免用戶的誤刪除操作,或者為了阻止非法用戶的修改操作,往往保護(hù)軟件的大部分文件的文件屬性都被設(shè)成只讀。12.3常見軟件保護(hù)技術(shù)2.程序代碼自檢為了破解保護(hù)軟件,破解者總是要修改軟件中的部分代碼。為了防止這種情況的發(fā)生,可以在保護(hù)軟件運行時,不斷地對前面的程序代碼進(jìn)行檢查,一旦發(fā)現(xiàn)被修改,就停止運行或執(zhí)行其他操作。另外,也可以把前面程序代碼作為后面程序代碼的破解密鑰,如果跟蹤者修改了前面的程序代碼,那后面的程序代碼就不能正確被破解,從而不能正確運行,以此達(dá)到反跟蹤的目的。顯然,使用這種方法要求保護(hù)軟件的程序以分塊方式進(jìn)行保護(hù)。12.3常見軟件保護(hù)技術(shù)12.3.6口令保護(hù)口令保護(hù)是一種常見的保護(hù)技術(shù),就是在保護(hù)軟件中增加一段程序,在軟件運行時要求用戶輸入口令,用戶的輸入通常不是以明文形式出現(xiàn)。接收了用戶的輸入后,保護(hù)軟件通常會對用戶的輸入進(jìn)行一些處理,然后將處理的結(jié)果與規(guī)定的字符串進(jìn)行比較。如果兩者一致,則保護(hù)軟件正常運行;否則,使程序運行結(jié)束或進(jìn)入死循環(huán)。如果對口令的處理使用了較復(fù)雜的算法,或者作為對保護(hù)軟件的代碼進(jìn)行破解的密鑰,效果會更好。12.3常見軟件保護(hù)技術(shù)12.3.7程序分塊保護(hù)為了防止保護(hù)程序被反匯編,最好以密文的形式將程序分塊裝入內(nèi)存;在執(zhí)行時,由上一塊保護(hù)程序?qū)ο乱粔K程序進(jìn)行破解,某一塊程序執(zhí)行完畢馬上進(jìn)行清除。這樣任何時刻,跟蹤者都不能從內(nèi)存中獲得完整的破解程序代碼。在防止反匯編的同時,程序分塊保護(hù)使得跟蹤者無法確定在程序中哪些位置設(shè)置斷點,從而在一定程度上阻止了跟蹤。12.3常見軟件保護(hù)技術(shù)12.3.8
指令修改CPU執(zhí)行指令和取指令是分開進(jìn)行的。為了提高運行速度,CPU專門開辟了一個指令流隊列,以存放將要執(zhí)行的指令。在執(zhí)行一條指令的同時,把它后面的一條或若干條指令取出放入指令流隊列中,以減少CPU為取指令而等待的時間??梢岳眠@個特點設(shè)計反跟蹤方法:在執(zhí)行某一條指令時對其后的某條指令進(jìn)行修改。12.3常見軟件保護(hù)技術(shù)12.3.9逆指令流指令代碼在內(nèi)存中是從低地址向高地址存放的,CPU執(zhí)行指令的順序也是這樣,這個過程由硬件來實現(xiàn)。逆指令流就是改變指令順序執(zhí)行的方式,使CPU按逆向的方式執(zhí)行指令,使得跟蹤者無法閱讀逆向排列的指令代碼,從而阻止跟蹤。由于指令存放與讀取是由硬件決定的,所以用軟件的方式實現(xiàn)逆指令流有一定難度,但該方法是一種非常有效的反跟蹤技術(shù),目前關(guān)于這方面的研究也比較多。12.4軟件保護(hù)的應(yīng)用模式軟件保護(hù)的應(yīng)用模式是指保護(hù)者在對軟件實施保護(hù)時,對不滿足保護(hù)條件的情況所采取的相關(guān)對策。目前,軟件保護(hù)的應(yīng)用模式主要有:使軟件無法繼續(xù)運行、使用次數(shù)/時間限制、軟件功能限制、NAG窗口、加水印、服務(wù)升級等。1.使軟件無法繼續(xù)運行這是最常見的對軟件進(jìn)行保護(hù)的應(yīng)用模式,當(dāng)發(fā)現(xiàn)保護(hù)條件不滿足時,軟件結(jié)束運行。大部分的商業(yè)軟件都是這樣設(shè)計的。如果采用這種保護(hù)模式,通常保護(hù)程序段都是在軟件最初始運行的時候執(zhí)行,很容易被跟蹤破解。12.4軟件保護(hù)的應(yīng)用模式2.次數(shù)/時間限制這是保護(hù)共享軟件最常用的應(yīng)用模式。一般共享軟件都有30天的試用期,過了這個期限就不能再使用了。部分商用軟件也采用了這種模式,讓用戶先免費使用一段時間或一定次數(shù)。這種應(yīng)用模式的問題在于軟件試用時,通常軟件里已經(jīng)包含了實現(xiàn)軟件所有正常功能的代碼,只是被保護(hù)過了。從理論上講,這種類型的保護(hù)一定可以破解,只是需要一定的時間。12.4軟件保護(hù)的應(yīng)用模式3.軟件功能限制這種類型的保護(hù)模式應(yīng)用也很多,大部分的演示版軟件都是根據(jù)這個思路來設(shè)計的。例如,有的演示版軟件無法保存結(jié)果或者無法輸出打印等,只有成為正式的用戶,才能使用軟件完整的功能。這種保護(hù)應(yīng)用模式是推薦的。但需要注意的是,如果希望軟件中某些功能不能使用,就不要在軟件中包含實現(xiàn)該功能的代碼。這種模式的缺陷在于當(dāng)用戶決定購買后,經(jīng)銷商還需要向其提供一個功能完整的版本。12.4軟件保護(hù)的應(yīng)用模式4.NAG窗口NAG窗口其實就是很多軟件在剛開始執(zhí)行時,或者在執(zhí)行過程中彈出的提醒用戶還沒有注冊的窗口。廣義上說,在軟件執(zhí)行過程中所有與軟件本身正常功能無關(guān)的、用戶不想看到的窗口都屬于NAG窗口,如現(xiàn)在流行的令很多用戶討厭的軟件中彈出的廣告窗口。很多這類軟件在過了試用期仍然可以使用,只是NAG窗口頻繁出現(xiàn),令未注冊的用戶很是心煩。這類軟件中包含了實現(xiàn)軟件正常功能的所有代碼,破解者要做的工作是如何去除NAG窗口。12.4軟件保護(hù)的應(yīng)用模式加水印很多強(qiáng)調(diào)輸出結(jié)果的軟件采用加水印的方式對軟件進(jìn)行保護(hù),如印刷類、圖像處理類軟件。這種保護(hù)方式通常效果比較好,而且破解難度相對大一些。服務(wù)升級服務(wù)升級嚴(yán)格來說并不是軟件保護(hù)的應(yīng)用模式,而是軟件本身的一種服務(wù)模式,但好的服務(wù)升級卻能有效地保護(hù)軟件。比較常見的是Windows的升級服務(wù),自從Windows
XP采用許可證保護(hù)方式后,每次發(fā)布新的升級補(bǔ)丁時,都會對市面上存在的各種破解版本進(jìn)行清理。這樣,如果用戶使用破解的Windows
XP,就不能進(jìn)行升級,一旦進(jìn)行升級,就會被識別出是破解版。這實際上成為了一種更為有效地軟件保護(hù)模式,但同時也把保護(hù)和破解的斗爭無限制的延長了。12.5
軟件加殼12.5.1軟件加殼概述軟件加殼其實是利用特殊的算法,對.exe、.dll等可執(zhí)行文件里的資源進(jìn)行壓縮,改變其原來的特征碼,隱藏一些字符串等等,使一些資源編輯軟件不能正常打開或者修改。為軟件加殼的目的有兩個。一是對受保護(hù)的程序進(jìn)行保護(hù),防止軟件的相關(guān)信息泄露,同時加殼技術(shù)中往往集成了反跟蹤、反內(nèi)存補(bǔ)丁、反
dump等技術(shù),可以有效防止軟件被反編譯和修
改;二是對受保護(hù)的程序進(jìn)行壓縮,節(jié)省存儲空間,便于快速傳輸。能夠完成對軟件保護(hù)和壓縮的軟件稱為加殼軟件。12.5軟件加殼軟件開始軟件執(zhí)行軟件結(jié)束軟件開始軟件執(zhí)行軟件結(jié)束殼程序執(zhí)行(a)加殼前軟件的運行過程(b)加殼后軟件的運行過程加殼前后軟件的運行過程如下圖所示:12.5軟件加殼12.5.2加殼軟件目前的加殼軟件中幾乎集成了所有的反拷貝、反靜態(tài)分析、反動態(tài)跟蹤等技術(shù),利用加殼軟件對軟件進(jìn)行保護(hù)可以節(jié)省軟件開發(fā)者的精力。常見的加殼軟件有ASProtect、UPX、PECompact等。以下以ASProtect
SKE
2.3為例,對該軟件的使用進(jìn)行簡單介紹。從網(wǎng)絡(luò)上下載該軟件,安裝到本地計算機(jī)上,就可以開始使用了。該軟件的使用較為簡單,共分4個步驟:主應(yīng)用選擇、應(yīng)用模式的定義與選擇、應(yīng)用測試、應(yīng)用保護(hù)。12.5軟件加殼1.主應(yīng)用選擇軟件啟動后首先進(jìn)入應(yīng)用程序主窗口,如右圖所示。在該窗口進(jìn)行應(yīng)用名稱、應(yīng)用版本號、要保護(hù)的文件、輸出文件、保護(hù)選項、壓縮選項等選擇。選擇完畢單擊Modes選項卡,進(jìn)入應(yīng)用模式選擇與定義界面,如下圖所示。12.5軟件加殼12.5軟件加殼2.應(yīng)用模式的定義與選擇在Modes選項卡中,可以定義或選擇軟件加殼所采用的保護(hù)模式。如果定義一個新的模式,需指定模式名稱、模式狀態(tài)、軟件激活密碼、模式到期判定條件等選項。也可以選擇一個已有的模式。如果模式中選擇了使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑裝修勞務(wù)分包合同范本
- 2024年小吃檔口的承包合同協(xié)議書
- 代理配股繳款協(xié)議專業(yè)版
- 家庭住宅客戶專用
- 正式授權(quán)加工合同書
- 房產(chǎn)中介銷售代理合同范例
- 電臺合作協(xié)議范本新
- 委托投資合同協(xié)議書模板
- 長期出租協(xié)議
- 改進(jìn)版用工合同格式
- 公路水運工程施工安全標(biāo)準(zhǔn)化指南(251頁)
- 網(wǎng)絡(luò)營銷在生鮮電商“盒馬鮮生”中的應(yīng)用分析市場營銷專業(yè)
- EN12472鎳釋放磨損和腐蝕試驗方法
- 中小學(xué)節(jié)約能源資源工作實施方案(完整版)
- 建筑施工作業(yè)活動風(fēng)險分級管控清單
- 基于DCS的溫度控制系統(tǒng)的設(shè)計與應(yīng)用(共35頁)
- 大貓英語分級閱讀 六級1 A Letter to New Zealand課件
- 科創(chuàng)板知識測評含答案
- 第幾和幾專項訓(xùn)練
- 北京市海淀區(qū)2021-2022學(xué)年七年級上學(xué)期期末考試語文試卷(word版含答案)
- (完整版)心理健康教育五年工作規(guī)劃
評論
0/150
提交評論