前言:想要寫出一篇引人入勝的文章?我們特意為您整理了計算機軟件保護與恢復探索范文,希望能給你帶來靈感和參考,敬請閱讀。
簡單來講,反動態(tài)跟蹤的目的是防止別人使用調(diào)試器來追蹤軟件運行。這種方法最基本的思路是讓程序去故意執(zhí)行一些能使干擾的調(diào)試器的正常運行或者可以讓調(diào)試器失效的動作。反調(diào)試代碼將測試是否需要額外增加一個調(diào)試器,如果需要的話,程序則自動退出,或者讓調(diào)試器終止。反調(diào)試有很多方法,但大部分反調(diào)試方法都與一個特定的平臺及特定調(diào)試器有關(guān)。
軟件壓縮與加殼技術(shù)外殼程序事先早于被保護對象程序運行的程序,這部分的程序?qū)υ绦虼a和數(shù)據(jù)進行相應解密還原操作。一些殼軟件能加密數(shù)據(jù)并且可以對可執(zhí)行文件的代碼和數(shù)據(jù)壓縮,這不僅降低了文件在磁盤上所占有的存儲空間,而且在某些情況下,可以有效提高可執(zhí)行文件加載的速度。大多數(shù)的軟件外殼還集成有反靜態(tài)分析方法、反跟蹤技術(shù)及反脫殼技術(shù)從而增加了破解難度。加密代碼是防止靜態(tài)分析程序的一種常用的方法。一般可以在程序編譯完成時,給用戶使用之前,將程序加密,并且在可執(zhí)行文件里嵌套可實現(xiàn)解密的代碼來實現(xiàn)解密功能。該方法對于經(jīng)驗豐富的破解者最多也就是在逆向工程中增加一些困難。但是由于只要在可執(zhí)行文件包含有解密程序,它必須包含相應的解密算法及解密密鑰進行解密。由于在程序代碼運行之前必須解密出來,因此,在程序運行的過程中,實現(xiàn)解密的全部或部分程序必須留到內(nèi)存當中。即便如此,代碼加密仍然是防止靜力分析的一種常用方法。這是由于它能夠明顯改善程序的分析復雜性,有時候甚至能夠迫使破解者必須動態(tài)分析程序。
軟件水印軟件水印方法的基本思想是,把版權(quán)信息或者唯一身份識別碼等信息,隱蔽的嵌入應用程序中,當需要時候再用一個特定的水印算法將水印提取出來進行版權(quán)確認,這是一種可以追蹤非法軟件拷貝的副本直到源頭的方法。根據(jù)水印加載的時間來分,軟件水印技術(shù)可以分成靜態(tài)軟件水印技術(shù)和動態(tài)軟件水印技術(shù)2種。靜態(tài)軟件水印的存在并不依賴于軟件運行的狀態(tài),可以在儲存、發(fā)送及運行時進行驗證。靜態(tài)水印軟件通過在軟件編輯時直接或者在編輯完成后加入的方式加入到軟件程序中。只有對軟件本身有足夠的了解,才能最終確定水印信息。根據(jù)水印存放的位置不同,靜態(tài)水印又可以分為靜態(tài)代碼水印和靜態(tài)資料水印2種。動態(tài)水印依賴于軟件運行狀態(tài)而存在,一個動態(tài)的軟件水印的結(jié)構(gòu)是在程序執(zhí)行時被構(gòu)造出來的,因此可能會由某一個特定輸入序列進行觸發(fā)。動態(tài)水印能通過分析水印信息的程序運行時候結(jié)構(gòu)的數(shù)據(jù)的結(jié)構(gòu)來萃取,也可以通過執(zhí)行跟蹤程序提取。動態(tài)軟件水印又可分為動態(tài)執(zhí)行軌跡水印、復活節(jié)彩蛋水印及動態(tài)數(shù)據(jù)結(jié)構(gòu)水印3類。軟件水印保護的目標就是使攻擊者很難對水印程序進行分析,從而防止水印的發(fā)現(xiàn)和竊取,或防止水印的代碼被惡意修改或刪除。
虛擬機保護虛擬機保護技術(shù)是將一段程序匯編成一段特殊意義的代碼,這個代碼不是在目標機被直接執(zhí)行,而是通過一個解釋器來模擬執(zhí)行。虛擬機中的可執(zhí)行代碼文件只有一個數(shù)據(jù)塊,由于虛擬機代碼在運行的過程中進行解釋執(zhí)行,所以反匯編工具不能反編譯虛擬機的代碼。破解者要分析虛擬機的加密結(jié)構(gòu)與執(zhí)行過程要花費大量時間及精力。另外,由于虛擬機能夠屏蔽具體的平臺及相關(guān)信息,編譯器只要產(chǎn)生能夠在虛擬機上進行運行的一種目標代碼,它就可以在各種平臺運行而無需修改,而虛擬機本身需要移植。當虛擬機要執(zhí)行相應的字節(jié)代碼時,再將字節(jié)碼解釋成相應的具體平臺上的機器碼進行執(zhí)行。
計算機軟件恢復的原理與方法
軟件恢復技術(shù)是應對系統(tǒng)軟件老化現(xiàn)象的有力效方法。簡單地說,是當軟件的性能衰退到了一定程度時,終止程序的運行,并對系統(tǒng)重置來清理系統(tǒng)內(nèi)部的狀態(tài),從而能夠釋放操作系統(tǒng)的資源,恢復軟件的性能,并能有效減少由于系統(tǒng)軟件的老化造成意外終止而帶來損失。在進行恢復策略研究時,依據(jù)一定系統(tǒng)模型,將系統(tǒng)狀態(tài)分成系統(tǒng)魯棒狀態(tài)、系統(tǒng)預故障狀態(tài)及系統(tǒng)故障狀態(tài)。根據(jù)對以上原型系統(tǒng)的分析,軟件恢復策略一般分基于時間的軟件恢復策略與基于檢測的軟件恢復策略2種。
基于時間的軟件恢復策略基于時間的恢復策略是實現(xiàn)簡單、成本可預計的一種恢復模式。該方法通常是基于最小的恢復成本和最短的停機時間來得到更高系統(tǒng)服務率或者更快服務響應來提前確定最優(yōu)恢復的時間間隔,對性能衰退的系統(tǒng)周期性的進行恢復?;跁r間的軟件恢復策略中重點研究的一個問題是如何確定最優(yōu)的恢復時間表的問題。
基于檢測的軟件恢復策略基于檢測的恢復策略是通過對系統(tǒng)的檢測來確定恢復模式?;謴湍J降拇_定通常根據(jù)系統(tǒng)參數(shù)、系統(tǒng)運行期間采集到的系統(tǒng)信息并通過合理的數(shù)據(jù)統(tǒng)計等來確定相應的恢復模式?;跈z測的軟件恢復策略首先要確定系統(tǒng)性能進行衰退的閾值和評價指標,主要是分析造成系統(tǒng)的性能衰退的主要的一個原因或者幾個原因的協(xié)調(diào)折中。在系統(tǒng)的運行過程中對系統(tǒng)的性能進行檢測,若達到了預先所設(shè)定的閾值時則執(zhí)行軟件恢復。為減少監(jiān)控的成本,在檢測時可以在指定的時間間隔內(nèi)進行周期性的檢測。
通過對系統(tǒng)進行綜合的權(quán)衡和比較及算法研究,得到完整保護的流程是:首先要對軟件程序有限制,要求用戶至少要進行注冊才能得到完整的使用權(quán)限,并用程序運行與用戶機的硬件相關(guān)聯(lián)的注冊碼進行關(guān)鍵功能解封。其次,為防止解密者利用各種工具得到程序的關(guān)鍵點及關(guān)鍵的信息,應采用反跟蹤技術(shù)、反調(diào)試技術(shù)及反匯編靜態(tài)技術(shù)等進行分析。另外,最好給程序加上一個外衣,把程序包起來,也就是利用加殼軟件或加密鎖等產(chǎn)品來提高自己程序的防范能力和增加破解門檻。也要考慮怎樣有效的保證自己程序只給合法用戶使用,而非合法用戶即使在正常的途徑下得到了正式軟件業(yè)也無法正常使用的問題。目前此問題一般用“一機一碼”進行許可注冊的方式進行解決。在軟件恢復中,在保證產(chǎn)生更多恢復方法的同時要結(jié)合基于時間與基于測量的2種思路進行研究。同時在軟件容錯領(lǐng)域中,將軟件恢復的相關(guān)概念與其他的有效技術(shù)概念相結(jié)合,以便產(chǎn)生出更多新概念和新方法。
結(jié)語
國內(nèi)外的專家學者對軟件的保護及恢復進行了較為深入的研究和探討,并且取得了一系列豐富的科研成果。本文對計算機軟件保護與恢復的理論研究有一定的指導意義。
作者:馬宗亞 張會彥 單位:河北軟件職業(yè)技術(shù)學院