第11章 軟件保護技術(shù) 第11章 軟件保護技術(shù)_第1頁
已閱讀1頁,還剩75頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第11章 軟件保護技術(shù),11.1 軟件保護技術(shù)概述11.2 靜態(tài)分析技術(shù)11.3 動態(tài)分析技術(shù)11.4 常用軟件保護技術(shù)11.5 軟件加殼與脫殼11.6 設(shè)計軟件的一般性建議,11.1 軟件保護技術(shù)概述 軟件保護技術(shù)是軟件開發(fā)者尋找各種有效方法和技術(shù)來維護軟件版權(quán),增加其盜版的難度,或延長軟件破解的時間,盡可能防止軟件被非法使用。 從理論上說,幾乎沒有破解不了的軟件。所以

2、對軟件的保護僅僅靠技術(shù)是不夠的,最終要靠國家法制的完善、人們的知識產(chǎn)權(quán)保護意識的提高。,11.2 靜態(tài)分析技術(shù) 靜態(tài)分析是從反匯編出來的程序清單上分析程序流程,從提示信息入手,了解軟件中各模塊的功能,各模塊之間的關(guān)系及編程思路。從而根據(jù)自己的需要完善、修改程序的功能。 對于破解者來說,通過對程序的靜態(tài)分析,了解軟件保護的方法,也是軟件破解的一個必要的手段。

3、 軟件密碼破解示例:VC++程序 VB程序,11.2.1 文件類型分析 對軟件進行靜態(tài)分析時首先要了解和分析程序的類型,了解程序是用什么語言編寫的,或用什么編譯器編譯的,程序是否有加殼保護。 常用的文件類型分析工具有Language 2000、File Scanner、FileInfo、PEi

4、D等。 FileInfo運行時是DOS界面,支持Windows長文件名,語法: fi fi /r 或/s:列出當(dāng)前目錄和子目錄所有的文件信息fi /f :僅列出能識別的文件,用PEiD軟件對Winword.exe文件的分析結(jié)果如下圖所示。,11.2.2 W32Dasm W32Dasm針對現(xiàn)在流行的可執(zhí)行程序進行反編譯,即把可執(zhí)行的文件反編譯成匯編語言,以便于分析程序的結(jié)構(gòu)和流程。

5、 W32Dasm不需要安裝,只要直接執(zhí)行W32Dasm.exe文件。 簡單介紹W32Dasm功能和使用方法。,1.加載文件。 2.轉(zhuǎn)程序入口點。 3.轉(zhuǎn)到代碼開始。 4.轉(zhuǎn)到頁。 5.轉(zhuǎn)到代碼位置。 6.執(zhí)行文本跳轉(zhuǎn)。 7.執(zhí)行調(diào)用。 8.輸入函數(shù)。 9.輸出函數(shù)。,10.菜單參考。

6、 11.對話框參考。 12.串式數(shù)據(jù)參考。 13.復(fù)制匯編代碼文本。 14.裝載32位的匯編代 碼動態(tài)調(diào)試。 15.單步跟蹤程序。 16.設(shè)置激活斷點。 17.保存反匯編文本文件。,11.2.3 IDA Pro簡介 IDA相對于W32Dasm

7、來說功能更強大、操作比較復(fù)雜。 使用IDA需要注冊費用,而W32Dasm是免費的。 當(dāng)分析一個簡單的程序時,使用W32Dasm更為方便。 IDA能夠分析加殼的程序,并以多種文件形式保存等。 目前IDA Pro最高版本為IDA Pro 4.6,支持64位處理器,具有更強大的功能。,11.2.4 可執(zhí)行文件代碼編輯工具 W32Dasm和IDA適

8、合分析文件。若要對文件進行編輯、修改,可以使用專門的十六進制編輯工具。如Hiew,HexWorkshop,WinHex, U1traEdit等。 Hiew的界面簡單、使用方便,它可以對應(yīng)用程序進行反匯編,同時支持對可執(zhí)行文件的十六進制代碼和匯編語言代碼修改。 簡單介紹Hiew的使用。,11.2.5 可執(zhí)行文件資源編輯工具 Windows應(yīng)用程序的各種操作界面稱為資源,包括加速鍵、位圖

9、、光標(biāo)、對話框、圖標(biāo)、菜單、工具欄、版本信息等。 資源也是一種數(shù)據(jù),它們一般被存儲在PE文件的.rsrc塊中,不能通過由程序源代碼定義的變量直接訪問,Windows提供的函數(shù)直接或間接地把它們加載到內(nèi)存中以備使用。,對于已打包后的exe,dll和ocx等文件可以通過資源修改工具Resource Hacker、eXeScope和ResScope等修改其資源,它們也是功能強大的漢化和調(diào)試輔助工具。 一般資源

10、修改工具具有如下功能: 1. 在已編譯和反編譯的格式下都可以查看 Win32 可執(zhí)行文件和相關(guān)文件的資源 )。 2. 提取和保存資源到文件 (*.res) 格式,作為二進制文件或作為反編譯資源腳本或圖像。,3. 修改和替換可執(zhí)行文件的資源。 4. 添加新的資源到可執(zhí)行文件。 5. 刪除資源。 簡單介紹資源黑客( Resource Hacker)軟件使

11、用。,11.3 動態(tài)分析技術(shù) 用靜態(tài)分析法可以了解編寫程序的思路,但是有時并不可能真正地了解軟件編寫的整個細節(jié)和執(zhí)行過程,在對軟件靜態(tài)分析無效的情況下就可以對程序進行動態(tài)分析了。 動態(tài)分析就是通過調(diào)試程序、設(shè)置斷點、控制被調(diào)試程序的執(zhí)行過程來發(fā)現(xiàn)問題。如根據(jù)兩個數(shù)據(jù)運算結(jié)果確定程序跳轉(zhuǎn),靜態(tài)分析就不行了。 If x-y=2 then {。。。}

12、 else {。。。},對軟件動態(tài)跟蹤分析時可以分兩步進行: 1.對軟件進行簡要跟蹤 主要根據(jù)程序的順序執(zhí)行結(jié)果分析該段程序的功能,找到所要關(guān)心的模塊或程序段。 2.對關(guān)鍵部分進行細跟蹤 在獲取軟件中關(guān)鍵模塊后,這樣就可以針對性地對該模塊進行具體而詳細地跟蹤分析。要把比較關(guān)鍵的中間結(jié)果或指令地址記錄下來,直到讀懂該程序為止。,動態(tài)分析技術(shù)使用的調(diào)試器可分為用

13、戶模式和內(nèi)核模式兩種類型。 用戶模式調(diào)試器工作在Win32的保護機制Ring 3級(用戶級)上,如Visual C++等編譯器自帶的調(diào)試器就是用戶級的。 內(nèi)核模式調(diào)試器是指能調(diào)試操作系統(tǒng)內(nèi)核的調(diào)試器,它們處于CPU和操作系統(tǒng)之間,工作在Win32的保護機制Ring 0級(特權(quán)級)上。 常用動態(tài)分析工具有SoftICE、OllyDbg等。,11.3.1 SoftICE調(diào)試器

14、 SoftICE是NuMega公司開發(fā)的最著名的動態(tài)調(diào)試工具,可以調(diào)試各種應(yīng)用程序和設(shè)備驅(qū)動程序,還可以通過網(wǎng)絡(luò)連接進行遠程調(diào)試。 NuMega公司將SoftICE捆綁進驅(qū)動開發(fā)軟件DriverStudio和SoftIC DriverSuite中發(fā)行。 DriverStudio是一個設(shè)備驅(qū)動程序和應(yīng)用軟件開發(fā)工具包,是一套用來加速微軟Windows設(shè)備驅(qū)動程序的開發(fā)和調(diào)試的核心工具。,以SoftICE

15、 DriverSuite2.7為例介紹SoftICE的安裝與配置。 1.SoftICE安裝 SoftICE DriverSuite2.7安裝時雙擊安裝文件setup.exe,按照安裝向?qū)Ы缑嫣崾揪涂梢酝瓿蒘oftICE安裝了。DriverSuite可自動識別Windows不同版本。安裝過程中,安裝向?qū)崾具x擇3種安裝類型。,2. SoftICE啟動模式 SoftICE啟動

16、模式分兩種: (1)Windows 9x系統(tǒng)啟動模式 (2)Windows NT/2000/XP系統(tǒng)啟動模式 SoftICE在Windows NT/2000/XP下有四種啟 動模式可供選擇: (a)Boot模式:SoftICE先于Windows加載, 主要用于調(diào)試內(nèi)核驅(qū)動程序;,(b) System模式:SoftICE后于Windows加載,主要用于調(diào)試一

17、般的應(yīng)用軟件開發(fā); (c)Automatic模式:SoftICE先于Windows加載,但不能調(diào)試內(nèi)核驅(qū)動程序; (d) Manual模式:進入Windows系統(tǒng)后,需要手動執(zhí)行快捷方式“Start SoftICE”或在命令行上運行“net start ntice”來裝載SoftICE; Disabled:就是禁止所有的SoftICE組件服務(wù)。,一般情況下將啟動模式設(shè)置為Manual模式,

18、 3.鼠標(biāo)與顯卡配置 如果使用SoftICE時發(fā)現(xiàn)顯示或鼠標(biāo)不正常,可 以直接用SoftICE修改顯卡和鼠標(biāo)配置。 4. SoftICE環(huán)境配置 (1)常規(guī)選項(General) General選項是設(shè)置SoftICE初始化命令和一些變 量參數(shù)的 。 (2)符號選項(Symbols),預(yù)裝符號和代碼,這對調(diào)試設(shè)備驅(qū)動程序很

19、有用。 (3)導(dǎo)出選項(Exports) 也可通過符號預(yù)裝加載更多的出口函數(shù)列表。 (4)功能鍵設(shè)定(Keyboard Mappings) 可以以設(shè)置SoftICE的功能鍵,也可自定義功能鍵命令。 (5)宏定義(Macro Definitions) 用宏定義可以更方便地使用SoftICE。,(6)Troubleshooting

20、 該選項卡允許用戶對鍵盤、鼠標(biāo)和內(nèi)存頁等進行高級設(shè)置。(7)高級設(shè)置(Advanced) 該選項允許用戶自定義調(diào)試窗口中的鼠標(biāo)右鍵菜單。,(8)Winice.dat配置 SoftICE初始化設(shè)置保存于文件Winice.dat文件中。 5.SoftICE使用 安裝SoftICE成功后,按“Ctrl+D” 鍵可以激活并打開一個調(diào)試窗口,當(dāng)需要返回Window

21、s系統(tǒng),關(guān)閉調(diào)試窗口時,要再按“Ctrl+D”鍵 SoftICE調(diào)試窗口分為寄存器、浮點、數(shù)據(jù)、代碼、堆棧和命令窗口等幾部分。,(1)寄存器窗口。 (2)浮點窗口。 (3)數(shù)據(jù)窗口。 (4)代碼窗口。 (5)系統(tǒng)堆棧窗口。 (6)命令窗口。,SoftICE命令十分豐富,大約有150多個,下面介紹十個最常用的命令,更多的命令請參考SoftI

22、CE的命令手冊。 (1)A命令 語法: A [address] address:指定內(nèi)存地址 作用: 寫入?yún)R編代碼。 用法: 如果不加地址值,可直接在當(dāng)前CS:EIP處匯編。,(2)D命令 語法:D[size] [address [L length]] size:B字節(jié),W字,D雙字,S短實型,L長實型或T 10b長實型。

23、 address:指定內(nèi)存地址 L length:指定長度 作用:顯示某內(nèi)存區(qū)域的內(nèi)容。 用法:D 命令在所指定的內(nèi)存區(qū)域開始顯示指定長度的內(nèi)存單元內(nèi)容。,(3)G命令 語法:G [=start-address] [break-address] start-address: 開始地址 break-address: 中斷地址

24、 作用: 執(zhí)行程序。 用法:G命令屬于一次性斷點,F(xiàn)7功能鍵有點類似G命令。,(4)P命令 語法: P [ret] 作用: 單步執(zhí)行程序。 用法: 只執(zhí)行P時,單步執(zhí)行程序。如果P后加RET 參數(shù),將一直單步執(zhí)行到最近的一條返回語句RET/RETF處。 P 命令可用快捷鍵 F10代替,P RET 命令可用快捷鍵 F12代替。,(5)R命令

25、 語法:R 寄存器名 作用:顯示或更改寄存器的內(nèi)容。 用法:它可更改所有寄存器的值。 (6)S命令 語法:S [-cu] [address L length data-list] address:搜索的起始地址。 Length:搜索的長度(字節(jié)數(shù))。,data-list:可以是一系列字節(jié),也可以是字符串;字符串可用單引號,也可以用雙

26、引號括住。 -c:使查找區(qū)分大小寫 -u:查找Unicode 編碼的字符串 作用:在內(nèi)存中搜尋特定數(shù)據(jù)。 用法:S命令將從指定的內(nèi)存地址開始查找指定內(nèi)容的數(shù)據(jù),一直到超過指定的長度為止。,(7)T命令 語法: T [=start-address] [count] start-address:單步跟蹤起始地址 count

27、 :指定單步跟蹤多少次才停止 作用: 單步跟蹤 用法:T 命令是利用CPU的單步標(biāo)志來進行 單步跟蹤的。 T 命令的快捷鍵是F8。,(8)U命令 語法: U [address [ length] [symbol-name] address : 段,偏移量或選擇符 length : 反匯編的長度(字節(jié)數(shù)) symbo

28、l-name : 將從指定的函數(shù)開始反匯編 作用: 反匯編指令 用法:U 命令將從指定地址開始反匯編指定長度的指令。,(9)BPX命令 語法:BPX [address] 作用:在可執(zhí)行語句上設(shè)置(或清除)斷點。 用法:格式為“BPX 地址”時,程序一旦執(zhí)行到該地址處,SoftICE窗口就會彈出。當(dāng)光標(biāo)在代碼窗口中時,直接鍵入BPX就會在光標(biāo)所在語句 處設(shè)

29、斷點,再鍵入BPX 就取消。,(10)BMSG命令 語法: BMSG window-handle [L] [begin-msg [end-msg ]][IF expression] [DO “command1;command2;...”] window-handle: 消息發(fā)向的窗口句柄 begin-msg,end-msg: 消息標(biāo)識字的范圍,如果沒有end-msg

30、,那么只在begin-msg上設(shè)置斷 點,否則在區(qū)域內(nèi)所有消息都會被下斷點 IF-expression: 表達式的值為真時,SoftICE才彈出 DO “command1;command2;...”:當(dāng)?shù)竭_斷點時,執(zhí)行一系列SoftICE命令。,L : 表示不彈出SoftICE,而是在命令窗口中記錄消息 作用: 跟蹤Windows消息,在Windows的消息上設(shè)置斷點

31、 用法:如果沒有指定在哪個MSG上設(shè)置斷點,那么所有發(fā)向該窗口的消息都會被攔截。,11.3.2 OllyDbg調(diào)試器 OllyDbg調(diào)試器是兼有動態(tài)調(diào)試和靜態(tài)分析為一身的免費軟件調(diào)試器,可以在Windows9X/NT/2000/XP當(dāng)前各種版本下運行。 OllyDbg支持80x86、Pentium、MMX,、3DNow!、SSE 指令集、SSE2指令集。 OllyDbg文件很小,不駐

32、留內(nèi)存。運行OllyDbg.exe就可以了。,簡單介紹一下Ollydbg工作界面: 1.代碼窗口 2.信息窗口 3.數(shù)據(jù)窗口 4.寄存器窗口 5.堆棧窗口,11.4 常用軟件保護技術(shù) 軟件保護一般分為軟加密和硬加密; 硬加密一般俗稱 加密狗或加密鎖。11.4.1 序列號保護機制 軟件驗證序列號的合法性過程就是驗證用戶

33、名和序列號之間的換算關(guān)系,即數(shù)學(xué)映射關(guān)系是否正確的過程。 1.以用戶名生成序列號 序列號 = F(用戶名) 2.通過注冊碼來驗證用戶名的正確性 序列號=F(用戶名) 用戶名=F-1(序列號),3.通過對等函數(shù)檢查注冊碼 F1(用戶名)=F2(序列號) 4.同時采用用戶名和序列號作為自變量 特征值=F(用戶

34、名,序列號) 特征值 = F(用戶名1,用戶名2,...序列號1,序列號2...) 映射關(guān)系越復(fù)雜,越不容易破解。,11.4.2 警告(NAG)窗口  Nag窗口是軟件設(shè)計者用來不斷提醒用戶購買正式版本的窗口 去除警告窗口最常用的方法是利用資源修改工具來修改程序的資源,將可執(zhí)行文件中的警告窗口的屬性改成透明、不可見,這樣就可以變相去除警告窗口了。 若要完全去除警告窗口,只要找到創(chuàng)

35、建此窗口的代碼,并跳過該代碼的執(zhí)行。,11.4.3 時間限制  時間限制程序有兩類,一類是對每次運行程序的時間進行限制,另一類是每次運行時間不限,但是有時間段限制。 如使程序運行10分鐘或20分鐘后就停止執(zhí)行,必須重新啟動該程序才能正常工作。 要實現(xiàn)時間限制,應(yīng)用程序中必須有計時器來統(tǒng)計程序運行的時間,在Windows下使用計時器有SetTimer()、 TimeSetEvent()、

36、 GetTickCount()、 TimeGetTime()。,11.4.4 時間段限制 這類保護的軟件一般都有時間段的限制,例如試用30天等。 安裝軟件的時候,或在程序第一次運行時獲得系統(tǒng)日期,并且將其記錄在系統(tǒng)中的某個地方。這個時間稱為軟件的安裝日期。 程序在每次運行的時候首先讀取當(dāng)前系統(tǒng)日期,并將其與記錄下來的安裝日期進行比較,當(dāng)其差值超出允許的天數(shù)(比如30天)時就停止運行。 為

37、了增加解密難度,軟件最少要保存兩個時間值: 1.一個就是上面所說的安裝時間。 2.另外一個時間值就是軟件最近一次使用的日期。,11.4.5 注冊保護   注冊文件(Key File)是一種利用文件來注冊軟件的保護方式。Key File內(nèi)容是一些加密過或未加密的數(shù)據(jù),其中可能有用戶名、注冊碼等信息。 當(dāng)用戶向軟件作者付費注冊之后,會收到注冊文件,用戶只要將該文件存入到指定的目錄

38、中,就可以讓軟件成為正式版。 為增加破解難度,可以在KeyFile中加入一些垃圾信息;對于注冊文件的合法性檢查可分散在軟件的不同模塊中進行判斷;對注冊文件內(nèi)的數(shù)據(jù)處理也盡可能采用復(fù)雜的算法。,11.4.6 功能限制 這類程序一般是Demo(演示)版:功能限制的程序一般分為兩種: 這類程序一般是Demo(演示)版,功能限制的程序一般分為兩種: 1.一種是試用版和正式版的軟件完全分開的兩個版

39、本,正式版只有向軟件作者購買。 2.另一種是試用版和注冊版為同一個文件,一旦注冊之后就,用戶可以使用全部功能。,11.4.7 光盤軟件保護 為了能有效地防止光盤盜版,從技術(shù)來說要解決三個問題: (1)要防止光盤之間的拷貝; (2)要防止破解和跟蹤加密光盤; (3)要防止光盤與硬盤的拷貝。目前防止光盤盜版技術(shù)有:1.特征碼技術(shù) 特征碼技術(shù)是通過識別

40、光盤上的特征碼,如SID(Source Ident-ification Code)來區(qū)分是正版光盤還是盜版光盤。,該特征碼是在光盤壓制生產(chǎn)時自然產(chǎn)生的,而不同的母盤壓制出的特征碼不一樣。光盤上的軟件運行時必須先使用該特征碼,而這種特征碼在盜版者翻制光盤過程中是無法提取和復(fù)制的。2.非正常導(dǎo)入?yún)^(qū) 光盤的導(dǎo)入?yún)^(qū)TOC(Track On CD)是用來記錄有關(guān)于光盤類型等信息,是由光盤自動產(chǎn)生的,但光盤無法復(fù)制非正常的導(dǎo)入?yún)^(qū)。因

41、此,在導(dǎo)入?yún)^(qū)內(nèi)添加重要數(shù)據(jù)以供讀盤使用,便能有效地防止光盤之間的非法復(fù)制。,3.非正常扇區(qū) 對于一般的應(yīng)用軟件來說,在讀取光盤非正常扇區(qū)數(shù)據(jù)的時候,ECC糾錯會出現(xiàn)錯誤,無法讀出非正常扇區(qū)數(shù)據(jù)。但可以通過特定的方法在光盤上制造一個特殊的扇區(qū),并在光盤上編寫一個程序?qū)iT讀取該扇區(qū)的數(shù)據(jù)。 如果在非正常扇區(qū)當(dāng)中添加有用的數(shù)據(jù),如應(yīng)用程序的一部分或者是加密、解密的密鑰。這樣對于盜版者來說,在使用一般軟件讀該扇區(qū)

42、時,會造成數(shù)據(jù)讀出錯誤。同時,如果把光盤上的數(shù)據(jù)讀到硬盤之后,由于密鑰等在正版光盤上,通過硬盤數(shù)據(jù)來制作盜版光盤時,程序也是無法執(zhí)行的。,4.修改文檔結(jié)構(gòu) 光盤的文檔結(jié)構(gòu)是遵循ISO-9660標(biāo)準(zhǔn)所制定的, 在ISO 9660格式中包括有一種稱為Directory Record記錄組,記錄了文件的或文件夾的名稱、屬性、長度、生產(chǎn)日期、時間等信息,若是直接修改Directory Record記錄組表達的內(nèi)容,就能騙過Win

43、dows等操作系統(tǒng),制作出隱藏文件夾和超大文件等。,5.使用光盤保護軟件 還可以使用一些商業(yè)光盤保護軟件,“光盤加密大師”能對光盤多種格式鏡像文件(ISO)系統(tǒng)進行可視化修改,將光盤鏡像文件中的目錄和文件進行特別隱藏,將普通文件變?yōu)槌笪募?,將普通目錄變?yōu)槲募夸浀取?(1)隱藏文件 ISO 9660 規(guī)定光盤鏡像文件的每一個目錄和文件都有一定的格式、規(guī)定和記錄,其中第26個字節(jié)記錄的就是文

44、件夾標(biāo)記項。那么光盤文件隱藏的原理就是修改ISO文件的第26個字節(jié)的位置。,讓光盤產(chǎn)生文件確實存在,但又看不到文件和目錄的特殊效果。 (2) 超大文件 超大文件是最對文件進行一些特殊的處理,讓本來很小的文件的容量大于2GB(光盤容量只有700MB)。這種文件可以直接運行,但無法直接復(fù)制,如果要強制復(fù)制就會提示錯誤。,(3)目錄變成文件目錄 當(dāng)目錄以文件的形式存在和顯示時,是無法

45、直接進入和復(fù)制的。 (4)寫入光盤密碼 光盤加密大師還可以設(shè)置光盤密碼,這樣只有輸入正確的密碼才能訪問光盤的內(nèi)容和指定的文件等。,11.4.8 軟件狗 軟件狗(dongles)又稱加密鎖、加密狗等,是一個可安裝在計算機并口、串口或USB接口上的硬件小插件。同時有一套適用于各種語言的接口軟件和工具軟件。 當(dāng)被軟件狗保護的應(yīng)用軟件運行時,程序向插在計算機上的軟件

46、狗發(fā)出查詢命令,軟件狗迅速計算查詢并給出響應(yīng)。如果響應(yīng)正確,軟件將繼續(xù)運行,否則程序?qū)⑼V构ぷ鳌?軟件狗技術(shù)屬于硬加密技術(shù),其中一般都有幾十或幾百字節(jié)的非易失性存儲空間可供讀寫,現(xiàn)在較新的狗內(nèi)部還包含了單片機。單片機里包含有專用于加密算法軟件,該軟件寫入單片機后就不能再被讀出。這樣,就保證了軟件狗具有硬件不可被復(fù)制、加密強度大、可靠性高等特點,軟件狗廣泛應(yīng)用于計算機商業(yè)軟件保護。 從結(jié)構(gòu)上來說,使用軟件狗進行加密的軟件分為三個部分

47、: 1.軟件狗的驅(qū)動程序部分 2.負責(zé)與驅(qū)動程序進行通訊的具體語言模塊 3.客戶軟件部分。,為了提高軟件狗的安全性,現(xiàn)在軟件狗采用了一些防破譯技術(shù)。如: 1.隨機噪聲技術(shù)是針對監(jiān)視通信口工具設(shè)計的。如果試圖截聽通信口與軟件狗的交互數(shù)據(jù)流,將會發(fā)現(xiàn)那里面夾雜了大量的無用隨機數(shù)據(jù),讓解密者難辨真假。而應(yīng)用軟件和狗之間卻可以按照通訊協(xié)議正常通話。 也可以采用不對稱

48、加密算法,解決通訊監(jiān)聽破解的難題,傳統(tǒng)的對稱算法加密,黑客只要從內(nèi)存中獲得其加密密鑰,就可以破解整個通訊過程。,2.時間閘技術(shù)是監(jiān)視程序的運行時間。如果有人想把程序停下來進行分析,軟件將被時間閘切斷運行或者自毀應(yīng)用程序,使破解者負出沉重代價。 3.迷宮技術(shù)是在程序的入口和出口間插入了大量的跳轉(zhuǎn)來迷惑破解者,使他們很難分析出程序邏輯。 4.將應(yīng)用程序的一部分寫到軟件狗中,如果不使用軟件狗,應(yīng)用程序是不完整的,也

49、就無法執(zhí)行了。,軟件狗破解:(1)仿制硬件電路(2)修改主程序。跳過訪問軟件狗或符合讀出軟件狗信息。,11.4.9 軟盤保護技術(shù) 軟盤保護技術(shù)的原理是用特殊的方法在軟盤上建立非正常的區(qū)間,并將一些重要的信息,如密鑰、加密程序存放在該區(qū)間內(nèi)。軟件在運行時先檢驗這些信息,當(dāng)檢驗正確時軟件才能使用,這種軟盤就好像一把鑰匙,通常稱這種軟盤為“鑰匙盤”。 制作 “鑰匙盤”的原理如下: 軟磁盤有若干個同心圓,每個

50、圓稱為一個磁道。每個磁道分為若干個扇區(qū)。每個扇區(qū)有間隙(GAP)。,對于標(biāo)準(zhǔn)的3.5英寸軟盤來說,有80個磁道,每磁道有18個扇區(qū),每扇區(qū)可以存放512字節(jié)的數(shù)據(jù),操作系統(tǒng)也只能讀寫標(biāo)準(zhǔn)格式化磁盤。如果采取一些特殊的手段破壞軟盤的標(biāo)準(zhǔn)結(jié)構(gòu)和讀寫方法,如改變扇區(qū)編號、扇區(qū)個數(shù)、扇區(qū)大小、磁道數(shù)、磁道接頭數(shù)、磁道間隙指紋等,在軟盤上制作出“非正?!?的區(qū)間。這樣,用正常的拷貝命令、讀寫命令、刪除命令是無法影響軟盤非正常區(qū)間上的數(shù)據(jù)。,11.

51、4.10 反跟蹤技術(shù) 反跟蹤技術(shù)是防止破解者通過直接“跟蹤”軟件的執(zhí)行過程,如動態(tài)調(diào)試、靜態(tài)反匯編等,來獲取重要信息和加密方法。一個加密軟件的安全性好壞很大程度上取決于軟件的反跟蹤能力。 下面介紹一些反跟蹤技術(shù)的基本方法: 1.在應(yīng)用程序啟動時,先判斷內(nèi)存中是否有調(diào)試程序,若發(fā)現(xiàn)有調(diào)試程序存在,程序?qū)⒕芙^運行等。 2.對重要的程序段應(yīng)是不可修改的。,3.綜合多種軟件加密方法

52、,交叉使用不同的加密技術(shù)。 4.設(shè)置跟蹤障礙,提高破解難度。 5.一旦發(fā)現(xiàn)跟蹤行為,可以采取自毀行為,這將大大增加破解者的成本。 6.當(dāng)應(yīng)用程序執(zhí)行到重要程序段之前,可以采用封鎖鍵盤輸入,封鎖顯示器和打印機輸出。待重要程序段任務(wù)完成后再解除鍵盤、顯示器和打印機封鎖。,7.為防止破解者通過修改堆棧指針的值來達到跟蹤目的,可將堆棧指針設(shè)在特定的區(qū)域,使堆棧指針指向無意義的操作。

53、 8.加密程序最好以分段的密文形式裝入內(nèi)存,執(zhí)行完一段程序后,再解密和執(zhí)行下一段程序,同時在內(nèi)存中刪除上一段程序。,(1)在線方式的軟件保護原理  傳統(tǒng)的軟件保護產(chǎn)品主要通過應(yīng)用程序與本地計算機上的加密鎖或許可證文件進行驗證的方式,這種方式的缺點是需要安裝客戶端硬件、驅(qū)動或者是本地許可證,而且在軟件開發(fā)商與應(yīng)用程序之間沒有聯(lián)系,因此后期的許可升級比較麻煩。 此外,無論是客戶端的加密鎖硬件還是許可證文件,都較容易被破解者分析、破解。對于

54、加密鎖來說,目前硬件復(fù)制的破解方式也非常多。 隨著互聯(lián)網(wǎng)的發(fā)展,一種新的、基于互聯(lián)網(wǎng)服務(wù)器認證的軟件保護方式油然興起。這種在線方式 (On-line Protection) 的軟件保護是以新興的互聯(lián)網(wǎng)技術(shù)為基礎(chǔ),以互聯(lián)網(wǎng)服務(wù)器來替代傳統(tǒng)的加密鎖硬件。,11.4.11 網(wǎng)絡(luò)軟件保護,應(yīng)用程序通過開發(fā)商發(fā)放的授權(quán)碼與網(wǎng)絡(luò)認證服務(wù)器建立連接,并調(diào)用服務(wù)器上的Web Service接口完成軟件保護工作。因為這種客戶端/服務(wù)器模

55、式之前采用了高強度的類似TSL的通訊加密技術(shù),而且服務(wù)器遠離軟件用戶,因此它的軟件保護強度可以非常高。除此之外,在線方式的軟件保護不需要在客戶端安裝眾多的模塊,因此安裝、部署、維護都非常簡單。最重要的是,高性能的服務(wù)器可以提供除了軟件保護之外的其它眾多接口,如數(shù)據(jù)存儲、遠程通訊等,其應(yīng)用范圍已經(jīng)大大超出了傳統(tǒng)軟件保護的范圍。   在線方式的客戶端通過與服務(wù)器的實時連接,為開發(fā)商收集軟件用戶使用狀態(tài)、統(tǒng)計軟件使用情況、快速升級與服務(wù)提供

56、了可能。,(2)網(wǎng)絡(luò)加密產(chǎn)品的原理和使用 首先要在網(wǎng)絡(luò)上啟動一個網(wǎng)絡(luò)加密狗(或加密卡)的加密服務(wù)程序,將使得網(wǎng)絡(luò)上所有合法用戶可以訪問到網(wǎng)絡(luò)狗。當(dāng)用戶在客戶機端運行加密后的軟件時,客戶機會向網(wǎng)絡(luò)中尋找提供加密服務(wù)的網(wǎng)絡(luò)狗。當(dāng)網(wǎng)絡(luò)狗存在并且返回正確檢測信息后,用戶被認為是合法的,網(wǎng)絡(luò)軟件就可以正常使用了。 網(wǎng)絡(luò)加密產(chǎn)品適應(yīng)能力可以表現(xiàn)為: 1.支持多操作系統(tǒng)。 2.支持多協(xié)議。

57、 3.支持復(fù)雜網(wǎng)絡(luò)。 4.支持多進程。,11.4. 12 補丁技術(shù) 補丁技術(shù)主要是針對已發(fā)布的軟件漏洞和軟件功能更新所采取的軟件更新技術(shù),也是一種軟件保護方式。補丁技術(shù)主要有文件補丁和內(nèi)存補丁兩種。 1.文件補丁 文件補丁就是直接修改文件本身某些數(shù)據(jù)或代碼,主要針對沒有被加密、加殼和CRC校驗的目標(biāo)程序。 2.內(nèi)存補丁 內(nèi)存補丁主要針對被加密、加殼、CRC校驗的

58、程序,內(nèi)存補丁的總體思想就是在目標(biāo)程序程序解密、解壓、校驗等情況發(fā)生以后,在目標(biāo)程序的地址空間中修改數(shù)據(jù)。,11.5 軟件加殼與脫殼11.5.1 “殼”的概念 “加殼”,就是用專門的工具或方法,在應(yīng)用程序中加入一段如同保護層的代碼,使原程序代碼失去本來的面目,從而防止程序被非法修改和編譯。 用戶在執(zhí)行被加殼的程序時,實際上是先執(zhí)行“外殼”程序,而由這個“外殼”程序負責(zé)把原程序在內(nèi)存中解開,并把控制

59、權(quán)交還給解開后原程序。,加殼軟件按照其加殼目的和作用,可分為兩類:一是保護,二是壓縮。 1.保護程序 這是給程序加殼的主要目的,就是通過給程序加上保護層的代碼,使原程序代碼失去本來的面目。它的主要目的在于反跟蹤,保護代碼和數(shù)據(jù),保護程序數(shù)據(jù)的完整性,防止程序被調(diào)試、脫殼等。 2.壓縮程序 這應(yīng)該是加殼程序的附加功能。壓縮后原程序文件代碼也失去了本來的面目,可以保護軟件。

60、,注意用WinZip、WinRAR等文件壓縮文件,一般是不可執(zhí)行的。而這里對exe壓縮程序是可執(zhí)行的。 殼的一般加載過程是: 1.獲取殼自己所需要的API地址 2.加密原程序的各個區(qū)塊的數(shù)據(jù) 3.重定位 4.HOOK-API 5.跳轉(zhuǎn)到程序原入口點,11.5.2 軟件加殼工具介紹 現(xiàn)在用于壓縮程序為主要目的的常見加殼軟件有A

61、SPacK、UPX和PECompact等,用于保護程序為主要目的的常見加殼軟件有AsProtect、 tElock和幻影等。下面簡單介紹一些常用的加殼軟件。 1.ASPack ASPack是一款Win32高效保護性的壓縮軟件,文件壓縮比率高達40%~70 % 。ASPack無內(nèi)置解壓縮,不能自解壓自己壓縮過的程序。,2.ASProtect ASProtect具有壓縮、加密、反跟蹤代碼、反

62、-反匯編代碼、CRC校驗和花指令等保護措施。它使用Blowfish 等高強度的加密算法,還用RSA 1024作為注冊密鑰生成器。它還通過API鉤子與加殼的程序進行通信。 3.幻影(DBPE) 幻影具體功能有: (1)動態(tài)生成加密密碼,對程序的代碼、數(shù)據(jù)進行加密。 (2)壓縮程序數(shù)據(jù)、代碼。減少占用空間。,(3)對抗所有的反編譯工具。 (4)程序有完整性校驗,防止修改。

63、 (5)對抗所有已知的內(nèi)存還原工具。 如:ProcDump,PEditor等。 (6)對抗所有已知的跟蹤分析工具。如: SoftICE,Trw2000,OllyDbg等。 (7)可為軟件加上運行次數(shù)限制,運行天數(shù)限制,運行有效日期限制,需要注冊才能解除限制。 (8)根據(jù)每臺不同電腦算出不同注冊碼,注冊碼只能在本機有效。 (9)提供接口函數(shù),可讓程序查詢注冊狀態(tài)。,11.5.3 軟

64、件脫殼 對一個加了殼的程序,就要去除其中的無關(guān)干擾信息和保護限制,把它的殼脫去,解除偽裝,還原軟件的本來面目,這一過程就稱為脫殼。 常用的偵殼軟件有Language 2000、File Scanner、FileInfo、PEiDentifer 等。,對軟件進行脫殼時,可以使用脫殼軟件,也可手動脫殼。手動脫殼前,需要熟悉Win32下的可執(zhí)行文件標(biāo)準(zhǔn)格式,可以使用一些輔助工具,如沖擊波、W32Dasm等。

65、手動脫殼主要步驟有:查找程序入口點,獲取內(nèi)存映像文件,重建輸入表等。,脫殼軟件主要分為兩大類,即專用脫殼軟件和通用脫殼軟件。專用的脫殼軟件適用面窄,但對付特定的殼卻極為有效。通用的脫殼軟件往往不能精確地適用于某些軟件。 脫殼成功的標(biāo)志是脫殼后的文件能正常運行,并且功能沒有減少。一般來說,脫殼后的文件長度大于原文件長度。即使同一個文件,當(dāng)采用不同脫殼軟件進行脫殼的時候,由于脫殼軟件機理不同,脫出來的文件大小也不盡相同

66、。,11.6 設(shè)計軟件的一般性建議 1.軟件發(fā)行之前一定要將可執(zhí)行程序進行加殼。 2.要在自己寫的軟件中嵌入反跟蹤的代碼。 3.增加對軟件自身的完整性檢查。 4.不要采用一目了然的名字來命名與軟件保護相關(guān)的函數(shù)和文件。 5.當(dāng)檢測到軟件破解企圖之后,過一段時間后使軟件停止工作。 6.可以通過讀取關(guān)鍵的系統(tǒng)文件的修改時間來得到系統(tǒng)

67、時間的信息。,7.給軟件保護加入一定的隨機性。 8.如果試用版與正式版是分開的兩個版本,而是徹底刪除相關(guān)的代碼。 9.如果軟件中包含驅(qū)動程序,則最好將保護判斷加在驅(qū)動程序中。 10.將注冊碼、安裝時間記錄在多個不同的地方。 11.采用一機一碼,可以防止注冊碼傳播。 12.最好是采用成熟的密碼學(xué)算法。 13.可以采用在線注冊的方法。

68、 14.keyfile的尺寸不能太小。,本章教學(xué)要求: (1)掌握文件靜態(tài)分析和動態(tài)分析概念; (2)知道靜態(tài)分析軟件W32Dasm、IDA Pro功能; (3)知道可執(zhí)行文件代碼編輯工具和可執(zhí)行文件資源編輯工具功能; (4)知道動態(tài)分析軟件SoftICE、OllyDbg調(diào)試器功能; (5)熟悉常用軟件保護技術(shù); (6)知道加殼與脫殼技術(shù); (7)了

溫馨提示

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

評論

0/150

提交評論