淺談軟件的破解與保護

來源:瑞文範文網 2.67W

又到畢業季了,大家的論文準備的怎麼樣了,下文是軟件的破解與保護,一起來看看吧!

淺談軟件的破解與保護

1、引言

開發軟件時,尤其當用到商業用途時,註冊碼和激活碼是非常重要的,未註冊的用戶會加上某些限制,如使用天數,延遲,未註冊畫面等等。但是現在的軟件破解技術十分強大,各種國內外大型軟件都有註冊機制,卻同時也不斷地被破解,國家一再加大力度,打擊非法軟件出版物,扶持正版軟件,但實際效果並不理想。大多的軟件商選擇了購買加密產品或者加密技術來保護自己的軟件,軟件保護一般分爲軟加密和硬加密。

2、常見的軟件破解方法

首先我們來了解一下破解中幾個重要的專業術語

(1)斷點,所謂斷點就是程序被中斷的地方,中斷就是由於有特殊事件發生,計算機暫停當前的任務,轉而去執行另外的任務,然後再返回原先的任務繼續執行。解密的過程就是等到程序去獲取我們輸人的註冊碼並準備和正確的註冊碼相比較的時候將它中斷下來,然後我們通過分析程序,找到正確的註冊碼。

(2)領空,所謂程序的領空,就是程序自己的領土地盤,也就是我們要破解的程序自己程序碼所處的位置。每個程序的編寫都沒有固定的模式,所以我們要在想要切人程序的時候中斷程序,就必須不依賴具體的程序設置斷點,也就是我們設置的斷點應該是每個程序都會用到的東西。

(3)api,即application programming interface的簡寫,我們叫應用程序編程接口,是一個系統定義函數的大集合,它提供了訪問操作系統特徵的方法。api包含了幾百個應用程序調用的函數,這些函數執行所有必須的與操作系統相關的操作,如內存分配、向屏幕輸出和創建窗口等,windows程序以api爲基礎來實現和系統打交道。無論什麼樣的應用程序,其底層最終都是通過調用各種api函數來實現各種功能的。

瞭解了以上三個專業術語後,我們看下基本的軟件破解方法。

2.1暴力破解法。這是最常見的也是最簡單的破解方法,破解者直接利用編輯工具<例如ultraedit-32>對可執行文件進行修改,也就是說通過修改可屬性程序的源文件來達到破解目的。某些元件在驗證用戶註冊信息和註冊碼時候,如果用戶輸人的信息與軟件通過的算法生成的註冊碼相等,程序就會註冊成功,否則就會註冊失敗。

2.2利用算法註冊機。算法註冊機是要在分析了軟件的註冊碼算法的基礎上,製作出來的一種可以自動生成軟件註冊碼的程序。所以軟件的算法很重要,一般軟件作者自己也編寫,方便軟件的銷售使用。這類軟件加密的特點是一個註冊碼只能在一臺電腦上使用,像和電腦進行了一對一的綁定。使用步驟是首先運行試用的軟件,得到本臺機器的軟件機器碼,再用算法註冊機算號註冊,然後用算法註冊機直接算出合適的註冊碼,最後用算出來的註冊碼直接註冊。

2.3利用內存破解。我們知道所有正在運行的程序的數據,全部都要加載到內存中去,軟件在進行註冊碼認證的時候會有個比較的過程,所以我們只須知道所要破解軟件的註冊碼的內存地址,就達到目的了。這種方法的優點是無須花大力氣掌握軟件註冊碼的算法,非常節省編寫內存註冊機的時間。步驟是先加載內存註冊機,再通過它去獲得內存中軟件的真實註冊碼,或修改內存中軟件相關的某些數據,來達到破解軟件的目的。主要有2種方式,第一種直接從內存中得到註冊碼,第二種在內存中模擬已註冊程序的運行環境。

2.4補丁破解法和文件註冊法。補丁破解法是指用相關的補丁程序來修改軟件,以達到破解軟件的目的。此方法一般是破解軟件的驗證註冊碼或時間,基本上都是修改原程序的判斷語句。比如程序試用期是一個月,就可以把這個修改掉,來達到無限使用的目的。文件註冊法就是把軟件的註冊內容放到一個文件裏,以方便自己或別人用它來註冊,主要有註冊表導人和註冊文件導人兩種方式。

3、常見的軟件保護方法

3.1註冊碼。軟件的註冊碼一般都是一機一個,不能重複。下面我們來看看如何實現的。

第一步根據硬盤卷標和cpu序列號,生成機器碼,首先編寫public static string getdiskvolumeserialnum-ber()函數取得設備硬盤的卷標號,其次編寫public static string getcpu()函數獲得cpu的序列號,最後生成機器碼,函數如下:

string number; string public static string getsoftnum()

{strnum-=getcpu+getdiskvolumeserial-strsoftnum=tring(0, 24);//從生成的字符串中取出前24個字符做爲機器碼return strsoftnum; }

第二步根據機器碼生成註冊碼,需要編寫public static string getregistnum()函數來實現。

第三步。檢查註冊狀況,若沒有註冊,可自定義試用天數,延遲,未註冊畫面等等,可編寫private void checkregist0 cpl數來實現。

3.2軟加密。所謂軟加密就是不依靠特別硬件來實現的對軟件的保護技術。當前國際上比較通用的軟件都採取軟加密的方式,例如微軟的windows系統、殺毒軟件等,它的最大優勢在於極低的加密成本。目前主要有密碼法、計算機硬件校驗法、鑰匙盤法等。目前比較流行的是使用外殼,外殼分爲壓縮殼和加密殼,其中壓縮殼的保護性比較弱,所以一般採用加密殼,其原理是利用堆棧平衡原理,修改程序人口處代碼,使其跳轉到殼代碼執行解密程序,將原程序代碼解密後跳回原程序的oep繼續執行。目前比較強的加密殼採用的是動態解密代碼、smc , iat加密技術,程序在運行過程中動態解密代碼,執行完畢後立刻刪除,並且對iat加密,當需要調用api時用解密算法算出api的實際地址來調用,更有甚者,殼裏有殼。目前常見的比較強的5大殼有:( i ) encryptpe,其特點是對iat加密比較強,( 2 ) asprotect,其特點是採用多層seh,很容易把人轉暈,( 3) acprotect,其特點是採用stolen code的辦法,( 4 ) armadillo,其特點是雙進程互相檢測,(5)themida,其特點是採用虛擬機技術。好的加密效果在於讓盜版者在破解被保護的軟件時,付出巨大的代價,耗費極大的時間精力,最終被迫放棄攻擊。

3.3硬加密。硬加密就是我們所說的加密狗或加密鎖,是一種插在計算機usb口或並口上的軟硬件結合的加密產品,目前絕大部分都是usb口形式,是基於硬件保護技術,其目的是通過對軟件與數據的保護防止知識產權被非法使用,是保證高檔軟件在市場生命週期中免受盜版侵害的功能強大的工具。加密狗一般都有幾十或幾百字節的非易失性存儲空間可供讀寫,現在較新的狗內部還包含了單片機。軟件開發者可以通過接口函數和軟件狗進行數據交換,來檢查軟件狗是否插在接口上。加密狗內置的單片機裏包含有專用於加密的算法軟件,該軟件被寫人單片機後,就不能再被讀出。這樣,就保證了加密狗硬件不能被複制。同時,加密算法是不可預知、不可逆的。加密算法可以把一個數字或字符變換成一個整數,如dconvert (6)=67876,dconvert(x)=34567 0

4、結束語

軟件破解和軟件加密就是矛和盾的關係,好的加密效果在於讓盜版者在破解被保護的軟件時,付出巨大的代價,耗費極大的時間精力,最終被迫放棄攻擊。最後我們要認識到軟件破解是不道德的,是違法《計算機軟件保護條例》的,現如今軟件的大衆化、市場化,低價化,也讓我們有機會有能力去使用正版軟件,所以我們要提高覺悟,力所能及的不使用盜版,以實際行動支持中國的軟件行業發展。

上文是軟件的破解與保護

熱門標籤