2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩75頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

26、引號(hào)括住。 -c:使查找區(qū)分大小寫 -u:查找Unicode 編碼的字符串 作用:在內(nèi)存中搜尋特定數(shù)據(jù)。 用法:S命令將從指定的內(nèi)存地址開始查找指定內(nèi)容的數(shù)據(jù),一直到超過指定的長(zhǎng)度為止。,(7)T命令 語(yǔ)法: T [=start-address] [count] start-address:?jiǎn)尾礁櫰鹗嫉刂?count

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

60、,注意用WinZip、WinRAR等文件壓縮文件,一般是不可執(zhí)行的。而這里對(duì)exe壓縮程序是可執(zhí)行的。 殼的一般加載過程是: 1.獲取殼自己所需要的API地址 2.加密原程序的各個(gè)區(qū)塊的數(shù)據(jù) 3.重定位 4.HOOK-API 5.跳轉(zhuǎn)到程序原入口點(diǎn),11.5.2 軟件加殼工具介紹 現(xiàn)在用于壓縮程序?yàn)橹饕康牡某R娂託ぼ浖蠥

61、SPacK、UPX和PECompact等,用于保護(hù)程序?yàn)橹饕康牡某R娂託ぼ浖蠥sProtect、 tElock和幻影等。下面簡(jiǎn)單介紹一些常用的加殼軟件。 1.ASPack ASPack是一款Win32高效保護(hù)性的壓縮軟件,文件壓縮比率高達(dá)40%~70 % 。ASPack無(wú)內(nèi)置解壓縮,不能自解壓自己壓縮過的程序。,2.ASProtect ASProtect具有壓縮、加密、反跟蹤代碼、反

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論