計(jì)算機(jī)信息安全技術(shù) 課件 第10章 軟件保護(hù)技術(shù)_第1頁(yè)
計(jì)算機(jī)信息安全技術(shù) 課件 第10章 軟件保護(hù)技術(shù)_第2頁(yè)
計(jì)算機(jī)信息安全技術(shù) 課件 第10章 軟件保護(hù)技術(shù)_第3頁(yè)
計(jì)算機(jī)信息安全技術(shù) 課件 第10章 軟件保護(hù)技術(shù)_第4頁(yè)
計(jì)算機(jī)信息安全技術(shù) 課件 第10章 軟件保護(hù)技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第十章軟件保護(hù)技術(shù)10.1軟件保護(hù)技術(shù)概述10.2靜態(tài)分析技術(shù)10.3動(dòng)態(tài)分析技術(shù)

10.4常用軟件保護(hù)技術(shù)10.5軟件加殼與脫殼10.6設(shè)計(jì)軟件的一般性建議10.1軟件保護(hù)技術(shù)概述軟件保護(hù)技術(shù)是軟件開(kāi)發(fā)者用來(lái)維護(hù)軟件版權(quán),增加其盜版的難度,或延長(zhǎng)軟件破解的時(shí)間,盡可能防止軟件被非法使用所采用的方法。10.1軟件保護(hù)技術(shù)概述軟件保護(hù)技術(shù)與軟件盜版之間是矛和盾的關(guān)系。軟件盜版通常所采用的方法:靜態(tài)分析技術(shù)動(dòng)態(tài)分析技術(shù)10.2靜態(tài)分析技術(shù)靜態(tài)分析是從反匯編出來(lái)的程序清單上分析程序流程,從提示信息入手,了解軟件中各模塊的功能、各模塊之間的關(guān)系及編程思路。通過(guò)對(duì)程序的靜態(tài)分析,是軟件破解的一個(gè)手段,也是軟件保護(hù)的必要方法。10.2.1靜態(tài)分析技術(shù)的一般流程步驟1:運(yùn)行程序,查看該軟件運(yùn)行時(shí)的限制或出錯(cuò)信息。如:試用時(shí)間的限制、試用次數(shù)的限制等。步驟2:查看軟件是否加殼。如果該程序使用加殼保護(hù),則在進(jìn)行靜態(tài)分析前必須進(jìn)行脫殼的處理,否則無(wú)法進(jìn)行對(duì)該軟件的靜態(tài)反匯編操作或反匯編出來(lái)的結(jié)果不正確。步驟3:靜態(tài)分析軟件。利用靜態(tài)反匯編工具(如W32Dasm、C32asm、IDA等)進(jìn)行反匯編,然后根據(jù)軟件的限制或出錯(cuò)信息找到對(duì)應(yīng)的代碼位置,還要找到該軟件的Call和跳轉(zhuǎn)等關(guān)鍵代碼,這些對(duì)是否成功破解與保護(hù)軟件起到關(guān)鍵作用。10.2.1靜態(tài)分析技術(shù)的一般流程步驟4:修改程序。根據(jù)找到的關(guān)鍵代碼,使用十六進(jìn)制編輯器修改這些關(guān)鍵位置的機(jī)器碼或匯編代碼。步驟5:制作補(bǔ)丁程序。找到軟件的相關(guān)使用漏洞后,就可以根據(jù)這些漏洞信息來(lái)制作保護(hù)軟件的補(bǔ)丁程序。10.2.2文件類(lèi)型分析常用的文件分析工具有PEiD、DIE和FileInfo等。10.2.2W32DASM簡(jiǎn)介W32Dasm針對(duì)現(xiàn)在流行的可執(zhí)行程序進(jìn)行反編譯,即把可執(zhí)行的文件反編譯成匯編語(yǔ)言,以便于分析程序的結(jié)構(gòu)和流程。主要功能:

1.加載文件;

2.轉(zhuǎn)到程序入口點(diǎn)

3.轉(zhuǎn)到代碼開(kāi)始;

4.轉(zhuǎn)到頁(yè);

5.轉(zhuǎn)到代碼位置

6.執(zhí)行文本跳轉(zhuǎn);

7.執(zhí)行調(diào)用;

10.2.2W32DASM簡(jiǎn)介8.輸入函數(shù);9.輸出函數(shù);10.菜單參考;11.對(duì)話(huà)框參考;12.串式數(shù)據(jù)參考;13.復(fù)制匯編代碼文本;14.單步跟蹤程序;15.設(shè)置激活斷點(diǎn);10.3動(dòng)態(tài)分析技術(shù)動(dòng)態(tài)分析是利用調(diào)試器(如OllyDbg),通過(guò)調(diào)試程序、設(shè)置斷點(diǎn)、控制調(diào)試程序的執(zhí)行過(guò)程來(lái)發(fā)現(xiàn)問(wèn)題。常見(jiàn)的調(diào)試器SoftICEOllyDbg(簡(jiǎn)稱(chēng)OD)RW2000軟件注冊(cè)破解實(shí)例所用工具:

PeiDv0.92

AspackDiev1.41

OllyDbgv1.10

W32dasmKeyMakev1.73軟件注冊(cè)破解實(shí)例Step1:檢測(cè)殼軟件注冊(cè)破解實(shí)例Step2:脫殼軟件注冊(cè)破解實(shí)例Step3:運(yùn)行程序、嘗試注冊(cè)、獲取注冊(cè)相關(guān)信息軟件注冊(cè)破解實(shí)例Step4:反匯編 用W32dasm對(duì)ZnUn.exe進(jìn)行反匯編。然后在W32dasm提供的參考字符串里尋找剛才那句關(guān)鍵的話(huà):軟件注冊(cè)破解實(shí)例轉(zhuǎn)到對(duì)應(yīng)語(yǔ)句段軟件注冊(cè)破解實(shí)例Step5:調(diào)試 找到剛才的地址004DF869,下斷點(diǎn)。軟件注冊(cè)破解實(shí)例當(dāng)運(yùn)行至斷點(diǎn)時(shí),程序暫停,用F8鍵來(lái)單步執(zhí)行程序,并注意觀察下面的信息框。軟件注冊(cè)破解實(shí)例繼續(xù)運(yùn)行。軟件注冊(cè)破解實(shí)例Step6:制作注冊(cè)機(jī)其中指令長(zhǎng)度是指令機(jī)器碼所占的字節(jié)數(shù),下面選擇用到的寄存器EDX軟件注冊(cè)破解實(shí)例10.4常用軟件保護(hù)技術(shù)序列號(hào)方式警告(NAG)窗口功能限制的程序時(shí)間限制注冊(cè)保護(hù)10.4.1序列號(hào)方式1、序列號(hào)保護(hù)機(jī)制構(gòu)造多元的算法:

特定值=F(用戶(hù)名1,用戶(hù)名2,...序列號(hào)1,序列號(hào)2...)

10.4.1序列號(hào)方式現(xiàn)有構(gòu)造算法的舉例:(1)在軟件程序中有一段加密過(guò)的密文S;

(2)密鑰=F(用戶(hù)名、序列號(hào)),用上面的二元算法得到密鑰;

(3)明文D=F-DES(密文S、密鑰),用得到的密鑰來(lái)解密密文得到明文D;

(4)CRC=F-CRC(明文D),對(duì)得到的明文應(yīng)用各種CRC統(tǒng)計(jì);

(5)檢查CRC是否正確。最好多設(shè)計(jì)幾種CRC算法,檢查多個(gè)CRC結(jié)果是否都正確。10.4.1序列號(hào)方式2、攻擊序列號(hào)保護(hù)數(shù)據(jù)約束性的秘訣

S命令利用消息斷點(diǎn)10.4.2警告(NAG)窗口Nag窗口是軟件設(shè)計(jì)者用來(lái)不時(shí)提醒用戶(hù)購(gòu)買(mǎi)正式版本的窗口。它會(huì)在程序啟動(dòng)或退出時(shí)彈出來(lái),或者在軟件運(yùn)行的某個(gè)時(shí)刻隨機(jī)或定時(shí)地彈出來(lái)。去除警告窗口方法:修改程序的資源靜態(tài)分析動(dòng)態(tài)分析。10.4.3功能限制的程序菜單中部分選項(xiàng)是灰色的不能用,一般是通過(guò)如下兩種函數(shù)實(shí)現(xiàn)的:

(1)EnableMenuItem(2)EnableWindow

(1)EnableMenuItem允許、禁止或變灰指定的菜單條目BOOL

EnableMenuItem(

HMENUhMenu,//菜單句柄

UINTuIDEnableItem,//菜單ID,形式為:充許,禁止,或灰

UINTuEnable//菜單項(xiàng)目旗幟

);

其ASM代碼形式如下:

PUSHuEnable

//uEnable=0則菜單選項(xiàng)允許

PUSHuIDEnableItem

PUSHhWnd

CALL[KERNEL32!EnableMenuItem]允許或禁止鼠標(biāo)和鍵盤(pán)控制指定窗口和條目(禁止時(shí)菜單變灰)

BOOLEnableWindow(

HWNDhWnd,//窗口句柄

BOOLbEnable//允許/禁止輸入

);

如窗口以前被禁止則返回一TRUE,否則返回FALSE。(2)EnableWindow10.4.4時(shí)間限制在Windows中使用計(jì)時(shí)器有如下幾個(gè)API函數(shù)。1.SetTimer()。應(yīng)用程序可以在初始化時(shí)調(diào)用這個(gè)API函數(shù)來(lái)向系統(tǒng)申請(qǐng)一個(gè)計(jì)時(shí)器。2.TimeSetEvent()。應(yīng)用程序通過(guò)調(diào)用TimeSetEvent()函數(shù)來(lái)設(shè)定回調(diào)函數(shù)的激活,從而提高計(jì)時(shí)的精度。3.GetTickCount()。該函數(shù)返回系統(tǒng)自成功啟動(dòng)以來(lái)所經(jīng)過(guò)的毫秒數(shù)。4.TimeGetTime()。多媒體計(jì)時(shí)器函數(shù)TimeGetTime()也可以返回Windows自啟動(dòng)后所經(jīng)過(guò)的時(shí)間,以毫秒為單位。10.4.5注冊(cè)保護(hù)注冊(cè)文件(KeyFile)是一種利用文件來(lái)注冊(cè)軟件保護(hù)的方式。軟件每次啟動(dòng)時(shí),從該注冊(cè)文件中讀取數(shù)據(jù),然后利用某種算法進(jìn)行處理,根據(jù)處理的結(jié)果判斷是否為正確的注冊(cè)文件,如果正確則以注冊(cè)版模式來(lái)運(yùn)行。10.5軟件加殼與脫殼10.5.1殼的介紹 殼是一段執(zhí)行于原始程序前的代碼。原始程序的代碼在加殼的過(guò)程中可能被壓縮、加密……

當(dāng)加殼后的文件執(zhí)行時(shí),殼先于原始程序運(yùn)行,它把壓縮、加密后的代碼還原成原始程序代碼,然后再把執(zhí)行權(quán)交還給原始代碼。10.5.2軟件加殼工具簡(jiǎn)介最常見(jiàn)的加殼軟件:ASPACKUPXPEcompact不常用的加殼軟件:WWPACK32PE-PACKPETITENEOLITE10.5.3軟件脫殼軟件加殼是作者寫(xiě)完軟件后,為了保護(hù)自己的代碼或維護(hù)軟件產(chǎn)權(quán)等利益所常用到的手段。常用脫殼工具:

(1)Aspack:用得最多,可以用ASPACKDie或PEDUMP32脫殼(2)ASProtect+aspack:國(guó)外的軟件多用它加殼,脫殼時(shí)需要用到SOFTICE+ICEDUMP,需要一定的專(zhuān)業(yè)知識(shí)。(3)Upx:可以用UPX本身來(lái)脫殼(4)Armadill:可以用SOFTICE+ICEDUMP脫殼,比較煩(5)Dbpe:國(guó)內(nèi)比較好的加密軟件,新版本暫時(shí)不能脫殼,但可以破解(6)NeoLite:可以用自己來(lái)脫殼(7)Pcguard:可以用SOFTICE+ICEDUMP+FROGICE來(lái)脫殼(8)Pecompat:用SOFTICE配合PEDUMP32來(lái)脫殼(9)Petite:一部分的老版本可用PEDUMP32直接脫殼,新版本脫殼時(shí)需要用到SOFTICE+ICEDUMP,需要一定的專(zhuān)業(yè)知識(shí)。(10)WWpack32:和PECOMPACT一樣其實(shí)有一部分的老版本可以用PEDUMP32直接脫殼,最好還是用SOFTICE配合PEDUMP32脫殼。10.6設(shè)計(jì)軟件的一般性建議(1)軟件最終發(fā)行之前一定要進(jìn)行加殼/壓縮,使得解密者無(wú)法直接修改程序。(2)增加對(duì)軟件自身的完整性檢查。包括對(duì)磁盤(pán)文件和內(nèi)存映像的檢查,以防止有人未經(jīng)允許修改程序進(jìn)行破解。(3)不要采用一目了然的名字來(lái)命名函數(shù)和文件。如IsLicensedVersion()、key.dat等。(4)盡可能少地給用戶(hù)提示信息。因?yàn)橹虢z馬跡都可能導(dǎo)致解密者直接深入到保護(hù)的核心。(5)將注冊(cè)碼、安裝時(shí)間記錄在多個(gè)不同的地方。

(6)檢查注冊(cè)信息和時(shí)間的代碼越分散越好。(7)不要依賴(lài)于GetLocalTime()、GetSystemTime()這樣眾所周知的函數(shù)來(lái)獲取系統(tǒng)時(shí)間。可以通過(guò)讀取關(guān)鍵的系統(tǒng)文件的修改時(shí)間來(lái)得到系統(tǒng)時(shí)間的信息。(8)如果可能,可以采用聯(lián)網(wǎng)檢查注冊(cè)碼的方法,且數(shù)據(jù)傳輸時(shí)要加密。(9)除了加殼/壓縮之外,還需要自己編程在軟件中嵌入反跟蹤的代碼,以增加安全性。(10)在檢查注冊(cè)信息的時(shí)候插入大量無(wú)用的運(yùn)算以誤導(dǎo)解密者,并在檢查出錯(cuò)誤的注冊(cè)信息之后加入延時(shí)。(11)給軟件保護(hù)加入一定的隨機(jī)性。比如除了啟動(dòng)時(shí)檢查注冊(cè)碼之外,還可以在軟件運(yùn)行的某個(gè)時(shí)刻隨機(jī)地檢查注冊(cè)碼。

(12)如果采用注冊(cè)碼的保護(hù)方式,最好是一機(jī)一碼。即注冊(cè)碼與機(jī)器特征相關(guān)。(13)如果試用版與正式版是分開(kāi)的兩個(gè)版本,且試用版的軟件沒(méi)有某項(xiàng)功能,則不要僅僅使相關(guān)的菜單變灰,而是徹底刪除相關(guān)的代碼。(14)如果

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論