




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第十章軟件保護(hù)技術(shù)10.1軟件保護(hù)技術(shù)概述10.2靜態(tài)分析技術(shù)10.3動態(tài)分析技術(shù)
10.4常用軟件保護(hù)技術(shù)10.5軟件加殼與脫殼10.6設(shè)計(jì)軟件的一般性建議10.1軟件保護(hù)技術(shù)概述軟件保護(hù)技術(shù)是軟件開發(fā)者用來維護(hù)軟件版權(quán),增加其盜版的難度,或延長軟件破解的時(shí)間,盡可能防止軟件被非法使用所采用的方法。10.1軟件保護(hù)技術(shù)概述軟件保護(hù)技術(shù)與軟件盜版之間是矛和盾的關(guān)系。軟件盜版通常所采用的方法:靜態(tài)分析技術(shù)動態(tài)分析技術(shù)10.2靜態(tài)分析技術(shù)靜態(tài)分析是從反匯編出來的程序清單上分析程序流程,從提示信息入手,了解軟件中各模塊的功能、各模塊之間的關(guān)系及編程思路。通過對程序的靜態(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)行脫殼的處理,否則無法進(jìn)行對該軟件的靜態(tài)反匯編操作或反匯編出來的結(jié)果不正確。步驟3:靜態(tài)分析軟件。利用靜態(tài)反匯編工具(如W32Dasm、C32asm、IDA等)進(jìn)行反匯編,然后根據(jù)軟件的限制或出錯(cuò)信息找到對應(yīng)的代碼位置,還要找到該軟件的Call和跳轉(zhuǎn)等關(guān)鍵代碼,這些對是否成功破解與保護(hù)軟件起到關(guān)鍵作用。10.2.1靜態(tài)分析技術(shù)的一般流程步驟4:修改程序。根據(jù)找到的關(guān)鍵代碼,使用十六進(jìn)制編輯器修改這些關(guān)鍵位置的機(jī)器碼或匯編代碼。步驟5:制作補(bǔ)丁程序。找到軟件的相關(guān)使用漏洞后,就可以根據(jù)這些漏洞信息來制作保護(hù)軟件的補(bǔ)丁程序。10.2.2文件類型分析常用的文件分析工具有PEiD、DIE和FileInfo等。10.2.2W32DASM簡介W32Dasm針對現(xiàn)在流行的可執(zhí)行程序進(jìn)行反編譯,即把可執(zhí)行的文件反編譯成匯編語言,以便于分析程序的結(jié)構(gòu)和流程。主要功能:
1.加載文件;
2.轉(zhuǎn)到程序入口點(diǎn)
3.轉(zhuǎn)到代碼開始;
4.轉(zhuǎn)到頁;
5.轉(zhuǎn)到代碼位置
6.執(zhí)行文本跳轉(zhuǎn);
7.執(zhí)行調(diào)用;
10.2.2W32DASM簡介8.輸入函數(shù);9.輸出函數(shù);10.菜單參考;11.對話框參考;12.串式數(shù)據(jù)參考;13.復(fù)制匯編代碼文本;14.單步跟蹤程序;15.設(shè)置激活斷點(diǎn);10.3動態(tài)分析技術(shù)動態(tài)分析是利用調(diào)試器(如OllyDbg),通過調(diào)試程序、設(shè)置斷點(diǎn)、控制調(diào)試程序的執(zhí)行過程來發(fā)現(xiàn)問題。常見的調(diào)試器SoftICEOllyDbg(簡稱OD)RW2000軟件注冊破解實(shí)例所用工具:
PeiDv0.92
AspackDiev1.41
OllyDbgv1.10
W32dasmKeyMakev1.73軟件注冊破解實(shí)例Step1:檢測殼軟件注冊破解實(shí)例Step2:脫殼軟件注冊破解實(shí)例Step3:運(yùn)行程序、嘗試注冊、獲取注冊相關(guān)信息軟件注冊破解實(shí)例Step4:反匯編 用W32dasm對ZnUn.exe進(jìn)行反匯編。然后在W32dasm提供的參考字符串里尋找剛才那句關(guān)鍵的話:軟件注冊破解實(shí)例轉(zhuǎn)到對應(yīng)語句段軟件注冊破解實(shí)例Step5:調(diào)試 找到剛才的地址004DF869,下斷點(diǎn)。軟件注冊破解實(shí)例當(dāng)運(yùn)行至斷點(diǎn)時(shí),程序暫停,用F8鍵來單步執(zhí)行程序,并注意觀察下面的信息框。軟件注冊破解實(shí)例繼續(xù)運(yùn)行。軟件注冊破解實(shí)例Step6:制作注冊機(jī)其中指令長度是指令機(jī)器碼所占的字節(jié)數(shù),下面選擇用到的寄存器EDX軟件注冊破解實(shí)例10.4常用軟件保護(hù)技術(shù)序列號方式警告(NAG)窗口功能限制的程序時(shí)間限制注冊保護(hù)10.4.1序列號方式1、序列號保護(hù)機(jī)制構(gòu)造多元的算法:
特定值=F(用戶名1,用戶名2,...序列號1,序列號2...)
10.4.1序列號方式現(xiàn)有構(gòu)造算法的舉例:(1)在軟件程序中有一段加密過的密文S;
(2)密鑰=F(用戶名、序列號),用上面的二元算法得到密鑰;
(3)明文D=F-DES(密文S、密鑰),用得到的密鑰來解密密文得到明文D;
(4)CRC=F-CRC(明文D),對得到的明文應(yīng)用各種CRC統(tǒng)計(jì);
(5)檢查CRC是否正確。最好多設(shè)計(jì)幾種CRC算法,檢查多個(gè)CRC結(jié)果是否都正確。10.4.1序列號方式2、攻擊序列號保護(hù)數(shù)據(jù)約束性的秘訣
S命令利用消息斷點(diǎn)10.4.2警告(NAG)窗口Nag窗口是軟件設(shè)計(jì)者用來不時(shí)提醒用戶購買正式版本的窗口。它會在程序啟動或退出時(shí)彈出來,或者在軟件運(yùn)行的某個(gè)時(shí)刻隨機(jī)或定時(shí)地彈出來。去除警告窗口方法:修改程序的資源靜態(tài)分析動態(tài)分析。10.4.3功能限制的程序菜單中部分選項(xiàng)是灰色的不能用,一般是通過如下兩種函數(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)和鍵盤控制指定窗口和條目(禁止時(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ù)來向系統(tǒng)申請一個(gè)計(jì)時(shí)器。2.TimeSetEvent()。應(yīng)用程序通過調(diào)用TimeSetEvent()函數(shù)來設(shè)定回調(diào)函數(shù)的激活,從而提高計(jì)時(shí)的精度。3.GetTickCount()。該函數(shù)返回系統(tǒng)自成功啟動以來所經(jīng)過的毫秒數(shù)。4.TimeGetTime()。多媒體計(jì)時(shí)器函數(shù)TimeGetTime()也可以返回Windows自啟動后所經(jīng)過的時(shí)間,以毫秒為單位。10.4.5注冊保護(hù)注冊文件(KeyFile)是一種利用文件來注冊軟件保護(hù)的方式。軟件每次啟動時(shí),從該注冊文件中讀取數(shù)據(jù),然后利用某種算法進(jìn)行處理,根據(jù)處理的結(jié)果判斷是否為正確的注冊文件,如果正確則以注冊版模式來運(yùn)行。10.5軟件加殼與脫殼10.5.1殼的介紹 殼是一段執(zhí)行于原始程序前的代碼。原始程序的代碼在加殼的過程中可能被壓縮、加密……
當(dāng)加殼后的文件執(zhí)行時(shí),殼先于原始程序運(yùn)行,它把壓縮、加密后的代碼還原成原始程序代碼,然后再把執(zhí)行權(quán)交還給原始代碼。10.5.2軟件加殼工具簡介最常見的加殼軟件:ASPACKUPXPEcompact不常用的加殼軟件:WWPACK32PE-PACKPETITENEOLITE10.5.3軟件脫殼軟件加殼是作者寫完軟件后,為了保護(hù)自己的代碼或維護(hù)軟件產(chǎn)權(quán)等利益所常用到的手段。常用脫殼工具:
(1)Aspack:用得最多,可以用ASPACKDie或PEDUMP32脫殼(2)ASProtect+aspack:國外的軟件多用它加殼,脫殼時(shí)需要用到SOFTICE+ICEDUMP,需要一定的專業(yè)知識。(3)Upx:可以用UPX本身來脫殼(4)Armadill:可以用SOFTICE+ICEDUMP脫殼,比較煩(5)Dbpe:國內(nèi)比較好的加密軟件,新版本暫時(shí)不能脫殼,但可以破解(6)NeoLite:可以用自己來脫殼(7)Pcguard:可以用SOFTICE+ICEDUMP+FROGICE來脫殼(8)Pecompat:用SOFTICE配合PEDUMP32來脫殼(9)Petite:一部分的老版本可用PEDUMP32直接脫殼,新版本脫殼時(shí)需要用到SOFTICE+ICEDUMP,需要一定的專業(yè)知識。(10)WWpack32:和PECOMPACT一樣其實(shí)有一部分的老版本可以用PEDUMP32直接脫殼,最好還是用SOFTICE配合PEDUMP32脫殼。10.6設(shè)計(jì)軟件的一般性建議(1)軟件最終發(fā)行之前一定要進(jìn)行加殼/壓縮,使得解密者無法直接修改程序。(2)增加對軟件自身的完整性檢查。包括對磁盤文件和內(nèi)存映像的檢查,以防止有人未經(jīng)允許修改程序進(jìn)行破解。(3)不要采用一目了然的名字來命名函數(shù)和文件。如IsLicensedVersion()、key.dat等。(4)盡可能少地給用戶提示信息。因?yàn)橹虢z馬跡都可能導(dǎo)致解密者直接深入到保護(hù)的核心。(5)將注冊碼、安裝時(shí)間記錄在多個(gè)不同的地方。
(6)檢查注冊信息和時(shí)間的代碼越分散越好。(7)不要依賴于GetLocalTime()、GetSystemTime()這樣眾所周知的函數(shù)來獲取系統(tǒng)時(shí)間??梢酝ㄟ^讀取關(guān)鍵的系統(tǒng)文件的修改時(shí)間來得到系統(tǒng)時(shí)間的信息。(8)如果可能,可以采用聯(lián)網(wǎng)檢查注冊碼的方法,且數(shù)據(jù)傳輸時(shí)要加密。(9)除了加殼/壓縮之外,還需要自己編程在軟件中嵌入反跟蹤的代碼,以增加安全性。(10)在檢查注冊信息的時(shí)候插入大量無用的運(yùn)算以誤導(dǎo)解密者,并在檢查出錯(cuò)誤的注冊信息之后加入延時(shí)。(11)給軟件保護(hù)加入一定的隨機(jī)性。比如除了啟動時(shí)檢查注冊碼之外,還可以在軟件運(yùn)行的某個(gè)時(shí)刻隨機(jī)地檢查注冊碼。
(12)如果采用注冊碼的保護(hù)方式,最好是一機(jī)一碼。即注冊碼與機(jī)器特征相關(guān)。(13)如果試用版與正式版是分開的兩個(gè)版本,且試用版的軟件沒有某項(xiàng)功能,則不要僅僅使相關(guān)的菜單變灰,而是徹底刪除相關(guān)的代碼。(14)如果
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州國企招聘2025中國電建貴州院秋季招聘筆試參考題庫附帶答案詳解
- 財(cái)經(jīng)角度下的教育創(chuàng)新實(shí)踐研究
- 跨越語言障礙文化交流的新動力
- 廣東2025年01月廣州市越秀區(qū)華樂街道2025年招考1名退管助老員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 工程量清單計(jì)價(jià)基本原理重慶市房屋建筑與市政基礎(chǔ)設(shè)施工程現(xiàn)場施工專業(yè)人員土建預(yù)算
- 高效辦公環(huán)境下的營銷團(tuán)隊(duì)管理
- 四川2024年12月四川省喜德縣公開考核招考10名緊缺專業(yè)技術(shù)人員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 關(guān)于警衛(wèi)計(jì)劃實(shí)施的管理規(guī)定
- 風(fēng)險(xiǎn)評估與控制企業(yè)財(cái)務(wù)管理的關(guān)鍵
- 管網(wǎng)地下敷設(shè)張志英課件
- 股指期貨基礎(chǔ)知識介紹培訓(xùn)課件
- 2024年北京東城社區(qū)工作者招聘筆試真題
- 2025中智集團(tuán)招聘重要崗位高頻重點(diǎn)提升(共500題)附帶答案詳解
- xx學(xué)校培訓(xùn)部工作職責(zé)
- T-GXAR 005-2024 制冷機(jī)房運(yùn)行維護(hù)規(guī)程
- 開工第一課安全培訓(xùn)總結(jié)精彩
- 二級WPS Office高級應(yīng)用與設(shè)計(jì)計(jì)算機(jī)等級考試試題與參考答案(2024年)
- 電子商務(wù)專業(yè)綜合技能測試題(附參考答案)
- 前程無憂測評題庫及答案
- 全腦血管造影術(shù)的護(hù)理查房
- 直系親屬股權(quán)無償轉(zhuǎn)讓合同(2篇)
評論
0/150
提交評論