第十三章 軟件反跟蹤技術(shù)_第1頁(yè)
第十三章 軟件反跟蹤技術(shù)_第2頁(yè)
第十三章 軟件反跟蹤技術(shù)_第3頁(yè)
第十三章 軟件反跟蹤技術(shù)_第4頁(yè)
第十三章 軟件反跟蹤技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩48頁(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)介

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

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

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論