計(jì)算機(jī)軟件保護(hù)論文(2)
計(jì)算機(jī)軟件保護(hù)論文篇二
《淺議計(jì)算機(jī)軟件的破解與保護(hù)》
關(guān)鍵詞:知識(shí)產(chǎn)權(quán),軟件加密,軟件破解
摘要:保護(hù)知識(shí)產(chǎn)權(quán),抵制盜版軟件,是目前中國(guó)軟件業(yè)所面臨的迫切問(wèn)題。目前絕大多數(shù)軟件都采取了加密技術(shù)來(lái)應(yīng)對(duì),本文分析了軟件破解中幾個(gè)重要的專業(yè)術(shù)語(yǔ)和常見(jiàn)的軟件破解方法,并具體介紹了軟加密和硬加密技術(shù)。
中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)識(shí)碼:A
1、引言
開(kāi)發(fā)軟件時(shí),尤其當(dāng)用到商業(yè)用途時(shí),注冊(cè)碼和激活碼是非常重要的,未注冊(cè)的用戶會(huì)加上某些限制,如使用天數(shù),延遲,未注冊(cè)畫(huà)面等等。但是現(xiàn)在的軟件破解技術(shù)十分強(qiáng)大,各種國(guó)內(nèi)外大型軟件都有注冊(cè)機(jī)制,卻同時(shí)也不斷地被破解,國(guó)家一再加大力度,打擊非法軟件出版物,扶持正版軟件,但實(shí)際效果并不理想。大多的軟件商選擇了購(gòu)買加密產(chǎn)品或者加密技術(shù)來(lái)保護(hù)自己的軟件,軟件保護(hù)一般分為軟加密和硬加密。
2、常見(jiàn)的軟件破解方法 首先我們來(lái)了解一下破解中幾個(gè)重要的專業(yè)術(shù)語(yǔ)。 (1)斷點(diǎn),所謂斷點(diǎn)就是程序被中斷的地方,中斷就是由于有特殊事件發(fā)生,計(jì)算機(jī)暫停當(dāng)前的任務(wù),轉(zhuǎn)而去執(zhí)行另外的任務(wù),然后再返回原先的任務(wù)繼續(xù)執(zhí)行。解密的過(guò)程就是等到程序去獲取我們輸人的注冊(cè)碼并準(zhǔn)備和正確的注冊(cè)碼相比較的時(shí)候?qū)⑺袛嘞聛?lái),然后我們通過(guò)分析程序,找到正確的注冊(cè)碼。 (2)領(lǐng)空,所謂程序的領(lǐng)空,就是程序自己的領(lǐng)土地盤(pán),也就是我們要破解的程序自己程序碼所處的位置。每個(gè)程序的編寫(xiě)都沒(méi)有固定的模式,所以我們要在想要切人程序的時(shí)候中斷程序,就必須不依賴具體的程序設(shè)置斷點(diǎn),也就是我們?cè)O(shè)置的斷點(diǎn)應(yīng)該是每個(gè)程序都會(huì)用到的東西。
(3)API,即Application Programming Interface的簡(jiǎn)寫(xiě),我們叫應(yīng)用程序編程接口,是一個(gè)系統(tǒng)定義函數(shù)的大集合,它提供了訪問(wèn)操作系統(tǒng)特征的方法。API包含了幾百個(gè)應(yīng)用程序調(diào)用的函數(shù),這些函數(shù)執(zhí)行所有必須的與操作系統(tǒng)相關(guān)的操作,如內(nèi)存分配、向屏幕輸出和創(chuàng)建窗口等,WINDOWS程序以API為基礎(chǔ)來(lái)實(shí)現(xiàn)和系統(tǒng)打交道。無(wú)論什么樣的應(yīng)用程序,其底層最終都是通過(guò)調(diào)用各種API函數(shù)來(lái)實(shí)現(xiàn)各種功能的。
了解了以上三個(gè)專業(yè)術(shù)語(yǔ)后,我們看下基本的軟件破解方法。
2.1暴力破解法。這是最常見(jiàn)的也是最簡(jiǎn)單的破解方法,破解者直接利用編輯工具<例如ULTRAEDIT-32>對(duì)可執(zhí)行文件進(jìn)行修改,也就是說(shuō)通過(guò)修改可屬性程序的源文件來(lái)達(dá)到破解目的。某些元件在驗(yàn)證用戶注冊(cè)信息和注冊(cè)碼時(shí)候,如果用戶輸人的信息與軟件通過(guò)的算法生成的注冊(cè)碼相等,程序就會(huì)注冊(cè)成功,否則就會(huì)注冊(cè)失敗。
2.2利用算法注冊(cè)機(jī)。算法注冊(cè)機(jī)是要在分析了軟件的注冊(cè)碼算法的基礎(chǔ)上,制作出來(lái)的一種可以自動(dòng)生成軟件注冊(cè)碼的程序。所以軟件的算法很重要,一般軟件作者自己也編寫(xiě),方便軟件的銷售使用。這類軟件加密的特點(diǎn)是一個(gè)注冊(cè)碼只能在一臺(tái)電腦上使用,像和電腦進(jìn)行了一對(duì)一的綁定。使用步驟是首先運(yùn)行試用的軟件,得到本臺(tái)機(jī)器的軟件機(jī)器碼,再用算法注冊(cè)機(jī)算號(hào)注冊(cè),然后用算法注冊(cè)機(jī)直接算出合適的注冊(cè)碼,最后用算出來(lái)的注冊(cè)碼直接注冊(cè)。
2.3利用內(nèi)存破解。我們知道所有正在運(yùn)行的程序的數(shù)據(jù),全部都要加載到內(nèi)存中去,軟件在進(jìn)行注冊(cè)碼認(rèn)證的時(shí)候會(huì)有個(gè)比較的過(guò)程,所以我們只須知道所要破解軟件的注冊(cè)碼的內(nèi)存地址,就達(dá)到目的了。這種方法的優(yōu)點(diǎn)是無(wú)須花大力氣掌握軟件注冊(cè)碼的算法,非常節(jié)省編寫(xiě)內(nèi)存注冊(cè)機(jī)的時(shí)間。步驟是先加載內(nèi)存注冊(cè)機(jī),再通過(guò)它去獲得內(nèi)存中軟件的真實(shí)注冊(cè)碼,或修改內(nèi)存中軟件相關(guān)的某些數(shù)據(jù),來(lái)達(dá)到破解軟件的目的。主要有2種方式,第一種直接從內(nèi)存中得到注冊(cè)碼,第二種在內(nèi)存中模擬已注冊(cè)程序的運(yùn)行環(huán)境。
2.4補(bǔ)丁破解法和文件注冊(cè)法。補(bǔ)丁破解法是指用相關(guān)的補(bǔ)丁程序來(lái)修改軟件,以達(dá)到破解軟件的目的。此方法一般是破解軟件的驗(yàn)證注冊(cè)碼或時(shí)間,基本上都是修改原程序的判斷語(yǔ)句。比如程序試用期是一個(gè)月,就可以把這個(gè)修改掉,來(lái)達(dá)到無(wú)限使用的目的。文件注冊(cè)法就是把軟件的注冊(cè)內(nèi)容放到一個(gè)文件里,以方便自己或別人用它來(lái)注冊(cè),主要有注冊(cè)表導(dǎo)人和注冊(cè)文件導(dǎo)人兩種方式。
3、常見(jiàn)的軟件保護(hù)方法
3.1注冊(cè)碼。軟件的注冊(cè)碼一般都是一機(jī)一個(gè),不能重復(fù)。下面我們來(lái)看看如何實(shí)現(xiàn)的。
第一步根據(jù)硬盤(pán)卷標(biāo)和CPU序列號(hào),生成機(jī)器碼,首先編寫(xiě)public static string GetDiskVolumeSerialNum-ber()函數(shù)取得設(shè)備硬盤(pán)的卷標(biāo)號(hào),其次編寫(xiě)public static string getCpu()函數(shù)獲得CPU的序列號(hào),最后生成機(jī)器碼,函數(shù)如下:
String Number; String public static string getsoftNum() {strNum-=getCpu+GetDiskVolumeSerial-strsoftNum=strNum.Substring(0, 24);//從生成的字符串中取出前24個(gè)字符做為機(jī)器碼return strsoftNum; }
第二步根據(jù)機(jī)器碼生成注冊(cè)碼,需要編寫(xiě)public static string getRegistNum()函數(shù)來(lái)實(shí)現(xiàn)。
第三步。檢查注冊(cè)狀況,若沒(méi)有注冊(cè),可自定義試用天數(shù),延遲,未注冊(cè)畫(huà)面等等,可編寫(xiě)private void CheckRegist0 Cpl數(shù)來(lái)實(shí)現(xiàn)。
3.2軟加密。所謂軟加密就是不依靠特別硬件來(lái)實(shí)現(xiàn)的對(duì)軟件的保護(hù)技術(shù)。當(dāng)前國(guó)際上比較通用的軟件都采取軟加密的方式,例如微軟的windows系統(tǒng)、殺毒軟件等,它的最大優(yōu)勢(shì)在于極低的加密成本。目前主要有密碼法、計(jì)算機(jī)硬件校驗(yàn)法、鑰匙盤(pán)法等。目前比較流行的是使用外殼,外殼分為壓縮殼和加密殼,其中壓縮殼的保護(hù)性比較弱,所以一般采用加密殼,其原理是利用堆棧平衡原理,修改程序人口處代碼,使其跳轉(zhuǎn)到殼代碼執(zhí)行解密程序,將原程序代碼解密后跳回原程序的OEP繼續(xù)執(zhí)行。目前比較強(qiáng)的加密殼采用的是動(dòng)態(tài)解密代碼、SMC , IAT加密技術(shù),程序在運(yùn)行過(guò)程中動(dòng)態(tài)解密代碼,執(zhí)行完畢后立刻刪除,并且對(duì)IAT加密,當(dāng)需要調(diào)用API時(shí)用解密算法算出API的實(shí)際地址來(lái)調(diào)用,更有甚者,殼里有殼。目前常見(jiàn)的比較強(qiáng)的5大殼有:( I ) EncryptPE,其特點(diǎn)是對(duì)IAT加密比較強(qiáng),( 2 ) ASProtect,其特點(diǎn)是采用多層SEH,很容易把人轉(zhuǎn)暈,( 3) ACProtect,其特點(diǎn)是采用stolen code的辦法,( 4 ) Armadillo,其特點(diǎn)是雙進(jìn)程互相檢測(cè),(5)themida,其特點(diǎn)是采用虛擬機(jī)技術(shù)。好的加密效果在于讓盜版者在破解被保護(hù)的軟件時(shí),付出巨大的代價(jià),耗費(fèi)極大的時(shí)間精力,最終被迫放棄攻擊。
3.3硬加密。硬加密就是我們所說(shuō)的加密狗或加密鎖,是一種插在計(jì)算機(jī)USB口或并口上的軟硬件結(jié)合的加密產(chǎn)品,目前絕大部分都是USB口形式,是基于硬件保護(hù)技術(shù),其目的是通過(guò)對(duì)軟件與數(shù)據(jù)的保護(hù)防止知識(shí)產(chǎn)權(quán)被非法使用,是保證高檔軟件在市場(chǎng)生命周期中免受盜版侵害的功能強(qiáng)大的工具。加密狗一般都有幾十或幾百字節(jié)的非易失性存儲(chǔ)空間可供讀寫(xiě),現(xiàn)在較新的狗內(nèi)部還包含了單片機(jī)。軟件開(kāi)發(fā)者可以通過(guò)接口函數(shù)和軟件狗進(jìn)行數(shù)據(jù)交換,來(lái)檢查軟件狗是否插在接口上。加密狗內(nèi)置的單片機(jī)里包含有專用于加密的算法軟件,該軟件被寫(xiě)人單片機(jī)后,就不能再被讀出。這樣,就保證了加密狗硬件不能被復(fù)制。同時(shí),加密算法是不可預(yù)知、不可逆的。加密算法可以把一個(gè)數(shù)字或字符變換成一個(gè)整數(shù),如DConvert (6)=67876,DConvert(X)=34567 0
4、結(jié)束語(yǔ)
軟件破解和軟件加密就是矛和盾的關(guān)系,好的加密效果在于讓盜版者在破解被保護(hù)的軟件時(shí),付出巨大的代價(jià),耗費(fèi)極大的時(shí)間精力,最終被迫放棄攻擊。最后我們要認(rèn)識(shí)到軟件破解是不道德的,是違法《計(jì)算機(jī)軟件保護(hù)條例》的,現(xiàn)如今軟件的大眾化、市場(chǎng)化,低價(jià)化,也讓我們有機(jī)會(huì)有能力去使用正版軟件,所以我們要提高覺(jué)悟,力所能及的不使用盜版,以實(shí)際行動(dòng)支持中國(guó)的軟件行業(yè)發(fā)展。
計(jì)算機(jī)軟件保護(hù)論文相關(guān)文章:
1.關(guān)于計(jì)算機(jī)軟件版權(quán)保護(hù)的思考論文