網站首頁 工作範例 辦公範例 個人範例 黨團範例 簡歷範例 學生範例 其他範例 專題範例

淺談軟體的破解與保護

欄目: 畢業論文模板 / 釋出於: / 人氣:2.65W

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

淺談軟體的破解與保護

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、結束語

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

上文是軟體的破解與保護