淺談軟件的破解與保護_第1頁
淺談軟件的破解與保護_第2頁
淺談軟件的破解與保護_第3頁
淺談軟件的破解與保護_第4頁
淺談軟件的破解與保護_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

中文摘要I淺談軟件的破解與保護摘要保護知識產(chǎn)權(quán),抵制盜版軟件,是目前中國軟件業(yè)所面臨的迫切問題,在中國IT行業(yè)是一個迫在眉睫的任務(wù)。目前絕大多數(shù)軟件都采取了加密技術(shù)來應(yīng)對,本文分析了軟件破解中幾個重要的專業(yè)術(shù)語和常見的軟件破解方法,并具體介紹了軟加密和硬加密技術(shù)。目前的軟件大部分采用了代碼加密以及安裝采用序列號的方式來保護自身。本文主要從C#軟件、java軟件角度來試論目前的破解與正當(dāng)保護,以及常見的一些專業(yè)的技術(shù)分析。關(guān)鍵詞:軟件;破解;知識產(chǎn)權(quán);軟件加密;軟件保護PAGE目錄摘要 I1引言 12常見的軟件破解方法 12.1暴力破解法 22.2利用算法注冊機 22.3利用內(nèi)存破解 32.4補丁破解法和文件注冊法 32.5C#程序破解 32.6Java軟件破解 32.7加密狗破解 43軟件保護方法 43.1注冊碼保護 43.2在線注冊保護 53.3基于硬件的軟件保護 53.4光盤、軟盤保護 53.5軟加密 63.6硬加密 64結(jié)論 7參考文獻 8PAGE91引言當(dāng)我們的軟件開發(fā)完成后用于商業(yè)行業(yè)時,為了盈利,就需要設(shè)置權(quán)限讓未購買者不能使用部分功能。這個時候注冊碼、激活碼編的非常重要,未購買者會加上一些限制,比如使用天數(shù)的限制、部分功能不能正常使用、軟件定時提示注冊等。但是隨之而來的是軟件被破解,現(xiàn)在軟件破解技術(shù)越來越強大,幾乎國內(nèi)外大型的軟件都有注冊機,但是大都不斷被破解了,國家大力提倡正版,嚴(yán)厲打擊盜版,但是效果不是很明顯?,F(xiàn)在大多軟件商采取了代碼加密、產(chǎn)品加密等手段來保護自己的軟件。開發(fā)軟件時,尤其當(dāng)用到商業(yè)用途時,注冊碼和激活碼是非常重要的,未注冊的用戶會加上某些限制,如使用天數(shù),延遲,未注冊畫面等等。但是現(xiàn)在的軟件破解技術(shù)十分強大,各種國內(nèi)外大型軟件都有注冊機制,卻同時也不斷地被破解,國家一再加大力度,打擊非法軟件出版物,扶持正版軟件,但實際效果并不理想。大多的軟件商選擇了購買加密產(chǎn)品或者加密技術(shù)來保護自己的軟件,軟件保護一般分為軟加密和硬加密。2常見的軟件破解方法首先我們來了解一下破解中幾個重要的專業(yè)術(shù)語。斷點。所謂斷點就是程序被中斷的地方,中斷就是由于有特殊事件發(fā)生,計算機暫停當(dāng)前的任務(wù),轉(zhuǎn)而去執(zhí)行另外的任務(wù),然后再返回原先的任務(wù)繼續(xù)執(zhí)行。解密的過程就是等到程序去獲取我們輸人的注冊碼并準(zhǔn)備和正確的注冊碼相比較的時候?qū)⑺袛嘞聛恚缓笪覀兺ㄟ^分析程序,找到正確的注冊碼。領(lǐng)空。所謂程序的領(lǐng)空,就是程序自己的領(lǐng)土地盤,也就是我們要破解的程序自己程序碼所處的位置。每個程序的編寫都沒有固定的模式,所以我們要在想要切人程序的時候中斷程序,就必須不依賴具體的程序設(shè)置斷點,也就是我們設(shè)置的斷點應(yīng)該是每個程序都會用到的東西。

API。即ApplicationProgrammingInterface的簡寫,我們叫應(yīng)用程序編程接口,是一個系統(tǒng)定義函數(shù)的大集合,它提供了訪問操作系統(tǒng)特征的方法。API包含了幾百個應(yīng)用程序調(diào)用的函數(shù),這些函數(shù)執(zhí)行所有必須的與操作系統(tǒng)相關(guān)的操作,如內(nèi)存分配、向屏幕輸出和創(chuàng)建窗口等,WINDOWS程序以API為基礎(chǔ)來實現(xiàn)和系統(tǒng)打交道。無論什么樣的應(yīng)用程序,其底層最終都是通過調(diào)用各種API函數(shù)來實現(xiàn)各種功能的。了解了以上三個專業(yè)術(shù)語后,我們看下基本的軟件破解方法。2.1暴力破解法這是最常見的也是最簡單的破解方法,破解者直接利用編輯工具<例如ULTRAEDIT-32>對可執(zhí)行文件進行修改,也就是說通過修改可屬性程序的源文件來達到破解目的。某些元件在驗證用戶注冊信息和注冊碼時候,如果用戶輸人的信息與軟件通過的算法生成的注冊碼相等,程序就會注冊成功,否則就會注冊失敗。黑客通過一些破解工具(例如CainandAbe)l對可以執(zhí)行的文件.exe進行修改。暴力破解是一種針對于密碼的破譯方法,根據(jù)組合原理,將數(shù)字、字母的組合逐個推算、測試直到找出真正的密碼為止。例如一個密碼由5位數(shù)字組成,其可能共有100000種組合,因此最多嘗試100000次就能找到正確的密碼。理論上利用這種方法可以破解任何一種密碼。暴力破解對于簡單的密碼破解,是很有效果的。但是缺陷是耗時長,并且當(dāng)密碼比較復(fù)雜時(數(shù)字與字母組合),就不容易破解了。2.2利用算法注冊機現(xiàn)在的軟件商一般都自己寫一些算法來保護自己的產(chǎn)品。比如數(shù)字加密(在原始數(shù)據(jù)基礎(chǔ)上加上一個特定的數(shù),再加上另外的數(shù),然后在乘以一個數(shù)等等,最終得到一個加密后的數(shù)據(jù))、字符串加密(將字符串轉(zhuǎn)碼、加上特定字符串等)等。算法注冊機是在充分了解了軟件的算法基礎(chǔ)上,制作出的一種可以自動生成軟件注冊碼的程序。因而軟件的算法的編寫顯得非常重要。算法注冊機是要在分析了軟件的注冊碼算法的基礎(chǔ)上,制作出來的一種可以自動生成軟件注冊碼的程序。所以軟件的算法很重要,一般軟件作者自己也編寫,方便軟件的銷售使用。這類軟件加密的特點是一個注冊碼只能在一臺電腦上使用,像和電腦進行了一對一的綁定。使用步驟是首先運行試用的軟件,得到本臺機器的軟件機器碼,再用算法注冊機算號注冊,然后用算法注冊機直接算出合適的注冊碼,最后用算出來的注冊碼直接注冊。2.3利用內(nèi)存破解我們知道所有正在運行的程序的數(shù)據(jù),全部都要加載到內(nèi)存中去,軟件在進行注冊碼認(rèn)證的時候會有個比較的過程,所以我們只須知道所要破解軟件的注冊碼的內(nèi)存地址,就達到目的了。這種方法的優(yōu)點是無須花大力氣掌握軟件注冊碼的算法,非常節(jié)省編寫內(nèi)存注冊機的時間。步驟是先加載內(nèi)存注冊機,再通過它去獲得內(nèi)存中軟件的真實注冊碼,或修改內(nèi)存中軟件相關(guān)的某些數(shù)據(jù),來達到破解軟件的目的。主要有2種方式,第一種直接從內(nèi)存中得到注冊碼,第二種在內(nèi)存中模擬已注冊程序的運行環(huán)境。2.4補丁破解法和文件注冊法補丁破解法是指用相關(guān)的補丁程序來修改軟件,以達到破解軟件的目的。此方法一般是破解軟件的驗證注冊碼或時間,基本上都是修改原程序的判斷語句。比如程序試用期是一個月,就可以把這個修改掉,來達到無限使用的目的。文件注冊法就是把軟件的注冊內(nèi)容放到一個文件里,以方便自己或別人用它來注冊,主要有注冊表導(dǎo)人和注冊文件導(dǎo)人兩種方式。補丁破解法是指用相關(guān)的補丁程序來修改軟件,以達到破解軟件的目的。此方法一般是破解軟件的驗證注冊碼或時間,基本上都是修改原程序的判斷語句。注冊表破解主要是指通過修改注冊文件。reg來達到破解。比如軟件試用限制時間是一個月,那么破解者就可以通過修改注冊文件。reg來延長甚至無限制使用軟件。2.5C#程序破解眾所周知C#里大多的控件是開源的。目前在市場有很多的軟件是通過C#編寫的。從商業(yè)利益角度上,軟件商設(shè)置了很多的限制,但是破解者一樣可以長驅(qū)直入。Reflector(下載地址)l就是大多破解者選擇的破解工具,利用該軟件,可以清楚的看見程序的代碼,那么這個時候軟件商寫的算法都盡收眼底了。因而破解者可以輕易根據(jù)軟件商的算法得出軟件注冊碼。2.6Java軟件破解在軟件編程語言里,Java語言是最為安全的一門編程語言。如果不拿到源代碼,幾乎不可能破解Java程序。但是下載拿到了源碼,如何來修改軟件的限制呢?打開Java文件發(fā)現(xiàn)全是亂碼,很多破解者使用了java反編譯工具XJad(下載地址:)l來破解。通過該工具,能把編譯過后的Java文件反編譯成正常代碼。這樣我們的算法就顯得很蒼白、無力。2.7加密狗破解硬件加密鎖FreeEIM,俗程“加密狗”,對于加密狗的破解大致可以分為三種方法,一種是通過硬件克隆或者復(fù)制,一種是通過Soft-ICE等Debug工具調(diào)試跟蹤解密,一種是通過編寫攔截程序修改軟件和加密狗之間的通訊。3軟件保護方法從事計算機軟件科研開發(fā)、技術(shù)貿(mào)易的高新技術(shù)\o"企業(yè)管理論文"企業(yè)通常需要不斷開發(fā)和積累企業(yè)的技術(shù)成果,以保持企業(yè)技術(shù)的優(yōu)勢,需要保護好企業(yè)擁有的知識產(chǎn)權(quán),以能夠利用本企業(yè)的知識產(chǎn)權(quán)為自身帶來\o"經(jīng)濟學(xué)論文"經(jīng)濟利益,否則將會影響企業(yè)的生存和發(fā)展。高新技術(shù)企業(yè)大都是以知識創(chuàng)新開發(fā)產(chǎn)品,當(dāng)知識產(chǎn)品進入市場后,則完全依賴于對其知識產(chǎn)權(quán)的保護,如果沒有保護或保護不好,將影響企業(yè)大規(guī)模的實施知識開發(fā)投資,企業(yè)也不可能更好的生存與發(fā)展。所以軟件的保護顯得特別重要。這里主要介紹以下幾點保護措施:基于軟件的保護基于軟件的保護也可以叫軟加密,這是一種不依賴于硬件的保護。目前比較流行的有:3.1注冊碼保護軟件的注冊碼一般都是一機一個,不能重復(fù)。下面我們來看看如何實現(xiàn)的。第一步根據(jù)硬盤卷標(biāo)和CPU序列號,生成機器碼,首先編寫publicstaticstringGetDiskVolumeSerialNum-ber;函數(shù)取得設(shè)備硬盤的卷標(biāo)號,其次編寫publicstaticstringgetCpu;函數(shù)獲得CPU的序列號,最后生成機器碼,函數(shù)如下:StringNumber;StringpublicstaticstringgetsoftNum;{strNum-=getCpu+GetDiskVolumeSerial-strsoftNum=strNum.Substring(0,24);//從生成的字符串中取出前24個字符做為機器碼returnstrsoftNum;}第二步根據(jù)機器碼生成注冊碼,需要編寫publicstaticstringgetRegistNum;函數(shù)來實現(xiàn)。第三步。檢查注冊狀況,若沒有注冊,可自定義試用天數(shù),延遲,未注冊畫面等等,可編寫privatevoidCheckRegist0Cpl數(shù)來實現(xiàn)。軟件安裝時設(shè)置安裝序列號,比如YingInstall就可以實現(xiàn)該功能,這樣要求用戶安裝時就必須輸入一個合法的序列號。軟件安裝成功后,啟動運行時通過注冊號驗證,這時候就要求機器碼與注冊驗證碼完全匹配才能通過。那么機器碼怎么獲得呢?途徑一:可以根據(jù)電腦的mac地址來做,因為一臺電腦的mac是唯一的,且不會重復(fù)。途徑二:硬盤的卷號以及CPU等信息來生成機器碼。途徑三:可以自己寫隨即方法來生成唯一且不重復(fù)的機器碼。通過注冊碼我們可以來驗證該用戶的角色,以此來為用戶設(shè)置權(quán)限。3.2在線注冊保護目前大多數(shù)的軟件商采用在線注冊來保護軟件。應(yīng)用程序通過開發(fā)商發(fā)放的授權(quán)碼與網(wǎng)絡(luò)認(rèn)證服務(wù)器建立連接,并調(diào)用服務(wù)器上的WebService接口完成軟件保護工作。因為這種客戶端/服務(wù)器模式之前采用了高強度的類似TSL的通訊加密技術(shù),而且服務(wù)器遠離軟件用戶,因此它的軟件保護強度可以非常高。當(dāng)用戶在使用軟件的時候,會根據(jù)自己電腦硬件的信息來生成一個機器碼(注冊碼)。而用戶必須將機器碼(注冊碼)發(fā)給軟件商,進行在線注冊(驗證),以取得使用權(quán)限。這樣做的一個好處在于,驗證的過程,用戶完全不會接觸,因而破解系數(shù)就很大。這種保護還有利于軟件商了解市場,他們可以通過后臺查看到有多少用戶在使用。3.3基于硬件的軟件保護硬件的軟件保護有很多,其中大家比較熟悉的就有加密狗、加密鎖、光盤、軟盤等。那么硬件的軟件保護主要有數(shù)據(jù)加密、注冊認(rèn)證、訪問限制、一些硬件識別等。它給我們帶來的好處很多,比如永賽電腦培訓(xùn)的上級練習(xí)就必須要用到光盤才能正常使用,如果完整拷貝里面東西,沒有光盤一樣不行,這種安全等級就很高。3.4光盤、軟盤保護軟件的密鑰可以寫在可移動的光盤或者軟盤之中,就像上面提到的永賽電腦培訓(xùn)的上機練習(xí)就采用到了這種保護。這種措施,只有當(dāng)軟盤或光盤存在的時候,被保護軟件才可以運行,大部分游戲軟件經(jīng)常采用此種方式。它的基本原理是利用了普通刻錄機無法復(fù)制隱藏的密鑰而實現(xiàn)的,目前像CryptCD就可以達到這種效果。這種保護有一些問題:就是光盤易壞。一旦壞了,用戶就無法正常使用了。3.5軟加密所謂軟加密就是不依靠特別硬件來實現(xiàn)的對軟件的保護技術(shù)。當(dāng)前國際上比較通用的軟件都采取軟加密的方式,例如微軟的windows系統(tǒng)、殺毒軟件等,它的最大優(yōu)勢在于極低的加密成本。目前主要有密碼法、計算機硬件校驗法、鑰匙盤法等。目前比較流行的是使用外殼,外殼分為壓縮殼和加密殼,其中壓縮殼的保護性比較弱,所以一般采用加密殼,其原理是利用堆棧平衡原理,修改程序人口處代碼,使其跳轉(zhuǎn)到殼代碼執(zhí)行解密程序,將原程序代碼解密后跳回原程序的OEP繼續(xù)執(zhí)行。目前比較強的加密殼采用的是動態(tài)解密代碼、SMC,IAT加密技術(shù),程序在運行過程中動態(tài)解密代碼,執(zhí)行完畢后立刻刪除,并且對IAT加密,當(dāng)需要調(diào)用API時用解密算法算出API的實際地址來調(diào)用,更有甚者,殼里有殼。目前常見的比較強的5大殼有:(1)EncryptPE,其特點是對IAT加密比較強,(2)ASProtect,其特點是采用多層SEH,很容易把人轉(zhuǎn)暈,(3)ACProtect,其特點是采用stolencode的辦法,(4)Armadillo,其特點是雙進程互相檢測,(5)themida,其特點是采用虛擬機技術(shù)。好的加密效果在于讓盜版者在破解被保護的軟件時,付出巨大的代價,耗費極大的時間精力,最終被迫放棄攻擊。3.6硬加密硬加密就是我們所說的加密狗或加密鎖,是一種插在計算機USB口或并口上的軟硬件結(jié)合的加密產(chǎn)品,目前絕大部分都是USB口形式,是基于硬件保護技術(shù),其目的是通過對軟件與數(shù)據(jù)的保護防止知識產(chǎn)權(quán)被非法使用,是保證高檔軟件在市場生命周期中免受盜版侵害的功能強大的工具。加密狗一般都有幾十或幾百字節(jié)的非易失性存儲空間可供讀寫,現(xiàn)在較新的狗內(nèi)部還包含了單片機。軟件開發(fā)者可以通過接口函數(shù)和軟件狗進行數(shù)據(jù)交換,來檢查軟件狗是否插在接口上。加密狗通過在軟件執(zhí)行過程中和加密狗交換數(shù)據(jù)來實現(xiàn)加密的.加密狗內(nèi)置單片機電路(也稱CPU),使得加密狗具有判斷、分析的處理能力,增強了主動的反解密能力。這種加密產(chǎn)品稱它為"智能型"加密狗.加密狗內(nèi)置的單片機里包含有專用于加密的算法軟件,該軟件被寫入單片機后,就不能再被讀出。這樣,就保證了加密狗硬件不能被復(fù)制。同時,加密算法是不可預(yù)知、不可逆的。加

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論