馬振飛
摘要:隨著計算機的廣泛應用和網絡的日益普及,計算機軟件被盜的現象也越來越多,而且呈現出日漸猖獗之勢。本文從軟件保護的現狀及軟件保護的現實意義入手,通過對軟件保護技術的各種方法分析,并且針對各種保護方法進行比較、權衡、及算法研究,提出了一套較為完整的軟件保護方案。
關鍵詞:軟件保護;技術保護;保護方案
1 引言
隨著計算機技術的迅猛發展以及軟件技術的快速成長,計算機軟件技術不僅對國民經濟建設、信息安全起著重要作用,而且還是提高科技創新能力,增強技術競爭實力的重要組成部分。由于軟件的復制、拷貝是件很容易的事,所以導致非法復制、盜版軟件之風的泛濫。在這種形勢下,為了防止軟件的非法復制、盜版,保護軟件開發商的利益,研制者和銷售商對自己的軟件進行技術保護和數據加密,以此來保護計算機軟件著作權人的權益,鼓勵計算機軟件的開發與應用,促進軟件產業和國民經濟信息化的發展。
2 軟件保護技術
從技術上采取一定的防范措施非常重要,在一定范圍內可以防范軟件的非法復制。下面介紹一下當前常見的一些軟件保護技術:
2.1 時間限制保護技術
在使用軟件時采用時間進行限制,如使用期30天,當過了共享軟件的使用期后,就不予運行,只有向軟件作者付費注冊后才能得到一個無時間限制的注冊版本。這種保護方式的程序很多,它們在安裝時,在系統某處做上標記,比如將系統的安裝時間存放在一個文件中,每次運行都用系統的當前時間和安裝時間作比較,判斷用戶還能否正常使用。
2.2 序列號保護技術
當用戶從網上下載某個共享軟件后,如果過了軟件的使用期,必須經過注冊才能繼續使用。注冊過程一般是把用戶的私人信息告訴給軟件公司,軟件公司會根據用戶的信息利用預先寫好的注冊碼程序計算出一個序列號,用戶使用序列號按照必要的步驟在軟件中輸入注冊信息和序列號,在經過軟件對其合法性驗證通過后,軟件就會取消本身的各種限制,而成為正式版本。
2.3 注冊文件保護技術
注冊文件保護技術是利用文件來注冊軟件的保護方式。注冊文件一般文件比較小,可以是純文本文件,也可以是包含不可顯示字符的二進制文件,其內容是加密過或未加密的數據,其中可能有用戶名、注冊碼等信息。文件格式則由軟件作者自己定義,試用版軟件沒有注冊文件,當用戶向作者負費注冊后,會收到作者寄來的注冊文件,其中可能包含用戶的個人信息。用戶只要將這些文件放入指定的目錄,就可以讓軟件成為正式版。
2.4 光盤保護技術
一些采用光盤形式發行的應用軟件和游戲在使用時需要檢查光盤是否插在光驅中,如果沒有,則拒絕運行。這是為了防止用戶將軟件或游戲的一份正版拷貝安裝到多臺機器上并同時使用。程序在啟動時判斷光驅中的光盤上是否存在特定的文件,如果不存在則認為用戶沒有正版光盤,拒絕運行。在程序運行的過程當中一般不再檢查光盤的存在與否。
2.5 反跟蹤保護技術
好的軟件保護都要和反跟蹤技術結合在一起。如果沒有反跟蹤技術,軟件等于直接裸露在解密者面前。這里說的反跟蹤,指的是反動態跟蹤。即防止解密者用SoftICE之類的調試器動態跟蹤,從而進行分析軟件。這種技術一般是檢測這些特定的調試器是否駐留內存,如果駐留內存,就認為被跟蹤,拒絕執行,或進行一些懲罰性措施。
2.6 反-反匯編保護技術
可針對專門的反匯編軟件設計的陷阱,讓反匯編器陷入死循環,但這種方法沒有通用性。具體方法是:在程序中加入一些無用的字節來干擾反匯編軟件的判斷,使得它錯誤地確定指令的起始位置,也就達到了干擾反匯編器工作的目的。
2.7 加殼保護技術
殼是計算機軟件中一段專門負責保護軟件不被非法修改或反編譯的程序,它先于軟件原程序運行并拿到控制權,進行一定處理后再將控制權轉交給原程序,實現保護軟件的任務。加殼后的程序能夠有效防范靜態分析和增加動態分析的難度。
2.8 加密狗保護技術
加密狗是一個安裝在并口、串口、U口等接口上的硬件設備,并帶有一套驅動軟件和工具包。當被加密狗保護的軟件運行時,程序會搜索是否有安插在計算機上的硬件,并對其發出一系列操作指令,正確的響應才能使軟件繼續運行,從而達到保護軟件,防止盜版的目的。
3 軟件保護技術的應用
3.1 當前保護技術的局限
軟加密技術是相對成熟的技術,它的最大優勢在于加密成本低。無論哪種軟加密方法都是對正常的軟件者進行人為地制造障礙,雖然不會影響到軟件的性能,但有可能給軟件引入許多未知的錯誤。與純軟件的加密方法相比,硬件加密有著不可比擬的優勢,因為對盜版者而言,硬加密會比軟件加密要難以對付,但是硬件加密成本會比較高。
3.2 軟件保護技術的應用
前面介紹了當前常見的一些軟件保護技術,其中有些技術非常好好,如序列號技術,幾乎所有的軟件都使用了這種技術。但是,無論那種技術都是軟件和硬件進行分離的處理的,不能徹底的保護好軟件。
針對前面所述的一些問題,通過各方面比較、權衡、及算法研究,完整的保護流程應該是:首先軟件程序必須有限制,至少要求要注冊才能使用完整功能,做到程序運行必須和用戶機器硬件掛鉤的注冊碼來解開關鍵的功能,然后為了防備被解密者用各類工具得到程序關鍵點和關鍵信息,必須采用反跟蹤,反調試和反匯編靜態分析。當然,最好還要給程序穿上一件外套,將程序包裹起來,即采用專門的加殼軟件或者加密鎖產品等將自己的程序處理后提高防范能力,大大提高破解的門檻。
還有,要考慮如何有效保證自己的程序只提供給正式用戶使用,而非正式用戶在正常途徑下即使有了正式軟件業也不能正常使用。這個問題現在通常采用"一機一碼"的注冊碼許可方式來解決。大致原理就是將程序的關鍵功能用注冊碼方式保護起來,正式用戶在輸入對應自己的注冊碼的硬件信息的注冊碼后才能正常使用所有功能,非正式用戶沒有對應自己的硬件信息的注冊碼而無法使用注冊碼保護起來的關鍵功能。要實現這個功能,關鍵是獲取一個準確的硬件信息,而這個硬件信息最好與操作系統無關,這樣就算用戶的系統出問題而重新安裝后也不變化,既能方便用戶的使用,也能方便作者可管理注冊碼的發放。
為了提高反解密的對抗能力,通常還可以在程序代碼中加入反跟蹤、反調試和反匯編靜態分析的程序,也可以采取動態生成調用程序的入口地址等技術。最后再利用軟件殼來對程序進行處理,這樣,解密者要想破解程序,先面臨的是殼程序,只有解決到殼程序以后才能對程序進行破解。這樣就可以很輕易的將程序防護性能強度提升一個層次。
6 結論
通過對當前常見的一些軟件保護技術,如序列號保護技術、反跟蹤保護技術、反-反匯編保護技術、加殼保護技術、加密狗保護技術等進行分析,得出各種技術的實現原理以及優缺點,提出了一套技術上較為完整的保護流程。但是,軟件保護只靠技術進行保護還是不夠的,還需要相關的法律法規進行管理,如版權法、專利法、合同法、商標法等各種法律保護,只有從法律、技術兩方面結合起來才能更加有效的保護好軟件的合法權利。
參考文獻
[1] 段鋼.加密與解密[M].電子工業出版社:2003.
[2] 看雪學院.軟件加密技術內幕[M].電子工業出版社:2004.
[3] 武新華. 加密解密全方位學習[M].中國鐵道出版社:2006.
[4] 譚貌、陳義、涂杰.軟件版權保護技術的研究與分析[J].計算機應用與軟件:2007.
[5] 郭勇、孔寶根. 軟件保護及破解策略[J].航空維修與工程:2004.