第十三章 軟件反跟蹤技術(shù)_第1頁
第十三章 軟件反跟蹤技術(shù)_第2頁
第十三章 軟件反跟蹤技術(shù)_第3頁
第十三章 軟件反跟蹤技術(shù)_第4頁
第十三章 軟件反跟蹤技術(shù)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第十三章軟件反跟蹤技術(shù)第1頁,共53頁,2023年,2月20日,星期三軟件反跟蹤技術(shù)軟件分析技術(shù)概述加密反跟蹤技術(shù)跟蹤技術(shù)反跟蹤技術(shù)執(zhí)行程序結(jié)構(gòu)靜態(tài)跟蹤、防靜態(tài)分析、反防靜態(tài)分析第2頁,共53頁,2023年,2月20日,星期三軟件反跟蹤技術(shù)動態(tài)跟蹤、防動態(tài)跟蹤破壞debug的基本方法主動檢測跟蹤法代碼加密法其他防跟蹤方法小結(jié)軟件防跟蹤編程技巧反跟蹤程序例子常用工具介紹第3頁,共53頁,2023年,2月20日,星期三軟件分析技術(shù)概述在進(jìn)行軟件的破解、解密以及計(jì)算機(jī)病毒分析工作中,一個首要的問題是對軟件及病毒進(jìn)行分析。這些軟件都是機(jī)器代碼程序,對于它們分析必須使用靜態(tài)或動態(tài)調(diào)試工具,分析跟蹤其匯編代碼。第4頁,共53頁,2023年,2月20日,星期三軟件分析技術(shù)概述從軟件使用說明和操作中分析軟件欲破解軟件,首先應(yīng)該先使用該軟件,了解一下功能是否有限制,最好閱讀一下軟件的說明或手冊,特別是自己所關(guān)心的關(guān)鍵部分的使用說明,這樣也許能夠找點(diǎn)線索。靜態(tài)反匯編所謂靜態(tài)分析即從反匯編出來的程序清單上分析。大多數(shù)軟件在設(shè)計(jì)時,都采用了人機(jī)對話方式,所以提示信息入手進(jìn)行分析。crack時常用的靜態(tài)分析工具是W32DASM和HIEW等。第5頁,共53頁,2023年,2月20日,星期三軟件分析技術(shù)概述動態(tài)跟蹤分析雖然從靜態(tài)上可以了解程序的思路,但是并不可能真正了解地了解軟件的細(xì)節(jié),如靜態(tài)分析找不出線索,就要動態(tài)分析程序另外,碰到壓縮程序,靜態(tài)分析就無能為力了,只能動態(tài)分析了所謂動態(tài)分析是利用SOFTICE或TRW2000一步一步地單步執(zhí)行軟件。第6頁,共53頁,2023年,2月20日,星期三軟件分析技術(shù)概述為什么需要動態(tài)跟蹤分析?許多軟件在整體上完成的功能,一般要分解成若干模塊來完成,而且后一模塊在執(zhí)行時,往往需要使用其前一模塊處理的結(jié)果,這一結(jié)果我們把它叫中間結(jié)果。如果我們只對軟件本身進(jìn)行靜態(tài)地分析,一般是很難分析出這些中間結(jié)果的。有許多軟件在運(yùn)行時,其最初執(zhí)行的一段程序往往需要對該軟件的后面各個模塊進(jìn)行一些初始始化工作,而沒有依賴系統(tǒng)的重定位。 有許多加密程序?yàn)榱俗柚狗欠ǜ櫤烷喿x,對執(zhí)行代碼的大部分內(nèi)容進(jìn)行了加密變換,而只有很短的一段程序是明文。加密程序運(yùn)行時,采用了逐塊解密,逐塊執(zhí)行和方法 第7頁,共53頁,2023年,2月20日,星期三軟件分析技術(shù)概述如何進(jìn)行動態(tài)跟蹤分析?對軟件進(jìn)行粗跟蹤所謂粗跟蹤,即在跟蹤時要大塊大塊地跟蹤,也就是說每次遇到調(diào)用CALL指令、重復(fù)操作指令REP,循環(huán)操作LOOP指令以及中斷調(diào)用INT指令等,一般不要跟蹤進(jìn)去,而是根據(jù)執(zhí)行結(jié)果分析該段程序的功能。對關(guān)鍵部分進(jìn)行細(xì)跟蹤對軟件進(jìn)行了一定程度的粗跟蹤之后,便可以獲取軟件中我們所關(guān)心的模塊或程序段,這樣就可以針對性地對該模塊進(jìn)行具體而詳細(xì)地跟蹤分析。一般情況下,對關(guān)鍵代碼的跟蹤可能要反復(fù)進(jìn)行若干次才能讀懂該程序,每次要把比較關(guān)鍵的中間結(jié)果或指令地址記錄下來,這樣會對下一次分析有很大的幫助。第8頁,共53頁,2023年,2月20日,星期三軟件反跟蹤技術(shù)軟件分析技術(shù)概述加密反跟蹤技術(shù)跟蹤技術(shù)反跟蹤技術(shù)執(zhí)行程序結(jié)構(gòu)靜態(tài)跟蹤、防靜態(tài)分析、反防靜態(tài)分析第9頁,共53頁,2023年,2月20日,星期三加密反跟蹤技術(shù)跟蹤技術(shù)DOS中的動態(tài)跟蹤調(diào)試軟件DEBUG單步中斷和斷點(diǎn)中斷通過對單步中斷和斷點(diǎn)中斷的合理組合,可以產(chǎn)生強(qiáng)大的動態(tài)調(diào)試跟蹤功能,這就對磁盤加密技術(shù)造成了巨大的威懾,所以破壞單步中斷和斷點(diǎn)中斷,在反跟蹤技術(shù)中就顯得十分必要,成為反跟蹤技術(shù)中的"必修課"。第10頁,共53頁,2023年,2月20日,星期三反跟蹤技術(shù)作為反拷貝技術(shù)的保護(hù)者反跟蹤技術(shù)是整個磁盤加密技術(shù)中最能顯示技術(shù)水平的部分,如果它稍有漏洞就會影響到整個磁盤加密技術(shù)的可靠性。第11頁,共53頁,2023年,2月20日,星期三反跟蹤技術(shù)一個有效的反跟蹤技術(shù)應(yīng)該具有3大特性:重要程序段是不可跳越和修改的PROLOK的解密過程是通過修改判讀指紋的程序段來實(shí)現(xiàn)的,這其實(shí)是激光加密系統(tǒng)中反跟蹤技術(shù)的一個敗筆,一個有效的反跟蹤技術(shù)應(yīng)該對加密系統(tǒng)中的某些甚至全部程序段進(jìn)行保護(hù),如果這其中有內(nèi)容被修改,將導(dǎo)致出錯主要方法有累計(jì)、累或和異或和程序段等方法同時還要保證重要程序段一定要被執(zhí)行,方法主要有加密程序分段加密,運(yùn)行時逐層解密,逐層清除的方法,即只有運(yùn)行了重要的程序段,才能將下一層程序代碼從密碼形式轉(zhuǎn)換成明碼形式第12頁,共53頁,2023年,2月20日,星期三反跟蹤技術(shù)不通過加密系統(tǒng)的譯碼算法,密碼不可破譯:為塑造一個封閉的加密系統(tǒng),杜絕使用外調(diào)自編子程序甚至手工轉(zhuǎn)換密碼,規(guī)定只能由加密系統(tǒng)的譯碼程序來轉(zhuǎn)換密碼;加密系統(tǒng)是不可動態(tài)跟蹤執(zhí)行的動態(tài)跟蹤是對加密系統(tǒng)的窺視,所以反跟蹤技術(shù)應(yīng)該絕對禁止對加密系統(tǒng)的動態(tài)跟蹤。第13頁,共53頁,2023年,2月20日,星期三軟件反跟蹤技術(shù)軟件分析技術(shù)概述加密反跟蹤技術(shù)跟蹤技術(shù)反跟蹤技術(shù)執(zhí)行程序結(jié)構(gòu)靜態(tài)跟蹤、防靜態(tài)分析、反防靜態(tài)分析第14頁,共53頁,2023年,2月20日,星期三執(zhí)行程序結(jié)構(gòu)在微機(jī)上主要可執(zhí)行程序是COM格式與EXE格式。COM文件結(jié)構(gòu)是程序在一個段中,無堆棧,長度小于64k,在程序頭預(yù)留100h字節(jié),在偏移為100h處是可執(zhí)行代碼。COM文件加載過程為:在可用內(nèi)存低端建立程序段前綴psp,長度100hPsp上方讀入com文件Pc=psp+100h第15頁,共53頁,2023年,2月20日,星期三執(zhí)行程序結(jié)構(gòu)Exe文件結(jié)構(gòu)包括:文件頭格式化區(qū)重定位表程序體代碼段數(shù)據(jù)段堆棧段Exe文件的長度可以大于64k。第16頁,共53頁,2023年,2月20日,星期三Exe文件頭格式為:偏移量意義偏移量意義00h-01hMZ,為EXE文件標(biāo)記0eh-0fh堆棧段的段值(SS)2h-03h文件長度除512的余數(shù)10h-11hSP04h-05h文件長度除512的商12h-13h文件校驗(yàn)和06h-07h重定位項(xiàng)的個數(shù)14h-15h被裝入模塊入口IP值08h-09h文件頭除16的商16h-17h被裝入模塊入口的CS0ah-0bh程序運(yùn)行所需最小段數(shù)18h-19h第一個重定位項(xiàng)的位移0ch-0dh程序運(yùn)行所需最大段數(shù)1ah-1bh覆蓋號1ch可變保留區(qū)第17頁,共53頁,2023年,2月20日,星期三執(zhí)行程序結(jié)構(gòu)Exe文件裝載過程是確定內(nèi)存起始段確定長度讀exe文件到內(nèi)存根據(jù)重定位表對內(nèi)存的exe文件體進(jìn)行重定位取出重定位項(xiàng)中的段值段值加起始段=實(shí)際段值加偏移量得到程序體的一個字取出該字,加上起始段值寫回內(nèi)存原來位置初始化寄存器控制權(quán)轉(zhuǎn)移,開始執(zhí)行第18頁,共53頁,2023年,2月20日,星期三軟件反跟蹤技術(shù)軟件分析技術(shù)概述加密反跟蹤技術(shù)跟蹤技術(shù)反跟蹤技術(shù)執(zhí)行程序結(jié)構(gòu)靜態(tài)跟蹤、防靜態(tài)分析、反防靜態(tài)分析第19頁,共53頁,2023年,2月20日,星期三靜態(tài)跟蹤、防靜態(tài)分析、反防靜態(tài)分析靜態(tài)跟蹤,使用反匯編程序?qū)⒖蓤?zhí)行程序轉(zhuǎn)換為匯編程序,閱讀匯編程序以獲得原始信息的方法。防靜態(tài)跟蹤是將關(guān)鍵代碼變形,使得反編譯結(jié)果不知所云的技術(shù)。防靜態(tài)分析,必須防止從反匯編的程序清單入手分析的方法,必須防止用戶對代碼的靜態(tài)分析與閱讀。第20頁,共53頁,2023年,2月20日,星期三靜態(tài)跟蹤、防靜態(tài)分析、反防靜態(tài)分析防靜態(tài)分析技術(shù)主要有:將程序放在隱蔽的位置:將程序某段或者某字節(jié)放置到其他位置,使得反匯編結(jié)果無法正確運(yùn)行。而在正常運(yùn)行中,有合適的機(jī)制將真實(shí)的代碼拼湊完整。例如EXE頭文件轉(zhuǎn)移,再如文件頭放在特殊的地方。對程序代碼進(jìn)行變換:以密文形式存在執(zhí)行文件中。被加密的程序不能執(zhí)行,必須先解密,關(guān)鍵在于密碼對代碼段的加密。第21頁,共53頁,2023年,2月20日,星期三靜態(tài)跟蹤、防靜態(tài)分析、反防靜態(tài)分析反防靜態(tài)分析是針對防靜態(tài)分析而應(yīng)用的技術(shù),主要使用動態(tài)跟蹤方法,通過跟蹤程序的運(yùn)行,尋找真實(shí)判定正版處的跳轉(zhuǎn),修改代碼,使得先解密,忽略判定條件,直接執(zhí)行程序體。一種較為高級防靜態(tài)分析方法,是后續(xù)模塊需要前面的模塊運(yùn)行結(jié)果,僅僅看代碼是無法了解程序控制流,這樣可以防止破解者閱讀程序。另外的方法還有程序自行初始化,不使用系統(tǒng)重定位的方法,也破壞匯編代碼的解釋。第22頁,共53頁,2023年,2月20日,星期三軟件反跟蹤技術(shù)動態(tài)跟蹤、防動態(tài)跟蹤破壞debug的基本方法主動檢測跟蹤法代碼加密法其他防跟蹤方法小結(jié)軟件防跟蹤編程技巧反跟蹤程序例子常用工具介紹第23頁,共53頁,2023年,2月20日,星期三動態(tài)跟蹤、防動態(tài)跟蹤動態(tài)跟蹤是使用1號3號中斷,跟蹤執(zhí)行程序運(yùn)行的方法。防動態(tài)跟蹤,是在使用debug,codeview,soft-ice,trw2000進(jìn)行動態(tài)跟蹤時,使得跟蹤方法難以進(jìn)行。第24頁,共53頁,2023年,2月20日,星期三破壞debug的基本方法抑制跟蹤中斷DEBUG的T和G命令分別要運(yùn)行系統(tǒng)的單步中斷和斷點(diǎn)中斷服務(wù)程序,在系統(tǒng)向量表中這兩個中斷的中斷向量分別為1和3,中斷服務(wù)程序的入口地址分別存放在0000:0004和0000:000C起始的4個字節(jié)中。因此,當(dāng)這些單元中的內(nèi)容被修改后,T和G命令將無法正常執(zhí)行第25頁,共53頁,2023年,2月20日,星期三破壞debug的基本方法具體實(shí)現(xiàn)方法:將這些單元作為堆棧使用在這些單元中送入軟件運(yùn)行的必要數(shù)據(jù);將軟件中某個子程序的地址存放在這些單元中,當(dāng)需要調(diào)用時使用INT1和INT3指令來代替CALL指令;放入懲罰性程序的入口地址。封鎖鍵盤輸入在加密系統(tǒng)無須從鍵盤或屏幕輸入、輸出信息時,關(guān)閉這些外圍設(shè)備,以破壞跟蹤調(diào)試軟件的運(yùn)行環(huán)境:改變鍵盤中斷服務(wù)程序、BIOS的鍵盤I/O中斷服務(wù)程序的入口地址禁止鍵盤中斷禁止接收鍵盤數(shù)據(jù)不接受指定鍵法(比如T,P,G等DEBUG鍵)第26頁,共53頁,2023年,2月20日,星期三破壞debug的基本方法設(shè)置顯示器的顯示性能當(dāng)加密系統(tǒng)無需在屏幕上顯示信息時,可以通過各種方法關(guān)閉屏幕,這樣可使解密者無法得到跟蹤調(diào)試軟件返回的任何信息,以阻止解密者對加密系統(tǒng)的破譯:封鎖屏幕顯示:可以重新設(shè)置屏幕特性,將前景和背景色彩置成同一種顏色,使解密者在跟蹤期間無法看見調(diào)試信息通過獲取屏幕信息的檢查加密系統(tǒng)是否處于被監(jiān)控狀態(tài)修改顯示器I/O中斷服務(wù)程序的入口地址定時清屏直接對視屏緩沖區(qū)操作第27頁,共53頁,2023年,2月20日,星期三破壞debug的基本方法DEBUG等跟蹤調(diào)試軟件在運(yùn)行時大量地使用了DOS提供的各類中斷,不僅如此,比DEBUG功能更強(qiáng)大,甚至針對反跟蹤技術(shù)設(shè)計(jì)的高級反反跟蹤調(diào)試軟件也調(diào)用了DOS中斷,典型的例子就是使用其它中斷來代替斷點(diǎn)中斷的反反跟蹤技術(shù)。破壞中斷向量表顯然可以從根本上破壞一切跟蹤調(diào)試軟件的運(yùn)行環(huán)境,以達(dá)到"以不應(yīng)萬變"的最終目的第28頁,共53頁,2023年,2月20日,星期三主動檢測跟蹤法當(dāng)解密者利用各種跟蹤調(diào)試軟件對加密系統(tǒng)分析執(zhí)行時,勢必會造成許多與正常執(zhí)行加密系統(tǒng)不一致的地方,如運(yùn)行環(huán)境、中斷入口和時間差異等等。如果在反跟蹤技術(shù)中對不一致的地方采取一定的措施,也同樣可以起到保護(hù)加密系統(tǒng)的目的。實(shí)現(xiàn)這種方法的關(guān)鍵在于以下兩個方面:一是檢測加密系統(tǒng)是否被跟蹤,二是檢測到被跟蹤后如何進(jìn)行處理,前一個方面的實(shí)現(xiàn)主要依靠加密者對DOS內(nèi)核和跟蹤調(diào)試軟件的深入了解,后者則一般是一種死循環(huán)、啟動機(jī)器或提示非法跟蹤并停止運(yùn)行的程序,乃至懲罰性程序。第29頁,共53頁,2023年,2月20日,星期三主動檢測跟蹤法定時檢測法一個程序在正常運(yùn)行和被跟蹤運(yùn)行時,所花的時間是大不相同的,可以想象一個被跟蹤運(yùn)行的程序往往要花費(fèi)極長的時間,反跟蹤技術(shù)抓住這個特點(diǎn),根據(jù)執(zhí)行時間的長短來判斷是否被跟蹤。偶爾檢測法在加密系統(tǒng)中加入判斷時間的功能,并且當(dāng)時間滿足某一條件時再對加密系統(tǒng)中的關(guān)鍵部位進(jìn)行判斷,如果關(guān)鍵部位不存在或發(fā)現(xiàn)了變化則可判定加密系統(tǒng)已經(jīng)被破壞,應(yīng)立即做出相應(yīng)的反應(yīng)第30頁,共53頁,2023年,2月20日,星期三主動檢測跟蹤法利用時鐘中斷法在反跟蹤技術(shù)中利用時鐘中斷可以定時檢查前臺任務(wù)執(zhí)行的情況,如果發(fā)現(xiàn)前臺的程序被非法跟蹤調(diào)試,可以立即采取相應(yīng)的措施,也可以對中斷向量表作定時檢查、計(jì)算程序執(zhí)行時間、密文的譯碼操作和前面說到的定時清屏等等PSP法每個程序在執(zhí)行時都必須建立對應(yīng)的程序段前綴PSP,當(dāng)程序未被跟蹤執(zhí)行時,PSP中14H與16H開始的兩個字節(jié)是相同的,當(dāng)被跟蹤運(yùn)行時,這些內(nèi)容就不會相同。第31頁,共53頁,2023年,2月20日,星期三主動檢測跟蹤法中斷檢測法一個執(zhí)行的程序如未被跟蹤,則INT1和INT3的入口地址相同,且都為啞中斷,如被跟蹤則相反,所以通過檢測INT1和INT3的入口地址即可判斷是否被跟蹤。第32頁,共53頁,2023年,2月20日,星期三設(shè)置堆棧指針法跟蹤調(diào)試軟件在運(yùn)行時,會產(chǎn)生對堆棧的操作動作,比如:保存斷點(diǎn)。因而在反跟蹤技術(shù)中對于堆棧指針的運(yùn)用就顯得相當(dāng)重要了,比如對堆棧指針的值進(jìn)行設(shè)計(jì),并力求使設(shè)計(jì)的結(jié)果具備一定的抗修改性,以免解密者通過再次修改堆棧指針的值來達(dá)到繼續(xù)跟蹤的目的。第33頁,共53頁,2023年,2月20日,星期三設(shè)置堆棧指針法將堆棧指針設(shè)到ROM區(qū):只讀存儲區(qū)ROM是無法保存數(shù)據(jù)的,堆棧指針如果指向ROM區(qū)域,勢必不能保存數(shù)據(jù),這將會使跟蹤調(diào)試無法繼續(xù)進(jìn)行下去。設(shè)在程序段中:堆棧指針如果設(shè)在將要執(zhí)行的程序段中,那么任何的堆棧操作都會破壞程序代碼,使程序不能正常運(yùn)行。設(shè)在中斷向量表內(nèi):INT1和INT3是反跟蹤技術(shù)一定要破壞的中斷,所以將堆棧指針設(shè)在內(nèi)存的低地址段內(nèi),既可以進(jìn)行少量的堆棧操作(跟蹤調(diào)試軟件一般需要大量的堆棧來存放數(shù)據(jù)),還可以破壞單步和斷點(diǎn)中斷的入口地址。第34頁,共53頁,2023年,2月20日,星期三設(shè)置堆棧指針法將堆棧指針移作它用:如果確認(rèn)沒有堆棧操作的話,可以將堆棧指針拿來做其它用途,如保存經(jīng)常要更換的數(shù)據(jù),這樣就可以使堆棧指針的值經(jīng)常更換,從而使它根本無法保存數(shù)據(jù)。前提條件:要保證將要執(zhí)行的程序段不能進(jìn)行有效的堆棧操作;在要進(jìn)行堆棧操作時,必須首先恢復(fù)正確的堆棧指針。第35頁,共53頁,2023年,2月20日,星期三代碼加密法對程序分塊加密執(zhí)行為了防止加密程序被反匯編,加密程序最好以分塊的密文形式裝入內(nèi)存,在執(zhí)行時由上一塊加密程序?qū)ζ溥M(jìn)行譯碼,而且在某一塊執(zhí)行結(jié)束后必須立即對它進(jìn)行清除,這樣在任何時刻內(nèi)不可能從內(nèi)存中得到完整的解密程序代碼。這種方法除了能防止反匯編外還可以使解密者無法設(shè)置斷點(diǎn),從而從一個側(cè)面來防止動態(tài)跟蹤。第36頁,共53頁,2023年,2月20日,星期三代碼加密法對程序段進(jìn)行校驗(yàn)對一個加密程序的解密工作往往只是對幾個關(guān)鍵指令的修改,因此對程序段特別是關(guān)鍵指令的保護(hù)性校驗(yàn)是十分必要的,這樣可以防止解密者對指令進(jìn)行非法篡改。具體方法有累計(jì)、累減、累或和異或和程序段等方法。第37頁,共53頁,2023年,2月20日,星期三代碼加密法迷惑、拖垮解密者在加密系統(tǒng)中多多設(shè)置專門針對解密者的"陷阱"設(shè)置大循環(huán)廢指令法:在加密程序中設(shè)置適當(dāng)?shù)臒o用程序段程序自生成技術(shù):程序的自生成是指在程序的運(yùn)行過程中,利用上面的程序來生成將要執(zhí)行的指令代碼,并在程序中設(shè)置各種反跟蹤措施的技術(shù)第38頁,共53頁,2023年,2月20日,星期三代碼加密法指令流隊(duì)列法CPU為了提高運(yùn)行速度,專門開辟了一個指令流隊(duì)列,以存放將要執(zhí)行的指令(流水)在程序正常執(zhí)行時,其后續(xù)指令是存放在指令流隊(duì)列中的,而跟蹤調(diào)試程序時因?yàn)樗鼱可娴絼討B(tài)修改程序指令代碼(包括后續(xù)指令)的原因,所以無論后續(xù)指令是否被存放在指令流隊(duì)列中,被修改的指令都將被執(zhí)行(包括后續(xù)指令),這一點(diǎn)和程序正常執(zhí)行時是相反的,因?yàn)檎?zhí)行時,CPU只從指令流隊(duì)列中讀取指令,即使后續(xù)指令剛剛被正在執(zhí)行的指令修改過。第39頁,共53頁,2023年,2月20日,星期三舉例

JMP S2 S1:JMP S1;死循環(huán)

S2:LEA SI,S1 LEA DI,S3 PUSH CS PUSH CS POP DS POP ES CLD LOD SW STO SW設(shè)計(jì)在S3處存放S1處的指令,如果在正常執(zhí)行時,由于S3處的其它指令已經(jīng)被存入指令流隊(duì)列中,所以它會正常運(yùn)行,反之則執(zhí)行S1處的死循環(huán)指令。第40頁,共53頁,2023年,2月20日,星期三逆指令流法指令代碼在內(nèi)存中是從低地址向高地址存放的,CPU執(zhí)行指令的順序也是如此,這個過程是由硬件來實(shí)現(xiàn)的,而且這個規(guī)則已經(jīng)被人和跟蹤調(diào)試軟件牢牢接受。針對這個方面逆指令流法特意改變順序執(zhí)行指令的方式,使CPU按逆向的方式執(zhí)行指令,這樣就使得解密者根本無法閱讀已經(jīng)逆向排列的指令代碼,從而阻止解密者對程序的跟蹤。第41頁,共53頁,2023年,2月20日,星期三其他防跟蹤方法混合編程法因?yàn)楦呒壘幾g語言的程序可讀性本身就較差(如編譯過的BASIC、COBOL程序等),如果再將幾種高級語言聯(lián)合起來編寫使用,一定會極大的降低程序的可讀性。自編軟中斷13技術(shù)由于反拷貝技術(shù)制作的指紋一般都存在于軟盤上,所以現(xiàn)在的磁盤加密系統(tǒng)都存在著一個明顯的外部特征:即都要通過調(diào)用INT13來判斷軟盤上指紋的真?zhèn)?,于是必須恢?fù)中斷表的內(nèi)容,這就過早地暴露了自己的弱點(diǎn)內(nèi)存翻卷技術(shù)對內(nèi)存進(jìn)行數(shù)據(jù)存取,采用內(nèi)存翻卷:進(jìn)行尋址操作時,如果數(shù)據(jù)地址的值超過地址空間,則從0000:0000開始計(jì)算。第42頁,共53頁,2023年,2月20日,星期三軟件反跟蹤技術(shù)動態(tài)跟蹤、防動態(tài)跟蹤破壞debug的基本方法主動檢測跟蹤法代碼加密法其他防跟蹤方法小結(jié)軟件防跟蹤編程技巧反跟蹤程序例子常用工具介紹第43頁,共53頁,2023年,2月20日,星期三反跟蹤程序例子示例程序是破壞單步中斷和帶斷點(diǎn)的中斷的反跟蹤程序,可以將此程序安排在加密程序的適當(dāng)位置上。當(dāng)程序沒有被執(zhí)行時,計(jì)算機(jī)的跟蹤功能不變,而當(dāng)程序被執(zhí)行后,系統(tǒng)的跟蹤功能被修改。如果此時再使用跟蹤命令,不論是單步跟蹤是帶斷點(diǎn)跟蹤,都會對正常程序的運(yùn)行造成混亂,甚至造成系統(tǒng)的死鎖。這樣,只要加密程序被執(zhí)行,跟蹤行為就被阻止。第44頁,共53頁,2023年,2月20日,星期三反跟蹤程序例子編寫原理:因?yàn)楦櫿{(diào)試程序軟件不外乎使用計(jì)算機(jī)單部及斷點(diǎn)的中斷功能,具體是調(diào)用INT01H和INT03H實(shí)現(xiàn)的,而INT01H是單部中斷,INT03H是斷點(diǎn)中斷。本程序通過修改INT03H的中斷處理功能,但是仍保留單部中斷功能。第45頁,共53頁,2023年,2月20日,星期三常用工具介紹SoftICE是目前公認(rèn)最好的跟蹤調(diào)試工具。使用它可以很容易的跟蹤一個軟件、或是監(jiān)視軟件產(chǎn)生的錯誤進(jìn)行除錯。你甚至可以用他來替代C語言的調(diào)試器——如果你不喜歡使用C語言自己的調(diào)試器的話。其有幾種平臺的版本,DOS,WINDOW3.1,WIN95/98/2000/NT。Trw2000是中國人自己編寫的調(diào)試軟件,完全兼容SOFTICE各種指令,但現(xiàn)在許多軟件能檢測SoftICE存在,而TRW2000在這方面就好多了。TRW2000有它自己的獨(dú)特方面,是針對破解軟件優(yōu)化的,Windows下的跟蹤調(diào)試程序,跟蹤功能更強(qiáng);可以設(shè)置各種斷點(diǎn),只是斷點(diǎn)種類更多;它可以象一些脫殼工具一樣完成對加密外殼的去除,自動生成EXE文件,只是留給用戶更多的選擇;在DOS下的版本為TR。第46頁,共53頁,2023年,2月20日,星期三常用工具介紹Wdasm8.93反匯編的工具。它可方便反匯編程序,能靜態(tài)分析程序流程,也可動態(tài)分析程序,操作簡單、是破解必備工具之一。Hiew一個十六進(jìn)制工具,它除了普通十六進(jìn)制的功能外,它還有個特色,能反匯編文件,并可以用匯編指令修改程序。第47頁,共53頁,2023年,2月20日,星期三常用工具介紹SmartcheckVB程序執(zhí)行時從本質(zhì)上講是解釋執(zhí)行VB的exe是偽代碼,程序都在vbXXX.dll里面執(zhí)行SmartCheck的出現(xiàn),大大方便了我們,它可將VB程序執(zhí)行的操作完全記錄下來,

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論