在計算機應用系統(tǒng)中,人們幾乎對所有信息的處理都是通過運用不同的計算機軟件來實現的,即計算機軟件能夠直接控制計算機應用系統(tǒng)中的數據,因此,對于計算機應用系統(tǒng)中數據的安全的保護,保護計算機軟件的安全運行是一個重要方面。要想保護計算機軟件的安全運行,必須基于一個安全的系統(tǒng)硬件平臺,防止軟件在運行過程中被跟蹤監(jiān)視、干擾和篡改,其中反跟蹤是最為主要和重要的一點。因此,為了保證計算機軟件的安全運行,必須采用反跟蹤技術防止軟件跟蹤。
自從計算機軟件被開發(fā)出來以后,一直有人利用跟蹤軟件對正在運行的計算機程序進行跟蹤,從而竊取軟件源代碼,對計算機系統(tǒng)進行入侵,破壞,取消系統(tǒng)的防復制和加密功能,進而竊取計算機應用系統(tǒng)中的數據。目前跟蹤軟件主要是利用系統(tǒng)中的單步中斷和斷電中斷程序實現目的的。軟件跟蹤又分為動態(tài)跟蹤和靜態(tài)跟蹤。動態(tài)跟蹤是利用調試工具將程序強行在某處中斷,使程序單步執(zhí)行,從而進行跟蹤分析。靜態(tài)跟蹤是利用反編譯工具對軟件進行反匯編,得到源代碼進行數據的分析。
軟件惡意跟蹤的大量出現,反跟蹤技術自然應運而生,運用軟件根據對各種調試和反匯編工具特征的判斷,實現對計算機軟件的實時監(jiān)測,防止跟蹤者利用跟蹤軟件對計算機軟件的運行進行跟蹤。良好的計算機加密軟件都離不開反跟蹤技術,計算機系統(tǒng)數據被竊取,軟件被攻擊,大多都是從計算機軟件被跟蹤開始的。所以,要想保護計算機軟件安全運行,反跟蹤技術的應用必不可少。如果沒有反跟蹤技術,計算機軟件就如同毫不設防一般,任由跟蹤者毫無障礙地進行破解攻擊,進而導致計算機軟件信息和數據被解讀,計算機用戶的信息安全完全得不到保障。
抑制單步中斷和斷點中斷。計算機系統(tǒng)中單步中斷和斷點中斷的服務程序是Debug進行T命令和G命令的執(zhí)行過程中必須調用的。因此,在反跟蹤技術中,可以通過將單步中斷和斷點中斷程序替換成其他中斷,從根本上將跟蹤者調用程序的運行環(huán)境徹底破壞,讓跟蹤者沒有程序可調用,從而防止計算機軟件在運行過程中被跟蹤。
封鎖鍵盤輸入。所有跟蹤軟件進行計算機軟件跟蹤的時候,都需要操縱者通過鍵盤輸入發(fā)出指令,并且通過計算機屏幕顯示調試跟蹤的結果。針對這一點,在加密系統(tǒng)不需要接受鍵盤輸入指令的情況下,反跟蹤技術可以通過從關閉計算機鍵盤,阻止跟蹤軟件接收到操縱者的指令,從而使跟蹤軟件無法繼續(xù)運作。而對于計算機鍵盤的關閉,反跟蹤技術可以通過禁止鍵盤中斷程序的運行、禁止接收鍵盤數據、更改鍵盤中斷程序的起始地址等方法實現。
檢測跟蹤。跟蹤者要想利用跟蹤軟件侵入計算機系統(tǒng),必須對加密系統(tǒng)進行分析執(zhí)行,如此就會導致計算機加密系統(tǒng)的執(zhí)行出現運行環(huán)境變化、中斷入口改變、時間長短與正常運行不一致等異常情況。對此,反跟蹤技術可以在發(fā)生異常的地方采取措施,對計算機加密系統(tǒng)進行保護。比如,在一個計算機軟件被跟蹤時,運行所花的時間跟正常運行時明顯不同的,反跟蹤技術可以通過檢查軟件運行時間來判斷是否被跟蹤,并且同時對計算機加密系統(tǒng)的關鍵位置進行實時監(jiān)控,一旦發(fā)現異常,就作出應對,進行加密系統(tǒng)的修復。類似的反跟蹤技術還能進行多方位同步使用,環(huán)環(huán)相扣,密切相連,從而提高計算機加密系統(tǒng)的復雜度和可靠性,大大增加跟蹤者的解密難度。
分塊加密程序。為了防止計算機加密系統(tǒng)程序被反匯編,加密程序需要以分塊密文的形式裝入內存。在程序執(zhí)行時,由前一塊加密程序對其進行譯碼,并且在程序執(zhí)行結束后,立馬進行清除處理。如此一來,跟蹤者無論在什么時候都無法從內存中得到完整的解密程序代碼,更不可能對計算機加密系統(tǒng)程序進行反匯編。跟蹤者無法入侵加密系統(tǒng),就不能設置斷點,對計算機軟件的跟蹤就更是無從談起。
設置堆棧指針。跟蹤軟件運行時,必須對堆棧進行操作。因此,反跟蹤技術可以通過針對堆棧指針采取措施防止跟蹤。比如,可以重新設計堆棧指針的值,使其具有一定的抗修改性,從而避免跟蹤者通過再次改變堆棧指針的值進行繼續(xù)跟蹤。具體方法有以下幾點:將堆棧指針設置到ROM區(qū)或程序段中、中斷內向量表以及改變堆棧指針的作用等。
逆指令流法。在計算機內存中,指令代碼是按照從低級地址到高級地址的順序進行存放的,同時這也是CPU執(zhí)行指令的順序,這個過程由計算機硬件來實現,人們和所設計的跟蹤調試軟件也廣泛接受這一規(guī)律。針對這個特點,反跟蹤技術可以采用逆指令流法,通過改變順序執(zhí)行指令的方法,使CPU逆向執(zhí)行指令,讓跟蹤者無法解讀逆向排列的指令代碼,從而防止跟蹤者對計算機軟件的跟蹤。逆指令流法如果能夠在軟件加密中得到運用,一定能大大提高計算機系統(tǒng)的安全性。
目前相關專業(yè)人員已經開發(fā)出了反調試器技術、反斷點技術、虛擬機應用、和反單步跟蹤技術等大量反跟蹤技術。然而這些技術雖然本身強度很高,但并沒有很好地做到代碼的保護,這會在很大程度上影響到它的反跟蹤效果。因此,研究人員做出了反跟蹤技術的核心突破,一種新型的反跟蹤系統(tǒng)應運而生——代碼自修型反跟蹤系統(tǒng),它引入一種新型的代碼自修改技術,結合目標代碼自修改和反跟蹤技術,隱藏處理關鍵代碼的原指令,從而大大增加跟蹤分析的難度,加強對軟件的保護作用,最終形成一套技術成熟、效果強力的反跟蹤系統(tǒng)。代碼自修改技術的實現過程,主要是對代碼進行隱藏和修復,其中涉及到原代碼塊、隱藏指令集、目標指令集以及自修改代碼塊等。
包含關鍵代碼的可執(zhí)行模塊就是原代碼塊,目標指令集是用戶想要對原代碼塊進行處理的指令序列,用戶可以選擇多個進行處理。我們可用A表示用戶想要進行隱藏處理的目標指令集,對于A經過隱藏處理得到的指令序列,可用B表示。自修改代碼塊C,就是所有隱藏處理目標指令后得到的可執(zhí)行模塊。代碼自修改的具體實現過程是:第一,用戶在原代碼塊中選擇一組需要進行保護的目標代碼A,分別為其中每一個A代碼指令進行隱藏得到B代碼指令;第二,在原代碼塊中,選取合適的位置插入與每一個B代碼指令相對應恢復處理函數。在程序運行過程中,先運行恢復處理函數恢復隱藏得到的指令序列B;同時,用戶在原代碼塊,選取合適的位置對應每一個A代碼指令插入隱藏處理函數。當程序運行時,先執(zhí)行目標代碼A,而后運行隱藏處理函數,隱藏處理目標代碼A,從而實現反跟蹤分析功能。經過以上的代碼自修改過程后,程序中受到保護的代碼一直保持被隱藏保護的狀態(tài),只在運行需要的某個時間段出現,這樣就做到了程序代碼可動態(tài)生成。
基于代碼自修改的軟件反跟蹤技術主要分為兩大部分,一是實現反跟蹤分析功能的反跟蹤部分,二是用于完成代碼自修改功能的系統(tǒng)代碼自修改代碼處理部分。應用這種軟件反跟蹤技術時,利用加密程序將系統(tǒng)反跟蹤和自修改處理相結合,對目標程序進行處理,就能形成嵌套加密企且具有強力抗跟蹤分析特性的可執(zhí)行文件。如此一來,就能很好地達到軟件反跟蹤的目的,完成對程序的保護。
軟件的破解和加密,跟蹤和反跟蹤一直同時存在。隨著科技的發(fā)展和進步,總會出現新的破解技術破解計算機加密系統(tǒng),對軟件進行跟蹤,而新的加密技術和反跟蹤技術也不斷出現,對計算機軟件安全進行實時保護。因此,相關人員不能懈怠,要不斷對反跟蹤技術進行研發(fā)和更新,及時發(fā)現并修補系統(tǒng)漏洞,保障計算機軟件安全運行,不給跟蹤者可乘之機。