【摘 要】在進行軟件開發(fā)的過程中,特別是應(yīng)用到商業(yè)領(lǐng)域之中軟件,對其使用注冊碼以及激活碼的保護方式有著極大的必要性,而對于未注冊的用戶進行軟件使用來說,軟件的使用便會受到一定程度的約束,例如使用時間、畫面等方面。但就目前來說,部分非法目的人員具有著較高的軟件破解技術(shù),大量具有注冊機制的軟件被完全破解,雖然我國已經(jīng)在逐漸增大破解軟件的打擊力度,但是其效果并不理想。這也就使得軟件的保護,只有針對軟件來記性加密技術(shù)強化。本篇文章主要針對軟件的破解以及保護進行了全面詳細的探討,以期為我國正版軟件的發(fā)展作出貢獻。
【關(guān)鍵詞】軟件;破解;保護;加密
0 引言
軟件的使用在我國的信息網(wǎng)絡(luò)中起著極其重要的作用,部分軟件在制作的過程中會耗費大量的精力以及時間,而要取得回報,便是利用銷售軟件的方式,來將軟件販售給需要使用的人。但是部分人員為了能夠免費的使用軟件或者為了能夠達到非法的目的,便對軟件的保護機制記性破解,使得軟件能夠不受限制也無需購買的被使用。這不僅對于軟件開發(fā)者自身的經(jīng)濟利益帶來了損害,還導致軟件開發(fā)者失去了繼續(xù)開發(fā)的信心。下文主要針對軟件的破解以及開發(fā)進行了全面詳細的探討。
1 常見的軟件破解方法
首先我們來了解一下破解中幾個重要的專業(yè)術(shù)語。
1)斷點,斷點實際上就是程序在運行過程中被中斷的環(huán)節(jié),而導致中斷現(xiàn)象出現(xiàn)的原因通常都是由于特殊情況的出現(xiàn),而使得計算機在這一過程中對當前任務(wù)進行暫停,并且直接執(zhí)行其他任務(wù),之后再返回繼續(xù)執(zhí)行。而在這期間進行解密的過程中,就是在程序?qū)τ谧源a進行獲取并且開始對注冊碼進行對比的過程中,便完全將這個過程中斷下來,之后再利用程序分析的方式,來迅速的計算出相應(yīng)的注冊碼。
2)領(lǐng)空,領(lǐng)空的意識實際上就是程序自身管理的領(lǐng)土范圍內(nèi),也就是對于程序自身的程序碼區(qū)域進行處理。每個程序自身在欲行的過程中,實際上都沒有一個固定的編寫方式,那么在切入程序或者是中斷程序的過程中,就不能夠依賴程序斷點來設(shè)置,也就是說,所設(shè)置的斷點必須要是每個程序在運行的過程中,都會運用到的相應(yīng)程序。
3)API,即Application Programming Interface的簡寫,這一意思也能夠被稱之為是程序的編程接口,其中所涉及到的定義函數(shù)屬于一個系統(tǒng)性的集合,其中提供了大量系統(tǒng)訪問過程中的相應(yīng)特征。API之中,通常會包含至少數(shù)百個應(yīng)用程序的相應(yīng)函數(shù),這部分函數(shù)在進行執(zhí)行期間,實際上都是執(zhí)行的與系統(tǒng)相關(guān)的操作,例如屏幕輸出、內(nèi)存分配、窗口創(chuàng)建等等,從本質(zhì)上來說,WINDOWS程序事實上在運行期間主要就是以API來作為基礎(chǔ)來實現(xiàn)與系統(tǒng)的交互性。任何形式的程序,實際上其底層都是利用大量的API函數(shù)來完成的功能構(gòu)建以及實現(xiàn)。
了解了以上三個專業(yè)術(shù)語后,我們看下基本的軟件破解方法。
1.1 暴力破解法
這是最常見的也是最簡單的破解方法,破解者直接利用編輯工具<例如ULTRAEDIT-32>對可執(zhí)行文件進行修改,也就是說通過修改可屬性程序的源文件來達到破解目的。某些元件在驗證用戶注冊信息和注冊碼時候,如果用戶輸人的信息與軟件通過的算法生成的注冊碼相等,程序就會注冊成功,否則就會注冊失敗。
1.2 利用算法注冊機
算法注冊機,事實上就是對于軟件校對注冊碼過程中的運算機制進行了分析,從而制作出來的一種能夠自動計算出注冊碼的軟件。因此,軟件本身的算法極其重要,部分情況下軟件自身的作者也會對這類軟件進行編寫,以便于軟件的銷售工作。這類軟件加密的特點是一個注冊碼只能在一臺電腦上使用,像和電腦進行了一對一的綁定。使用步驟是首先運行試用的軟件,得到本臺機器的軟件機器碼,再用算法注冊機算號注冊,然后用算法注冊機直接算出合適的注冊碼,最后用算出來的注冊碼直接注冊。
1.3 補丁破解法和文件注冊法
補丁破解法是指用相關(guān)的補丁程序來修改軟件,以達到破解軟件的目的。此方法一般是破解軟件的驗證注冊碼或時間,基本上都是修改原程序的判斷語句。
2 常見的軟件保護方法
2.1 注冊碼
軟件的注冊碼一般都是一機一個,不能重復。下面我們來看看如何實現(xiàn)的。
第一步根據(jù)硬盤卷標和CPU序列號,生成機器碼,首先編寫public static string GetDiskVolumeSerialNum-ber()函數(shù)取得設(shè)備硬盤的卷標號,其次編寫public static string getCpu()函數(shù)獲得CPU的序列號,最后生成機器碼,函數(shù)如下:
String Number; String public static string getsoftNum()
{strNum-=getCpu+GetDiskVolumeSerial-strsoftNum=strNum.Substring(0, 24);//從生成的字符串中取出前24個字符做為機器碼return strsoftNum; }
第二步根據(jù)機器碼生成注冊碼,需要編寫public static string getRegistNum()函數(shù)來實現(xiàn)。第三步。檢查注冊狀況,若沒有注冊,可自定義試用天數(shù),延遲,未注冊畫面等等,可編寫private void CheckRegist0 Cpl數(shù)來實現(xiàn)。
2.2 軟加密
所謂軟加密就是不依靠特別硬件來實現(xiàn)的對軟件的保護技術(shù)。當前國際上比較通用的軟件都采取軟加密的方式,例如微軟的windows系統(tǒng)、殺毒軟件等,它的最大優(yōu)勢在于極低的加密成本。目前主要有密碼法、計算機硬件校驗法、鑰匙盤法等。目前比較流行的是使用外殼,外殼分為壓縮殼和加密殼,其中壓縮殼的保護性比較弱,所以一般采用加密殼,其原理是利用堆棧平衡原理,修改程序人口處代碼,使其跳轉(zhuǎn)到殼代碼執(zhí)行解密程序,將原程序代碼解密后跳回原程序的OEP繼續(xù)執(zhí)行。目前比較強的加密殼采用的是動態(tài)解密代碼、SMC,IAT加密技術(shù),程序在運行過程中動態(tài)解密代碼,執(zhí)行完畢后立刻刪除。
2.3 硬加密
硬加密方式,實際上就是人們?nèi)粘I钪兴R姷募用苕i以及加密狗等形式的加密措施,其造型類似于U盤,能夠直接插在電腦的USB接口上或者是并口的軟硬體之上,通過硬件保護的措施,能夠切實有效的提升對于數(shù)據(jù)的保護能力,最大限度的避免知識產(chǎn)權(quán)被濫用的可能性。在實際運行的過程中,其原理就在于程序運行直接對接口上的解密設(shè)備進行讀取,任何其他形式的解密方式都無法冒充,同時也不認可。這是目前市場上防護性能最佳的加密工具,但是由于其流通的不便捷性以及成本問題,導致其只能夠在部分高端軟件中進行使用。
3 結(jié)束語
綜上所述,軟件的破解以及加密實際上就是矛與盾之間的關(guān)系,而優(yōu)秀的加密技術(shù)便是使得破解人員在進行破解的過程中,所需要耗費的精力以及時間大幅度提升,直到破解者完全放棄。同時,我們也必須要充分的認識到,軟件破解不僅是不道德的行為,同樣也是需要承擔法律責任的違法行為?,F(xiàn)如今,我國的軟件進入到了市場化的過程中,軟件的價格逐漸平面化,已經(jīng)有越來越多的人能夠用得起正版軟件,因此,我們要盡量的提升自我思想意識,多支持正版軟件的發(fā)展,這對于我國軟件行業(yè)朝著國際化的方向發(fā)展起到了極其重要的推動作用。
【參考文獻】
[1]高茂華,鄭建民.GHOST在軟件破解上的研究[J].中國現(xiàn)代教育裝備,2006(04).
[2]徐良華,孫玉龍,高豐,朱魯華.基于逆向工程的軟件漏洞挖掘技術(shù)[J].微計算機信息,2006(24).
[3]王玉英,陳平,方海燕,許人民.軟件逆向工程的研究與發(fā)展[J].西安工程科技學院學報,2006(03).
[責任編輯:陳雙芹]