電腦加密反跟蹤技術密文技術

來源:互聯網
上載者:User

電腦加密反跟蹤技術密文技術

一)跟蹤技術
大家知道DOS中有一個功能強大的動態跟蹤調試軟體DEBUG,它能夠實現對程式的跟蹤和逐條運行,其實這是利用了單步中斷和斷點中斷的原因,而且目前的大多數跟蹤調試軟體都是利用了這兩個中斷。

單步中斷(INT1)是由機器內部狀態引起的一種中斷,當系統標誌寄存器的TF標誌(單步追蹤旗標)被置位時,就會自動產生一次單步中斷,使得CPU能在執行一條指令後停下來,並顯示各寄存器的內容。
斷點中斷(INT3)是一種非強制中斷,非強制中斷又稱為自陷指令,當CPU執行到自陷指令時,就進入斷點中斷服務程式,由斷點中斷服務程式完成對斷點處各寄存器內容的顯示。
G命令的執行過程:DEBUG中的G命令是用於運行程式的,但當G命令後面跟有斷點參數時,就可使程式運行至斷點處中斷,並顯示各寄存器的內容,這樣就可以大大提高跟蹤的速度。它的實現是通過調用斷點中斷來實現的:DE-BUG首先儲存設定的斷點處指令,改用斷點中斷INT3指令代替,當程式執行到斷點處的INT3指令時,便產生斷點中斷,並把原先儲存的斷點處指令重新替代INT3,以完成一個完整的設定斷點的G命令。通過對單步中斷和斷點中斷的合理組合,可以產生強大的動態調試跟蹤功能,這就對磁碟加密技術造成了巨大的威懾,所以破壞單步中斷和斷點中斷,在反跟蹤技術中就顯得十分必要,成為反跟蹤技術中的"必修課"。

二)反跟蹤技術
作為反拷貝技術的保護者反跟蹤技術是整個磁碟加密技術中最能顯示技術水平的部分,如果它稍有漏洞就會影響到整個磁碟加密技術的可靠性.不過毫無漏洞的反跟蹤技術是沒有,隨著時間的推移、編程工具的更新和經驗的積累,反跟蹤技術只會向完美逼近,但可以肯定的是:一定不會達到完美,這和哲學中的"絕對和相對"是同一個道理。一個卓越的反跟蹤技術雖然肯定有著微小的漏洞,但是它本身其它的技術可以起到彌補和儘可能減小這個漏洞的作用,這就是這個反跟蹤技術的卓越之處。一個有效反跟蹤技術應該具有3大特性:

重要程式段是不可跳越和修改的:PROLOK的解密過程是通過修改判讀指紋的程式段來實現的,這其實是雷射加密系統中反跟蹤技術的一個敗筆,一個有效反跟蹤技術應該對加密系統中的某些甚至全部程式段進行保護,如果這其中有內容被修改,將導致出錯,主要方法有累計、累或和異或和程式段等方法,同時還要保證重要程式段一定要被執行,方法主要有加密程式分段加密,運行時逐層解密,逐層清除的方法,即只有運行了重要的程式段,才能將下一層程式碼從密碼形式轉換成明碼形式;
不通過加密系統的解碼演算法,密碼不可破譯:為塑造一個封閉的加密系統,杜絕使用外調自編子程式甚至手工轉換密碼,規定只能由加密系統的解碼程式來轉換密碼;
加密系統是不可動態跟蹤執行的:動態跟蹤是對加密系統的窺視,所以反跟蹤技術應該絕對禁止對加密系統的動態跟蹤。
反跟蹤技術主要採用的方法有:

抑制跟蹤中斷:DEBUG的T和G命令分別要運行系統的單步中斷和斷點中斷服務程式,在系統向量表中這兩個中斷的中斷向量分別為1和3,中斷服務程式的入口地址分別存放在0000:0004和0000:000C起始的4個位元組中。因此,當這些單元中的內容被修改後,T和G命令將無法正常執行,具體實現方法:
(1)將這些單元作為堆棧使用;
(2)在這些單元中送入軟體啟動並執行必要資料;
(3)將軟體中某個子程式的地址存放在這些單元中,當需要調用時使用INT1和INT3指令來代替CALL指令;
(4)放入懲罰性程式的入口地址。

封鎖鍵盤輸入:各種跟蹤調試軟體在工作時,都要從鍵盤上接收操作者發出的命令,而且還要從螢幕上顯示出調試跟蹤的結果,這也是各種跟蹤調試軟體對運行環境的最低要求。因此反跟蹤技術針對跟蹤調試軟體的這種"弱點",在加密系統無須從鍵盤或螢幕輸入、輸出資訊時,關閉了這些外圍裝置,以破壞跟蹤調試軟體的運行環境。鍵盤資訊的輸入採用的硬體中斷方式,由BIOS中的鍵盤中斷服務程式接收、識別和轉換,最後送入可存放16個字元的鍵盤緩衝區。針對這些過程反跟蹤技術可以採用的方法有:
(1)改變鍵盤中斷服務程式、BIOS的鍵盤I/O中斷服務程式的入口地址:鍵盤中斷的中斷向量為9,BIOS的鍵盤I/O中斷的中斷向量為16H,它們的中斷服務程式的入口地址分別存放在記憶體位址0000:0024H和0000:0058H起始的4個位元組中,改變這些地址中的內容,鍵盤資訊將不能正常輸入。
(2)禁止鍵盤中斷:鍵盤中斷是一個可屏蔽中斷,可通過向8259中斷控制器送屏蔽控制字來屏蔽鍵盤中斷。修飾鍵盤的是中斷屏蔽寄存器的第1位,只要將該位置1,即可關閉鍵盤的中斷。
INAL,21H
ORAL,02H
OUT21H,AL
需要開放鍵盤中斷時,也要用三條指令:
INAL,21H
ANDAL,FDH
OUT21H,AL

(3)禁止接收鍵盤資料:鍵盤資料的接收是由主機板上8255A並行介面完成的。其中連接埠A用來接收鍵盤掃描碼,連接埠B的第7位用來控制連接埠A的接收,該位為0表示允許鍵盤輸入,為1則清除鍵盤。正常情況下,來自鍵盤的掃描碼從連接埠A接收之後,均要清除鍵盤,然後再允許鍵盤輸入,為了封鎖鍵盤輸入,我們只須將連接埠B的第7位置1:
INAL,61H
ORAL,80HOUT61H,AL
當需要恢複鍵盤輸入時,執行以下三條指令:
INAL,61H
ANDAL,7FH
OUT61H,AL

(4)不接受指定鍵法:在DEBUG中T、P和G都是用於動態跟蹤的關鍵命令,如果加密系統關鍵命令,如果加密系統在運行時必須從鍵盤上接收資訊(這個時候加密系統容易被各種跟蹤調試軟體截獲,所以應盡量避免),可以通過對鍵盤中斷服務程式的修改擴充,使之不接受T、P和G這些敏感的鍵碼,以達到反跟蹤的目的。當然這是一種不得以而採取的方法,因為它有相當大的局限性和漏洞:一是如果加密系統在接受的資訊中,可能牽涉到T、P等鍵碼,這種方法就行不通了;二是DEBUG下的動態調試命令是T、P和G,那麼其它的跟蹤調試軟體呢?顯然其它的軟體就不一定是這些命令了,而且還不乏兩個鍵碼、三個鍵碼以及更多鍵碼組成的動態調試命令。
3.設定顯示器的顯示效能:當加密系統無需在螢幕上顯示資訊時,可以通過各種方法關閉螢幕,這樣可使解密者無法得到跟蹤調試軟體返回的任何資訊,以阻止解密者對加密系統的破譯。這種反跟蹤技術在實現方法上也有5類:

(1)封鎖螢幕顯示:可以重新設定螢幕特性,將前景和背景色彩置成同一種顏色,使解密者在跟蹤期間無法看見調試資訊:
MOVAH,0BH
MOVBH,0
MOVBL,0
INT10H

這時螢幕的背景顏色和字元顏色均被置成黑色,當需恢複螢幕的顯示特性時,可將上述第3條指令中的BL值換成1~7,便使字元的顏色變成深藍、綠和紅色等。

2)檢查加密系統是否處於被監控狀態:各類跟蹤調試軟體在顯示資訊時,必然會出現螢幕上卷和換頁等操作,因此可以經常檢查螢幕上某些位置的狀態,若有變化則一定有人在跟蹤程式。擷取螢幕資訊的方法可用以下指令來實現:
MOVAH,02
MOVBH,0
MOVDH,行游標值
MOVDL,列游標值
INT10H
MOVAH,08
INT10H

這樣就可以讀取游標處的字元和屬性了。
(3)修改顯示器I/O中斷服務程式的入口地址:顯示器I/O中斷INT10H的中斷入口地址存放在記憶體位址0000:0040H開始的4個位元組中,修改這4個位元組中的內容,就可破壞或擴充顯示器I/O中斷服務程式。
(4)定時清屏:利用對時鐘中斷的擴充,可以使時鐘中斷定時清屏。
(5)直接對視屏緩衝區操作:每台機器都有固定位置和長度的視屏緩衝區(具體的位置和長度隨顯示器的類型而不同),不過各類顯示器上的所有資訊都是視屏緩衝區中資訊的反應。如果軟體直接對視屏緩衝區進行操作,可以獲得比利用顯示中斷快得多的顯示速度,現在許多先進的跟蹤調試軟體都採取了這種方法,一是提高速度;二是針對反跟蹤技術,所以反跟蹤技術僅僅只修改顯示中斷的入口地址是遠遠不夠的,還要通過對時鐘中斷的修改擴充,定時頻繁地重新整理視屏緩衝區中的內容。
檢測跟蹤法:當解密者利用各種跟蹤調試軟體對加密系統分析執行時,勢必會造成許多與正常執行加密系統不一致的地方,如運行環境、中斷入口和時間差異等等。如果在反跟蹤技術中對不一致的地方採取一定的措施,也同樣可以起到保護加密系統的目的。實現這種方法的關鍵在於以下兩個方面:一是如果檢測到加密系統是否被跟蹤,二是檢測到被跟蹤後如何進行處理,前一個方面的實現主要依靠加密者對DOS核心和跟蹤調試軟體的深入瞭解,後者則一般是一種死迴圈、啟動機器或提示非法跟蹤並停止啟動並執行程式,但也不排除有懲罰性動作的程式,在這裡只主要討論第一方面:(1)定時檢測法:一個程式在正常運行和被跟蹤運行時,所花的時間是大不相同的,可以想象一個被跟蹤啟動並執行程式往往要花費極長的時間,反跟蹤技術抓住這個特點,根據執行時間的長短來判斷是否被跟蹤。這種技術在具體實現時有兩點要注意:①確定程式正常運行時所需的時間:這個時間的取值一般比最慢速機器(8088)啟動並執行時間稍微長一些,如果在檢測執行時間時發現所用時間還大於定下的時間值,就可以肯定當前的程式是被跟蹤執行;②發現執行所用的時間小於定下的時間值,也不能認為是?絕對沒被跟蹤,這是因為DEBUG的T和G命令在執行時將禁止所有可屏蔽的中斷,用以計時的時鐘中斷也不例外,所以如果用T和P命令對程式進行動態跟蹤執行時,會完全停止時鐘的計數,有可能出現執行時間遠小於規定的時間值的情況(甚至可能出現不用時間的怪事)。解決這個問題的辦法除了利用抑制跟蹤中斷法外,還可通過時間中斷1AH來解決:如果發現時鐘不走動,則進入死迴圈。
MOVAH,0

INT1AH;讀當前時鐘值

MOVBX,DX;讀取的時鐘低部存入BX

LOOP:MOVAH,0

INT1AH

CMPBX,DX;比較時鐘低部是否變動
JZLOOP;時鐘未走動則返回重讀

另外還存在另一種可能的情況:即解密者簡化了加密程式,則也會引起執行所用時間小於規定值的情況,這種方法的對策是在反跟蹤技術中加入定時檢測關鍵部位元據是否改變和對代碼實施保護法。(2)偶爾檢測法:在加密系統中加入判斷時間的功能,並且當時間滿足某一條件時再對加密系統中的關鍵部位進行判斷,如果關鍵部位不存在或發現了變化則可判定加密系統已經被破壞,應立即做出相應的反應。象這類反跟蹤技術可以出現在加密系統的各處,並為了增加解密難度,還可以使多次出現的這類反跟蹤技術緊密聯絡、環環相扣,以造成一種永遠無法解密的感覺。這類技術如果運用於大的程式中可以極大的提高磁碟加密技術的可靠性,甚至幾乎不可解密。(3)利用時鐘中斷法:時鐘中斷INT8大約每隔55ms就要被執行一次。它主要處理兩項任務:一是計時;二是管理軟碟機的啟閉時間,另外在它執行時,還要再次調用INT1AH和INT1CH中斷,這其中的INT1CH中斷實質上只是一個空操作的中斷,它主要用於使用者有某種周期性的工作時,讓使用者用自己設計的中斷服務程式取而代之的。在反跟蹤技術中利用時鐘中斷可以定時檢查前台任務執行的情況,如果發現前台的程式被非法跟蹤調試,可以立即採取相應的措施,也可以對中斷向量表作定時檢查、計算程式執行時間、密文的解碼操作和前面說到的定時清屏等等。利用時鐘中斷法是一個非常有效反跟蹤技術,通過對INT1CH中斷的擴充,時鐘中斷可以完成許多任務,但要注意的是,這個擴充程式不宜過大,以免影響前景程式的執行速度。(4)PSP法:每個程式在執行時都必須建立對應的程式段首碼PSP,當程式未被跟蹤執行時,PSP中14H與16H開始的兩個位元組是相同的,當被跟蹤運行時,這些內容就不會相同。(5)中斷檢測法:一個執行的程式如未被跟蹤,則INT1和INT3的入口地址相同,且都為啞中斷,如被跟蹤則相反,所以通過檢測INT1和INT3的入口地址即可判斷是否被跟蹤。

破壞中斷向量表:DOS提供了從0到FFH的256個中斷調用(見表1),它們駐留在記憶體的較低地址中,相應的入口地址位於記憶體0000:0000至0000:03FFH中,每個入口地址由4個位元組組成,其中前兩個位元組為程式的位移地址,後兩個位元組為程式的段地址。DEBUG等跟蹤調試軟體在運行時大量地使用了DOS提供的各類中斷,不僅如此,比DEBUG功能更強大,甚至針對反跟蹤技術設計的進階反反跟蹤調試軟體也調用了DOS中斷,典型的例子就是使用其它中斷來代替斷點中斷的反反跟蹤技術。破壞中斷向量表顯然可以從根本上破壞一切跟蹤調試軟體的運行環境,以達到"以不應萬變"的最終目的。DOS和BIOS有個40段的資料區,它位於記憶體0040:0000至0040:00FFH,這256個位元組存放的都是當前系統配置情況,對這些內容的修改也會直接影響到各類跟蹤調試軟體的正常運行。從LOCK89開始就已經使用了破壞中斷向量表和部分40段資料區的反跟蹤技術,因為這種技術的卓越表現,直至LOCK93這種反跟蹤技術一直被保留延用下來。破壞中斷表在其它反跟蹤技術中也出現過,如:抑制跟蹤中斷、改變鍵盤中斷服務程式入口地址和修改顯示器中斷服務程式入口地址等等,所以破壞中斷表是一個涉及面極廣、效果極好的反跟蹤技術,它能最大程度地阻止解密者對加密系統的直接或間接動態跟蹤,使解密技術面臨一個全新的問題。
設定堆棧指標法:跟蹤調試軟體在運行時,會產生對堆棧的操作動作,比如:儲存斷點。因而在反跟蹤技術中對於堆棧指標的運用就顯得相當重要了,比如對堆棧指標的值進行設計,并力求使設計的結果具備一定的抗修改性,以免解密者通過再次修改堆棧指標的值來達到繼續跟蹤的目的。!TB38013100.gif
(1)將堆棧指標設到ROM區:唯讀儲存區ROM是無法儲存資料的,堆棧指標如果指向ROM地區,勢必不能儲存資料,這將會使跟蹤調試無法繼續進行下去。
(2)設在程式段中:堆棧指標如果設在將要執行的程式段中,那麼任何的堆棧操作都會破壞程式碼,使程式不能正常運行。
(3)設在中斷向量表內:INT1和INT3是反跟蹤技術一定要破壞的中斷,所以將堆棧指標設在記憶體的低位址區段內,既可以進行少量的堆棧操作(跟蹤調試軟體一般需要大量的堆棧來存放資料),還可以破壞單步和斷點中斷的入口地址。
(4)將堆棧指標移作它用:如果確認沒有堆棧操作的話,可以將堆棧指標拿來做其它用途,如儲存經常要更換的資料,這樣就可以使堆棧指標的值經常更換,從而使它根本無法儲存資料。設定堆棧指標法是一個針對動態跟蹤設計的反跟蹤技術,不過它的運用有著一定的限制:(1)要保證將要執行的程式段不能進行有效堆棧操作;(2)在要進行堆棧操作時,必須首先恢複正確的堆棧指標。設定堆棧指標不會影響到時鐘中斷儲存資料,因為象時鐘和鍵盤等系統中斷儲存資料所用的都是系統棧,而不象單步和斷點中斷是用堆棧來儲存斷點的。
對程式分塊加密執行:為了防止加密程式被反組譯碼,加密程式最好以分塊的密文形式裝入記憶體,在執行時由上一塊加密程式對其進行解碼,而且在某一塊執行結束後必須立即對它進行清除,這樣在任何時刻內不可能從記憶體中得到完整的解密程式碼。這種方法除了能防止反組譯碼外還可以使解密者無法設定斷點,從而從一個側面來防止動態跟蹤。
對程式段進行校正:對一個加密程式的解密工作往往只是對幾個關鍵指令的修改,因此對程式段特別是關鍵指令的保護性校正是十分必要的,這樣可以防止解密者對指令進行非法篡改。具體方法有累計、累減、累或和異或和程式段等方法。
迷惑、拖垮解密者:為了迷惑和拖垮解密者,可以在加密系統中多多設定專門針對解密者的"陷阱",這樣既可以消耗解密者的時間和精力,還可以磨滅解密者的鬥志和毅力。
(1)設定大迴圈:程式越簡單,就越易讀,跟蹤也就越方便,便於這個原因,在加密系統中設定大迴圈,可以在精力上消耗解密者,延長跟蹤破譯加密系統的時間。這種反跟蹤技術已經被廣泛應用,而且取得了較好的效果。它的具體實現方法是:在加密程式中設定多重迴圈,並使上一層迴圈啟動下一層迴圈,下一層迴圈啟動下下一層迴圈,如此迴圈,而且還可以頻繁地調用子程式,還要保證不能有一層迴圈被遺漏不執行。
(2)廢指令法:在加密程式中設定適當的無用程式段,而且在這其中設定如大迴圈等程式,這種方法在反跟蹤技術中被稱為廢指令法。要實現廢指令法有三點要保證:①廢指令要精心組織安排,不要讓解密者識破機關,這是廢指令法應具備的基本點,因為它的目的是誘導解密者去研究破解自身,並在破解過程中拖垮解密者,所以廢指令法本身的偽裝十分重要;②所用的廢指令應大量選用使用者生疏的指令或DOS內部功能的調用,以最大程度地消耗解密者的精力和破譯時間;③要確保不實現任何功能的廢指令段不能被逾越,這是廢指令法要注意的一個重要問題,因為它如果能被輕易逾越,那麼就說明加密系統所採取的廢指令法是失敗的反跟蹤技術。
(3)程式自產生技術:程式的自產生是指在程式的運行過程中,利用上面的程式來產生將要執行的指令代碼,並在程式中設定各種反跟蹤措施的技術。這樣可以使得反組譯碼的指令並非是將要執行的指令代碼,同時還可以隱蔽關鍵指令代碼,但由於實現代價較高,一般只對某些關鍵指令適用。

指令流隊列法:CPU為了提高運行速度,專門開闢了一個指令流隊列,以存放將要執行的指令,這樣就節省了CPU為了取指令而等待的時間。不過通過對它的利用也可以達到迷惑解密者和阻止動態跟蹤加密程式的目的。在程式正常執行時,其後續指令是存放在指令流隊列中的,而跟蹤偵錯工具時就完全不同了,因為它牽涉到動態修改程式指令代碼(包括後續指令)的原因,所以無論後續指令是否被存放在指令流隊列中,被修改的指令都將被執行(包括後續指令),這一點和程式正常執行時是相反的,因為正常執行時,CPU只從指令流隊列中讀取指令,即使後續指令剛剛被正在執行的指令修改過。這是一個構思十分巧妙的反跟蹤技術,現列出一個基於此原理的反跟蹤程式:
JMPS2

S1:JMPS1;死迴圈

S2:LEASI,S1

LEADI,S3

PUSHCS

PUSHCS

POPDS

POPES

CLD

LODSW
STOSW

;設計在S3處存放S1處的指令,如果在正常執行時,由於S3處的其它指令已經被存入指令流隊列中,所以它會正常運行,反之則執行S1處的死迴圈指令S3:其它指令.
9.逆指令流法:指令代碼在記憶體中是從低地址向高地址存放的,CPU執行指令的順序也是如此,這個過程是由硬體來實現的,而且這個規則已經被人和跟蹤調試軟體牢牢接收。針對這個方面逆指令流法特意改變順序執行指令的方式,使CPU按逆向的方式執行指令,這樣就使得解密者根本無法閱讀已經逆向排列的指令代碼,從而阻止解密者對程式的跟蹤。因為順序執行指令是由硬體決定的,所以如果用軟體的方式設計CPU按逆向執行指令,就顯出相當困難和繁瑣了,不過逆指令流法是一個非常有吸引力和使用前景的反跟蹤技術,如果能把這種技術成功地運用在磁碟加密技術中,勢必會給解密者造成巨大的壓力和威懾。近些年來各種報刊對這種反跟蹤技術進行過深入的討論,本文就摘取其中的精華給大家介紹一下逆指令流法的實現方法。單步中斷是DOS提供跟蹤程式的手段,這個中斷普遍被運用於跟蹤調試軟體,是反跟蹤技術的"死敵",但是如果運用恰當,它同樣也可以成為"朋友",逆指令流法就是一例:由於順序執行指令是由硬體來控制的,所以用軟體方式改變這種規律的方法只有通過以下兩點:①使指令代碼在記憶體中逆向排列,即從高地址向低地址排列;②執行某條指令時,再將該指令按正常順序排列,以適應硬體的要求。前者是靜態,在設計時就可安排妥當,而後者則較複雜了,一是如何在連續執行指令的同時,把指令代碼從逆向捋順為順向;二是指令的長度各不相同,如何迅速瞭解下一條要捋順的指令代碼到底有多長?這就要利用設定單步中斷標誌和修改單步中斷服務程式來完成。

(1)設定單步中斷標誌使CPU每執行完一條指令後都轉去執行INT1中斷服務程式,並同時修改INT1的中斷服務程式,使它能完成逆向指令的順向及修改CS:IP的值、使IP指標人為遞減的功能。設定單步中斷的標誌,即是將標誌寄存器的第8位T置為1,程式如下:
PUSHF

POPAX

ORAX,0100HPUSHAX

POPF

(2)修改CS:IP的值:設X地址處的指令執行後,由硬體自動完成了IP值的遞增修改(順序執行),將IP的值改為Y(Y>X),指向了下一條要執行的指令(正常情況下)。那麼根據X和Y的值就可判斷出X地址處的指令代碼的確切長度(Y-X),從而推出逆向時下一條指令的地址Z(Z<X):Z=X-(Y-X)=2X-Y,知道了逆向時的下一條指令的地址,就可在INT1中斷服務程式中將保護的中斷現場中的IP從Y改成Z。
(3)指令順向:首先為了保證系統的速度,再者為了減少修改擴充的INT1中斷服務程式的長度,在具體確定順向指令代碼的長度時,以PC機最長的指令代碼6位元組計算。決定了指令代碼的長度,剩下的就是指令代碼的順向:由於CPU只能順向執行指令,所以必須將Z地址前面的5個位元組的內容複寫到Z地址後面的單元中,並且為了避免破壞其中的資訊,要將Z地址後面的5個單元中的內容暫時儲存起來,以便下次予以恢複。逆指令流法實現過程中應注意的問題:①由於指令流隊列的存在,使得第一次進入INT1的地址各不相同,這是因為指令流隊列的大小隨CPU的不同而不同:8088CPU的指令流隊列空間為4個位元組,80286為6個位元組,80386為16個位元組,所以指令流隊列中的後續指令的條數也各不相同,這樣就導致了不同的CPU,首次調用INT1的地址各不相同的現象。它的解決方案是在設定完單步中斷標誌後,不要立即安排執行指令,而應插入適當的空操作命令NOP(90);②如果逆指令流程式中有非強制中斷指令(以指令代碼CDH打頭的),必須恢複正常的順序執行指令狀態,否則在非強制中斷服務程式中也將使程式逆向運行。並在非強制中斷指令執行完畢後,再設定成逆指令流程執行方式。
混合編程法:破譯加密系統的首要工作是讀取程式和弄清程式思路,並針對其中的弱點下手。為了阻撓解密者對加密程式的分析,可以盡量將程式設計得紊亂些,以降低程式的可讀性。這種方法具體在反跟蹤技術中使用的就是混合編程法等,因為進階編譯語言的程式可讀性本身就較差(如編譯過的BASIC、COBOL程式等),如果再將幾種進階語言聯合起來編寫使用,一定會極大的降低程式的可讀性。
自編非強制中斷13技術:由於反拷貝技術製作的指紋一般都存在於磁碟片上,所以現在的磁碟加密系統都存在著一個明顯的外部特徵:即都要通過調用INT13來判斷磁碟片上指紋的真偽。由於要調用INT13,所以應保證中斷表(至少部分中斷表,如與INT13有關的INT40和INT1E等等)的正確性,即使先前使用了破壞中斷表等反跟蹤技術,到這個時候都必須恢複中斷表的內容,這就過早地暴露了自己的弱點,加上INT13中斷的入口參數是公開的,通過入口參數便可發現加密程式具體讀取的是哪些扇區或哪個磁軌,甚至可以發現加密系統採取的是何種反拷貝技術,這就給解密者以可乘之機,對加密系統造成巨大的威脅

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.