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