軟件安全技術PPT課件_第1頁
軟件安全技術PPT課件_第2頁
軟件安全技術PPT課件_第3頁
軟件安全技術PPT課件_第4頁
軟件安全技術PPT課件_第5頁
已閱讀5頁,還剩71頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、軟件安全技術4.l 軟件安全的基本要求 主要目的:一是禁止非法拷貝和使用;二是防止非法閱讀和修改。其技術措施應實現三個基本任務:防拷貝、防靜態分析和防動態跟蹤 。4.1.1防拷貝 指的是通過采取某種加密措施,使得一般用戶利用正常的拷貝命令,甚至于各種拷貝軟件都無法將軟件進行完整的復制,或者是復制到的軟件不能正常運行。防拷貝技術是軟件加密的核心技術 ,利用專用技術制造一種特殊標記,正常的拷貝途徑無法復制這種特殊標記,或者是拷貝到的特殊標記不完整。特殊標記:軟標記,硬標記軟件安全技術4.l 軟件安全的基本要求拷貝盤母盤制造的特殊標記特殊標記的不完全拷貝圖41 加密母盤的不完全拷貝示意圖圖42 防拷

2、貝軟件的一般結構開 始讀磁盤特殊標記有標記嗎?正常運行結 束拒絕運行NY軟件安全技術4.l 軟件安全的基本要求一個簡單的手工作業方法制作硬標記:準備一根針,在酒精燈上將針尖部分燒紅,然后在磁盤上選擇某一位置,將燒紅的針尖靠近磁介質表面停留片刻(注意不要接觸磁介質表面);當拿開針尖以后,磁盤介質的這一部分就有一個小小的痕跡因受熱而發生變化,不能記錄信息,被損壞的扇區如果用INT13H讀寫數據時,會發生10H(CRC)錯。這樣,我們即制作了一個磁盤標記。 在被加密程序中編寫一段程序來識別這一標記,因此必須知道被損壞的扇區所在的磁道和扇區號。 軟件安全技術補充:BIOS INT 13H 磁盤I/OA

3、H功能調用00H復位磁盤01H取磁盤狀態02H讀扇區03H寫扇區04H檢測扇區功能調用02H入口參數:AH= 02HAL:置要讀的扇區數目DL :進行讀操作的驅動器代碼。數碼0和1用于識別軟盤,數碼80H和81H識別硬盤。DH:所讀磁盤磁頭號。CH:識別10位磁道柱面號的低8位數。CL:低6位放入所讀的起始扇區號。高2位存放磁道柱面號的高2位。ES:BX:緩沖區地址。出口參數:錯誤則CF=1,錯誤信息放在AH中,否則CF=0,AL=0。AH中錯誤狀態:00H未出錯;01H非法功能調用;03H對寫保護的磁盤執行寫操作;10H讀磁盤時循環校驗碼(CRC)奇偶校驗錯。軟件安全技術4.l 軟件安全的基

4、本要求知道被燒壞的扇區為1面 10磁道的第4扇區,因此就可以在程序中寫上下面一段識別母盤的程序片段:RETRY:MOV AX,0201 ;讀一個扇區 MOV BX,OFFSET HCQ1 MOV CX,0A04H ;讀10磁道的第4扇區 MOV DX,0100 ;A驅動器的1面 INT 13H JB OK_PASS ;讀扇區出錯,轉OK_PASS JMP RETRY ;是非法復制盤,重復讀盤OKPASS:CMP AH,10H ;CRC錯(受熱損壞的結果)嗎? JNZ RETRY ;不是,重復讀盤 軟件安全技術假定被加密程序是顯示字符串“How are you!”. STACK SEGMENT

5、PARA STACK STACK DB 128 DUP(0) STACK ENDS DATA SEGMENT MSG1 DB 0DH,0AH,“How are you!” DATA ENDS CODE SEGMENT ASSUME CS:CODE,ES:DATA,DS:DATA START PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX MOV DX,OFFSET MSG1 MOV AH,9 INT 21H MOV AH 4CH INT 21H START ENDP CODE ENDS END START 軟件安全技術上述程序采取防拷貝的措施,是將識別母盤的程

6、序片段寫入到程序中,修改后的程序如下: START SEGMENT PARA STACKSTACK DB 128DUP(0) STACK ENDS DATA SEGMENT MSG1 DB 0DH,0AH,“How are you!” HCQ1 DB 512 DUP(0) ;設置磁盤緩沖區 DATA ENDS CODE SEGMENT ASSUME CS:CODE,ES:DATA,DS:DATA START: PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX 軟件安全技術; 以下識別母盤 RETRY: MOV AX,0201H MOV BX,OFFSET HCQ

7、1 MOV CX,0A04H MOV DX,0100H INT 13H JB OK _PASS ;讀扇區出錯,轉OK_PASS JMP RETRY ;是非法復制盤,重復讀盤 OK_PASS: CMP AH,10H JNZ RETRY ;不是原盤,轉RETRY MOV DX,OFFSET MSG1 ;是原盤,正常運行 MOV AH,9 INT 21H MOV AH,4CH INT 21H START: ENDP CODE ENDS END START軟件安全技術4.l 軟件安全的基本要求4.1.2防靜態分析 破譯者可以閱讀到防拷貝的這一段程序。然后進行修改,使得被加密的軟件在運行時不進行特殊標記

8、的識別而無條件地正常執行,使得防拷貝的功能失去作用。例如,對于上述的加密程序,解密者可用DEBUG的反匯編命令看到如下的程序指令代碼(P74):為了解密,可在讀盤操作以后,將 1E53:0015處的指令改為無條件轉移指令: JMP 001E這樣,該程序在運行時,不論讀沒讀到磁盤標記,都會正常地運行。進一步地,還可以將1E53:0007處的指令改為: JMP 001E這樣,該程序在運行時甚至連讀盤都不進行,就可以正常運行。軟件安全技術 U 0 27 1E53:0000 B832lE MOV AX,1E32 1E53:0003 8ED8 MOV DS,AX 1E53:0005 8EC0 MOV E

9、S,AX 1E53:0007 B80102 MOV AX,0201 1E53:000A BB0F00 MOV BX,000F 1E53:000D B9040A MOV CX,0A04 1E53:0010 BA0001 MOV DX,0100 1E53:0013 CD13 INT 13 1E53:0015 7202 JB 0019 1E53:0017 EBEE JMP 0007 1E53:0019 80FC10 CMP AH,10 1E53:001C 75E9 JNZ 0007 1E53:001E BA0000 MOV DX,0000 1E53:0021 B409 MOV AH,09 1E53:

10、0023 CD21 INT 21 1E53:0025 B44C MOV AH,4C 1E53:0027 CD21 INT 21 軟件安全技術4.l 軟件安全的基本要求防止靜態閱讀和分析主要方法:將識別磁盤特殊標記的程序放在比較隱蔽的地方,或者是對該段程序進行加密變換,以密文的形式放在軟件中。但被加密以后的程序不能被執行,要求在被加密的程序片段之前利用另外一段解碼程序,使其變換成明文,然后再運行該段程序進行磁盤特殊標記的識別。經過這樣處理以后的軟件,不運行解碼程序,用 DEBUG的“U”命令反匯編出來的密文對破譯者來說是根本看不明白的,因此阻止了非法用戶對軟件的靜態分析和修改。 例如,將1E53

11、:00070028之間的指令代碼進行逐字節求反,那么在運行時,必須使用解碼程序進行解密變換。為此在1E53:0007處增加一段解碼程序,而把原CS:00070028H之間的指令代碼經逐字節求反加密變換以后,存放在1E53:00lB開始的內存區域中。 軟件安全技術4.l 軟件安全的基本要求 1E53:0007 BE1B00 MOV SI,00lB ;SI指向密碼首地址1E53:000A B93D00 MOV CX,003D ;CX指向密碼末地址1E53:000D 2BCE SUB CX,SI ;解密的字節數CX1E53:000F FC CLD1E53:0010 2E CS:1E53:0011 8

12、A04 MOV AL,SI ;取一字節密文1E5:0013 F6D0 NOT AL ;求反解密1E53:0015 2E CS:1E53:0016 8804 MOVSI,AL ;存明文一字節1E53:0018 46 INC SI ;改變地址1E53:0019 E2F5 LOOP 0010 ;循環解密1E53:001B 47 INC DI1E53:001C FEFD ?CH軟件安全技術4.l 軟件安全的基本要求如:1E53:001B,001C,001D處內容為:47,FE,FD逐字節取反后為:B8,01,02其匯編指令為:MOV AX,02014.1.3防動態跟蹤 采取了防靜態分析的措施以后,雖然

13、阻止了非法用戶對軟件的靜態分析和閱讀及修改,但是可以利用DEBUG對被加密的軟件進行跟蹤,運行解碼程序,找到識別磁盤特殊標記的程序段,然后對其進行修改。所以,進行軟件加密的第三個基本任務是:必須采取一定的措施阻止解密者的動態跟蹤,使得在正常狀態下無法用DEBUG程序或其它調試程序對軟件本身進行跟蹤執行。 例如,對于上面的程序,我們可以在防拷貝和防靜態分析的基礎上再增加防動態跟蹤的技術。所用的防動態跟蹤技術是“封鎖鍵盤輸入” 。軟件安全技術4.l 軟件安全的基本要求 2A61:0018 E421 IN AL,21 ;讀中斷控制寄存器 2A61:001A 0C02 OR AL,02 ;封鎖鍵盤輸入

14、 2A61:001C E621 OUT 21,AL ;回送中斷控制字 2A61:001E 46 INC SI 2A61:001F E2EF LOOP 0010軟件安全技術4.l 軟件安全的基本要求程序在運行過程中會封鎖鍵盤的輸入,即當用戶想使用DEBUG的“T”命令和“G”命令進行跟蹤執行時,會出現機器不接受鍵盤輸入的現象,這是由于程序中CS:0018001DH之間的程序對鍵盤進行了封鎖。在沒有跟蹤的情況下,程序運行完CS:00100020之間的解碼程序以后,將CS:00210048之間的程序變換成明文,然后進行磁盤標記的識別和運行程序主體的工作,最后在返回之前將鍵盤開放。 即: 2A61:0

15、043 19DE SBB SI,BX 2A61:0045 4B DEC BX 2A61:0046 B332 MOV BL,32 2A61:0048 DE0A FIMUL WORD PTRBP十SI軟件安全技術4.2 軟件防拷貝技術 磁盤上做特殊標記,有硬標記、軟標記。4.2.1激光孔加密技術 激光方向性好、亮度高等特點,用激光在數據區或扇區標識符上燒若干個痕跡,使磁盤的某幾點失去磁性,在軟盤表面產生永久不可恢復的標志。由于激光孔很小,不仔細看不容易看見。軟盤在激光處理過的區域讀寫時,產生CRC校驗錯誤。而加密軟盤都有自己的識別程序,當判斷有CRC檢驗錯誤時,就認為此盤是原盤,然后執行被保護的用

16、戶程序;若沒有CRC校驗錯誤,則認為此盤是復制品,從而拒絕運行被保護的用戶程序,使拷貝工具無法使用,不能正常工作。軟件安全技術4.2 軟件防拷貝技術補充:MOV AH,19H;取磁盤驅動器編號放在AL中INT 21H ;0:A;1:B;2:CINT 13H AH=0;復位磁盤,磁盤校準的磁盤操作 AH=04;檢查磁盤扇區;產生錯誤則CF=1,錯誤信息在AH中。激光孔定位程序和激光孔指紋識別程序如書本80頁PROLOCK采取如下措施阻止解密者的分析和跟蹤:(1)密文處理 (2)反跟蹤:防止解密者的跟蹤分析,PROLOCK采用了多種防跟蹤措施。 破壞斷點中斷和單步中斷的向量 隱蔽轉移 多循環,多出

17、口 設置堆棧軟件安全技術4.2 軟件防拷貝技術4.2.2 電磁加密技術 借助于專用的電磁機構,在所需加密的磁盤上隨機生成一系列密鑰信息,以供被加密程序識別使用的一種加密技術。它主要采用了一種奇異的編碼格式將一些數據寫入磁盤,供磁盤上專門的密鑰識別程序鑒定。 4.2.3掩膜技術 采用半導體工藝中的鍍膜方法來制造標志,給磁盤某一磁道或某一扇區進行鍍膜。這種方法用膜來“遮掉”數據地址,使拷貝工具無法識別。即使原樣拷貝出復制品,在識別程序中,首先對被掩膜的磁盤扇區進行格式化,然后再判別該扇區是否讀寫正常。如果讀寫扇區正常,則認為此盤是非法復制品而拒絕該軟件運行,甚至使該軟件自行銷毀;否則,認為是原盤,

18、繼續運行該軟件。軟件安全技術4.3 軟標記加密法 4.3.1磁道軟加密法 有磁道接縫加密法、額外磁道加密法、寬磁道加密法、未格式化磁道加密法、磁道間距不規則變化加密法和螺線型磁道加密法等。1磁道接縫加密法 利用專門的技術制作特殊的磁道。這種特殊的磁道給復制工作造成了困難,甚至有些特殊磁道完全不能復制。此外,它還利用了磁道接縫信息及長度的隨機性。這種隨機性導致不同磁盤的磁道接縫信息不同,從而可達到防拷貝的目的。磁道后置區占據的長度是隨機變化的,其范圍在200300字節之間,且內容也隨機地變化。 軟件安全技術4.3 軟標記加密法所謂的磁道接縫軟指紋,就是指磁道的后置區,因而利用磁道接縫軟指紋進行加

19、密是完全可能的。 將不定長度的后置區取出以作為鑒別的依據,是磁道接縫軟指紋進行加密的關鍵。對于標準的磁道,讀取困難,除非用端口讀磁道命令來實現,而端口讀磁道命令又是十分繁瑣的。利用修改扇區 ID標志和軟盤基數表的辦法可以較容易地實現磁道后置區的讀取。修改扇區ID標志實際上是修改磁道上最后一個扇區的ID標志,因為磁道上最后一個扇區與后置區相連??紤]到后置區長度不到300字節,因而將磁道最后一個扇區ID標志中的 N改為 3即可。軟件安全技術4.3 軟標記加密法補充:INT 13H AH=5 格式化磁盤的單條磁道。AH,AL,CH,DH,DL與磁盤讀寫功能類似,CL低6位不用。BX:被格式化的地址字

20、段集合地址,四個字節組成。字節1:磁柱號;字節2:磁頭號;字節3:扇區號;字節4:每個扇區的字節數目,它有四種可能的數值:0:128字節;1:256字節;2:512字節;3:1024字節。(P86)2額外磁道加密法 一般磁盤機可以正常讀寫44個磁道。有些磁盤機甚至還可以多讀寫一些。可以設想,如果將一些關鍵數據放在內圈的磁道上,比如放在41道,由于標準的拷貝軟件只能拷貝 039道,因此可以起到軟盤防拷貝的目的。軟件安全技術 由于標準的格式化程序只能格式化出40個磁道,所以額外磁道的制作要由自己編制的匯編程序來實現。假設將A驅動器中磁盤的0面40道格式化成一個標準格式的磁道,具體操作如下: ADE

21、BUG AXXXX:100 MOV AX,0501 MOV BX,1000 MOV CX,2801 MOV DX,0 INT 13 JC 100 INT 3-E 1000 28 00 01 02 28 00 02 02 -E 1008 28 00 03 02 28 00 04 02-E 1010 28 00 05 02 28 00 06 02-E 1018 28 00 07 02 28 00 08 02-E 1020 28 00 09 02-G=100軟件安全技術4.3 軟標記加密法3寬磁道加密法 給磁盤驅動器配以寬磁頭,使之能夠同時在兩個或多個磁道上讀寫信息。例如,配以寬磁頭的磁盤驅動器可以

22、在兩個相鄰的磁道以及磁道之間的間隙同時寫下完全相同的信息而制成一個寬磁道。如果讀該磁盤的一段程序能夠使磁盤驅動器的讀寫磁頭在寫有相同信息的兩個磁道之間(物理上實際是一個寬“磁道”)來回步進,那么讀出的數據流也不會是中斷的,即可以將寬磁道上的數據完整讀出。但在復制磁盤時,普通磁頭則無法復制這樣的寬磁道。由于讀寫磁頭兩側的抹磁頭的抹除作用,在復制盤中必然將這個寬磁道物理上分開,成為兩個普通磁道,在這兩個磁道間存在物理間隙(即在間隙中沒有任何信息),而磁頭步進地讀取這兩道的信息,必然導致讀出信息的不連續,從而就可以達到防拷貝的目的。 軟件安全技術4.3 軟標記加密法4未格式化磁道加密法 在格式化磁盤

23、時,跳過某個或某些磁道,造成一個或多個未格式化的空白磁道,使被加密程序在系統下能正常工作,而傳統的拷貝軟件則無法正常拷貝。 使用被加密程序時,先用在被加密程序中的一段特殊程序對磁盤進行檢查,如果發現某一(或某些)特定的磁道為未格式化磁道,則此盤為原盤,否則為非法拷貝盤。 5磁道間距不規則變化加密法 磁道間距不規則變化技術的原理就是利用軟件來控制步進電機,使得磁頭在磁盤上產生不規則的磁道間距,使傳統拷貝軟件無法復制(傳統的拷貝工具是利用程序控制步進電機,使磁盤驅動器的讀寫磁頭在磁道間距相等的磁道上來回移動而完成其復制工作的)。軟件安全技術4.3 軟標記加密法6螺線型磁道加密法 螺線型磁道技術的原

24、理是在磁盤上制作一些螺線型磁道,致使磁頭在進行讀寫操作時仍在步進,即磁頭步進與讀寫數據同時進行。這樣就完全打亂了傳統 的拷貝工具的復制過程,使經過這種方法加密的磁盤無法被拷貝,達到加密的目的。 4.3.2其它軟加密法 1利用錯誤CRC碼加密 2磁道噪聲法 3雙機加密法 4卷標加密法 5弱位加密法 6ID ROM加密法 7利用加密器進行加密 軟件安全技術4.4扇段軟標記加密法 扇段軟標記加密方法很多,如扇區間隙加密法、扇區軟指紋加密法、異常 ID加密法、額外扇段加密法、超級扇段加密法、扇區錯亂排序法、未格式化扇區法和扇段對齊技術法等。4.4.1扇區軟指紋加密法 扇區間隙軟指紋加密方法為:磁盤格式

25、化以后,在某一磁道上的第一個扇區后的某個扇區寫上需要重寫的信息,如被加密程序的數據或軟件的一部分,然后再從該扇區的前一個扇區讀該扇區的內容,并利用該扇區讀出的信息去加密要保護的軟件。由于從前一段扇區讀出該扇區內容時,該扇區的GAP2一起被讀人,所以從該扇區讀出的內容將受GAP2長度的影響。再利用這些受GAP2影響的CRC碼去加密用戶程序,其方法和途徑可以靈活多樣。 軟件安全技術4.4扇段軟標記加密法按扇區間隙軟件指紋加密的一個實例(設被處理的扇區為第40道0面1扇區)。 (1)對第 40道(可以選擇任意一道)進行特殊格式化(只格式化 0面),使第二扇區中從第一扇區開始,讀該重寫扇區數據時,所讀

26、的內容與重寫前是不同的。 GAP2 SYNC AM2 Old Data(512字節) CRC GAP2 SYNC AM2 New data(512字節) CRC同一磁道的同一扇區新數據寫入后Data Field of a Sector扇 區 軟指 紋 信息圖4-12 軟指紋的形成軟件安全技術(2)讀第 40道 0面3扇區,讀之前修改軟盤基數表中的N值,使N=4,這樣就可以把第40道0面2扇區的全部內容讀出,而不是僅讀出數據域的內容。 (3)經這樣處理后的軟盤,第40道0面上的9個扇區就不能被許多拷貝軟件所復制。4.4.2異常ID加密法 通常采用異常ID參數的方法如下:()使扇區長度不等于 51

27、2字節。例如,早期版本的 CCDOS字庫盤上,其格式為每道4扇區,每扇區1024字節。軟件安全技術4.4扇段軟標記加密法()改變磁盤上扇區的排列順序。例如,可將磁道中扇區格式化成按相反的順序或交錯排列的順序。()使扇區號取標準格式的取值范圍(l9)以外的值。()使磁道的邏輯地址與其物理編號不相符。()使磁頭的邏輯編號與其物理編號不相符。由于格式化所需的ID參數是由指針ES:BX指定的地址,以磁道號T、磁頭號H、扇區號S和扇區長度N四個字節為一組依次排列的,因此只要改變這些參數的順序,就能格式化出特殊的磁道。 軟件安全技術4.4扇段軟標記加密法4.4.3 額外扇段加密法 在邏輯結構上,一個磁道包

28、含若干個扇區以及前置區和后置區(GAP4)。前置區和后置區都是為了穩定電機或允許電機轉速稍有偏差而設的。前置區的長度是固定的,為32字節;后置區的長度則是可變的,依電機轉速的不同而不同,一般有數百字節左右。 在FM制下,每個扇區中不僅包含數據區(512字節),還包含同步電機用的兩個6字節的SYNC字符序列、4個字節的ID地址標志、1個字節的 AM1、1個字節的數據標志或刪除數據標志、兩個2字節的 CRC(ID域的CRC和數據區的CRC)、一個11字節的間隙(GAP2)和一個42字節的間隙(GAP3)。因此,一個標準的扇區包括數據和一些必需的標志、間隙,共有512+12+4+2+4+11+42=

29、587字節。 軟件安全技術下面的匯編程序給出了額外扇區磁道的產生過程 CDEBUG-E 0000:0522;修改磁盤基數表0000:0522 DF 02,25,02,09,0A,2A0000:0528 FF 50,0A-A 100;格式化軟盤第16道0面程序0FA0:0100 MOV AX,05010FA0:0103 MOV BX,10000FA0:0106 MOV CX,10010FA0:0109 MOV DX,00000FA0:010C INT 130FA0:010E INT 30FA0:010F4.4扇段軟標記加密法軟件安全技術-E 1000 ;設置格式化時所需參數0FA0:1000 0

30、0.10 00.00 00.01 00.02 00.10 00.00 00.02 00.020FA0:1008 00.10 00.00 00.03 00.02 00.10 00.00 00.04 00.020FA0:1010 00.10 00.00 00.05 00.02 00.10 00.00 00.06 00.020FA0:1018 00.10 00.00 00.07 00.02 00.10 00.00 00.08 00.020FA0:1020 00.10 00.00 00.09 00.02 00.10 00.00 00.0A 00.02-G=100 ;執行格式化程序AX=0000 BX=

31、1000 CX=1001 DX=0000 SP=FFEE BP=0000 SI = 0000 DI=0000SS0FA0 ES=0FA0 SS=0FA0 CS=0FA0 IP=010E NV UP EI NG NZ AC PE NC0FA0:0F0E CC INT 3-E 0000:0522 ;恢復磁盤基數表 0000:0522 DF02,25,02,0A,09,2A 0000:0528 FF0A,504.4扇段軟標記加密法軟件安全技術下面給出讀取磁道額外扇區的程序及其執行結果:CDEBUG ;進入DEBUG-E 0000:0525 ;修改磁盤基數表0000:0528 02,09,0A,2A0

32、000:0528 FF,50,0A-A 100 ;讀16道0面第10扇區程序0FA0:0100 MOV AX,02010FA0:0103 MOV BX,10000FA0:0106 MOV CX,100A0FA0:0109 MOV DX,00000FA0:010C INT 130FA0:010E INT 30FA0:010F4.4扇段軟標記加密法軟件安全技術4.4扇段軟標記加密法4.4.4 超級扇段加密法 由于磁盤機本身電路的原因,磁盤機對讀出的要求較低,往往對大扇區能正確讀出,但要復制大扇區一般是做不到的。根據這個原理,Softguard系統公司研制了超級扇段技術來實現磁盤防拷貝。超級扇段技術

33、也稱連續寫技術,它使用專用設備在軟盤上寫上一些超長的扇區,這些扇區的長度接近一個磁道的長度(如N=5時,每扇區字節數為4096字節)。普通的磁盤控制器不能寫這些扇區,但在程序控制下可以成功地讀出這些扇區(磁盤機甚至可以正確讀出N=6的扇區)。 超級扇段技術可以作為一種防拷貝加密技術單獨使用,也可以同其他技術結合起來使用,如扇區接縫指紋技術和磁道接縫指紋技術中可以使用超級扇段技術。 軟件安全技術4.4扇段軟標記加密法下面的程序給出了讀取超級扇段的操作過程(這里,超級扇段容量為4096字節,即N=5,其所在磁道為0面39道):CDEBUG;進入DEBUGE 0000:0525 ;修改磁盤基數表00

34、00:0525 02.05 09.01一A 100 ;讀39道0面第1扇區程序0FA0:0100 MOV AX,02010FA0:0103 MOV BX,10000FA0:0106 MOV CX,27010FA0:0109 MOV DX,00000FA0:010C INT 130FA0:010E INT 30FA0:010F軟件安全技術一G=100 ;執行讀程序AX=0000 BX=1000 CX=0901 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0FA0 ES=0FA0 SS=0FA0 CS=0FA0 IP=010E NV UP EI NG NZ

35、AC PE NC0FA0:010E CC INT 3 一E 0000:0252 ;恢復磁盤基數表0000:0525 05.02 01.09Q 4.4扇段軟標記加密法軟件安全技術4.4扇段軟標記加密法4.4.5 磁道扇區亂序排列加密法 目前所用的磁盤都是用軟分段的方法規劃(格式化)出來的。所謂軟分段就是用扇區識別標志來存取磁盤上的信息,整個磁盤只有一索引孔。這種磁盤的每個磁道上分布著固定數目的扇區,每個扇區的開始部分是扇區識別標志。一條磁道上的扇區從小到大按序排列,讀寫磁盤扇區時,根據磁頭號、磁道號和扇區號來決定讀寫磁盤上的哪一個扇區。每個扇區由標識域、數據域和兩個間隙域四個部分構成。標識域指示

36、該扇區所在的磁道號、磁頭號和扇區號以及扇區中數據域的大小。軟件安全技術4.4扇段軟標記加密法一般地,正常格式化出來的磁盤,標識域中所指示某扇區的磁道號、磁頭號和扇區號與該扇區的實際位置相一致。讀寫磁盤時,根據請求參數(磁道號、磁頭號和扇區號)來轉動盤片和移動磁頭,并且將讀出的標識域與請求參數相比較。如果一致,則目標找到并進行讀寫操作;如果不一致,則還要轉動盤片直到一致為止。 磁道扇區亂序排列法就是打亂磁道扇區的正常排列,改變由小到大的次序,由大到小排列,或用大數排列、跳躍排列次序排列,等等。為加密而改變磁盤扇區的排列,只要選擇一道或幾道就行了,完全沒有必要改變所有磁道的扇區排列。軟件安全技術4

37、.4扇段軟標記加密法 4.4.6 未格式化扇區加密法 軟盤格式化處理后才能存儲信息,未格式化的磁盤是無法使用的。未格式化扇區的加密原理就是利用這個特點,在格式化軟盤時,對某一磁道的部分扇區不做格式化處理。這樣,被加密程序運行時,首先利用被加密程序中的一程序段對某一特定磁道進行檢查。如果發現此磁道為一正常磁道(即沒有未格式化扇區),那么此盤必定為復制盤,否則為原盤。若是原盤則正常執行,否則作異常處理。軟件安全技術4.4扇段軟標記加密法GSH_BUF DB 27H,00,01,02 ;格式化時所需的標識字段 DB 27H,00,02,02 ; 集合 DB 27H,00,03,02 DB 27H,0

38、0,04,02 DB 27H,00,05,02 DB 27H,00,06,02 DB 27H,00,07,02 PUSH ESMOV AH,35H ;取磁盤基數表指針MOV AL,1EHINT 21HMOV AL,07H ;修改磁盤基數表中每道的扇區數ADD BX,04HMOV ES:BX,ALPOP ES軟件安全技術4.4扇段軟標記加密法MOV DL,0 ;將39磁道特殊格式化為有未格式化的扇區MOV DH,0MOV CH,27HMOV BX,OFFSET GSH_BUF ;該磁道僅有7個扇區MOV AH,05INT 13HPUSH ESMOV AH,35HMOV AL,1EHINT 21H

39、MOV AL,09H ;恢復磁道基數表原值ADD BX,04HMOV ES:BX,ALPOP ES軟件安全技術4.4扇段軟標記加密法在被加密程序中可以安排一段專門程序,用來檢查磁盤是否為原盤。具體做法是:檢查磁盤的39道上扇區數是否大于7。若大于7,則此盤為拷貝盤;否則,為原盤。 MOV AX,SEG MY_BUF ;ES:BX為用戶緩沖區地址 MOV ES,AX MOV BX,OFFSET MY_BUF MOV AL,0lH ;讀一個扇區 MOV DL,00H ; A驅動器 MOV DH,00H ;0磁頭 MOV CH,27H ;39磁道 MOV CL,08H ;第8扇區 MOV AH,02

40、H ;讀盤 INT 13H ;轉 BIOS CMP AX,0400 ;申請扇區找到否 JNZ ILLEGL_DISKERR ;找到轉非法盤處理子程序 軟件安全技術4.4扇段軟標記加密法4.4.7 扇段對齊加密法 扇段對齊技術是一種十分有效的磁盤軟加密方法。但是由于要精確依靠磁盤的轉動速度來判斷扇段對齊,而磁盤的轉動速度實際上時時刻刻都不相同,因而這種加密技術實施難度大,也較難得到高可靠性。因此,在實際應用中,扇段對齊技術的使用并不多見。 軟件安全技術4.5 口令加密與限制技術 4.5.1口令加密技術 比如一個利用系統的功能調用07H來接收鍵盤輸入的口令加密示范程序。以回車鍵(0DH)作為結束符

41、。口令字輸入后與程序中事先安排好的規定值進行比較。若一致,則顯示:“OK PASS”,然后運行程序;否則,提示用戶重新輸入口令字。口令字最多三次,三次輸入若均不正確,則屏幕上顯示:“非法用戶,對不起!”,然后返回DOS,同時以聲音報警:笛!笛!笛! 該程序比較簡單,容易被破譯。實際應用時采用個加密算法事先將口令字作為密鑰對主要程序段進行加密變換,在程序的開頭接收鍵盤輸入的口令字作為密鑰對文件中的密碼進行解密。這樣,如果非法用戶輸入的口令不正確,程序根本無法運行,而對于解密來說,也是相當困難的。 軟件安全技術4.5 口令加密與限制技術4.5.2 限制技術限制技術1設置軟件使用期限許多軟件加密人員

42、為了保護自己的軟件產品,或者為了控制軟件的使用周期,往往在對軟件加密過程中規定了軟件的使用期限。被加密的軟件在每次運行過程中,首先通過一段程序檢測軟件使用期限是否已經到期。如果沒有到期,則使軟件正常運行;否則,提示用戶軟件使用已經到期,請用戶到軟件研制單位進行版本更新換代,并中止軟件的運行,甚至從磁盤上刪除當前軟件。 軟件安全技術4.5 口令加密與限制技術設置軟件使用期限的方法,一般是利用DOS的系統功能調用2AH子功能。該子功能是獲取系統日期的系統功能調用,其調用方法如下:入口參數:AH=2AH出口參數:CX=年(1980至2099)DH=月(1= 一月,2=二月,12=十二月)DL=日(1

43、至 31)AL=星期幾(0=星期日,1=星期一,6=星期六)注意:上述的出口參數都以二進制形式存放在相應的寄存器中。 軟件安全技術下面的一段程序所完成的功能是:檢測當前日期是否超過1992年3月26日。如果未到該日期,則使軟件正常工作;否則使軟件轉入死機。程序如下:MOV AH,2AHINT 21H CMP CX,1992JB OKPASS JA ERR CMP DH,3 JB OKPASS JA ERR CMP DH,26 JB OKPASS ERR: PUSH CS POP DSMOV DX,OFFSER MSG MOV AH,9INT 21HRETRY :CLIHLT JMP RETRY

44、MSG DB ODH,OAH,09OKPASS: 上述程序段在檢測到軟件使用期限已經到期的情況下,首先顯示提示信息警告用戶,然后使程序轉入死機狀態。而有的軟件在到期的情況下,則使用系統功能調用41H來將軟件自身從磁盤上刪除。41H子功能調用方法如下:軟件安全技術4.5 口令加密與限制技術入口參數:AH41H DS:DX帶路徑的文件名出口參數:CF0 刪除成功CFl 刪除不成功,AX返回出錯碼(2一未找到路徑;5一拒絕存?。├?,下面的程序片段完成刪除文件C:MYPROGEXE和返回 DOS的功能:PUSH CSPOP DSMOV AH, 41HMOV DX,OFFSET WJM;刪除文件C:M

45、YPROGEXEINT 21HMOV AX,4CFFH;帶錯誤碼FFH返回DOSINT 21HWJM DB C:MYPROGEXE軟件安全技術4.5 口令加密與限制技術2限制軟件的運行次數限制軟件的運行次數是軟件加密中的一種常用的方法。其基本思想是:利用安裝程序將一個被加密的軟件拷貝到硬盤中,并將一個規定的運行次數寫入被加密的軟件中。對于被加密的軟件來說,在每次運行過程中,都要將運行次數單元內容減1,當某一次運行結果中運行次數減為0時,該加密軟件從此便不能運行,或拒絕運行,或將自身從磁盤上刪除掉,然后要求用戶利用安裝盤重新安裝。單獨使用這種方法的加密軟件有一種缺陷,那就是如果被加密的軟件不具有

46、防拷貝功能,則非法拷貝者可以將該軟件拷貝到自己的磁盤上。只要運行次數不為0,它就一直執行到運行次數為0為止。軟件安全技術4.5 口令加密與限制技術為了阻止拷貝,可將運行次數單元設置在主引導扇區中。如果是合法用戶,安裝程序便將規定的運行次數寫入主引導扇區相應的單元中,被加密軟件每一次運行時讀取這一單元的內容并進行減1操作,然后判斷運行次數是否為0,從而決定程序是否執行。對于這種將運行次數寫入硬盤主引導扇區的方法,如果非法復制者只將軟件本身拷貝到自己的磁盤上,而沒有將他自己硬盤中主引導扇區的運行次數單元的內容進行相應的設置,被拷貝的程序就不能正常運行。更進一步,為了防止非法用戶識別出主引導扇區的運

47、行次數,可以將運行次數單元的內容經過加密變換以后,以密碼的形式存放。加密密鑰可以使用被加密軟件自身的首簇號,這樣基本可以做到一次一密,使得解密者想通過走捷徑(不分析加密程序,而想仿造運行次數)的方法來破譯這一軟件是非常困難的. 軟件安全技術4.6硬盤防拷貝技術 常由出售給用戶的商品軟件和硬盤加密安裝系統軟件組成。這兩個軟件都通過軟盤方式售給用戶,其中被出售的商品軟件是經過加密處理的。硬盤加密技術實際上是給硬盤加鎖,加鎖的硬盤只有用密鑰開鎖后才能使用。密鑰有兩種形式:一種是口令形式,密鑰由授權用戶掌握;另一種是密鑰盤形式,密鑰盤掌握在授權用戶手中。加密硬盤只對授權用戶開放,而對非授權用戶關閉,既

48、阻止了非法用戶對硬盤的使用,又不影響合法用戶的使用,從而有效地保護了硬盤上信息的安全。硬盤加密技術主要采用以下幾種方法:主引導扇區設置密碼防拷貝;利用文件首簇號防拷貝;硬盤消隱與還原技術。 軟件安全技術4.6硬盤防拷貝技術4.6.l 主引導扇區設置密碼防拷貝硬盤的主引導扇區中存放主引導程序和硬盤分區表的信息。通常引導程序占用的偏移地址000000DFH,而硬盤分區表則從偏移地址01BEH開始存放,在引導程序和硬盤分區表之間大約有206個字節空間是空白區。硬盤安裝程序的主要功能有兩個:一是在硬盤上設置密碼標志;二是將被加密的軟件由軟盤安裝到硬盤上(一般是在硬盤上建立一個子目錄,將被加密軟件的標志

49、存放在此子目錄中)。被安裝的軟件,一般在出售給用戶之前已進行了防動態跟蹤和防靜態分析的加密處理,并具有識別硬盤主引導扇區中存放的密碼功能。下面給出其密碼設置程序和密碼識別程序。軟件安全技術1密碼設置程序密碼設置程序屬于安裝程序的一部分,可以使用如下的一段程序:BUF:DB 512 DUP(0);讀盤緩沖區PUSH CSPOP DSPUSH CSPOP ES ;CSDSESMOV BX,OFFSET BUTMOV CX,lMOV DX,0080HMOV AX,0201H ;讀硬盤主引導扇區到BUFINT 13HMOV BX,OFFSET BUFMOV AX,7E7EHMOV BX十00E0H,A

50、X ;密碼7E7EH到主引導扇區00E0H單元MOV BX,OFFSET BUFMOV CX,lMOV DX, 0080HMOV AX,0301H;將設置密碼的主引導扇區寫回硬盤INT 13H軟件安全技術2密碼識別程序密碼識別程序屬于被加密軟件程序的部分,可用如下一段程序進行主引導區約定偏移地址處密碼的識別操作:BUF DB 512 DUP(0);讀盤緩沖區PUSH CSPOP DSPUSH CSPOP ES ;CSDSESMOV BX, OFFSET BUFMOV CX,lMOV DX,0080HMOV AX,0201H ;讀硬盤主引導扇區INT 13H MOV BX,OFFSET BUFM

51、OV AX,7E7EHCMP BX00E0H,AXJZ OK_PASS ;有密碼,則轉OK_PASS正常進行RETRY:CLIHLT ;無密碼,死機JMP RETRYOK_PASS: 軟件安全技術4.6硬盤防拷貝技術4.6.2 利用文件首簇號防拷貝 不同類型硬盤的柱面數、磁頭數、每個柱面上的扇區數都是不盡相同的,對于同一個文件來說,拷到兩個硬盤上,其首簇號一般是不相同的。即使同一類型的硬盤,磁盤空間的使用狀況也不盡相同。 1文件首簇號的獲取與安裝 文件首簇號的獲取與安裝操作由安裝程序來完成。安裝程序的主要工作是:將被加密的軟件拷貝到硬盤根目錄或某一子目錄下,讀取該軟件的首簇號,以明文或密文的形

52、式寫入被加密軟件規定的地方。對于DOS3.3(含3.3)以上的版本來說,文件首簇號保存在FCB第28、29字節中,而對于DOS3.3以下的版本來說,文件首簇號則在FCB的第26、27字節中。 軟件安全技術下面的一段程序就是安裝軟件中用于獲取被加密軟件首簇號的程序片段:MSG DB 0DH,0AH,FILE OPEN ERROR!FCBI DB 0FFH,0,0,0,0,0,20,0,PROTECTI.EXE,25 DUP(0) MOV DX,OFFSET FCBIMOV AL,0FH INT 21HCMP AL,0JNZ ERR MOV AH,30HINT 21H CMP AL,3JB NEX

53、TMOV SI,OFFSET FCBIMOV AX,SI28 JMP GOONERR: MOV DX,OFFSET MSGMOV AH,9 INT 2 IHMOV AX,4CFFH INT 21HNEXT: MOV AX,SI26 GOON:軟件安全技術4.6硬盤防拷貝技術2文件首簇號的識別文件首簇號的識別操作常由被加密程序自己來完成。另外也有用系統功能調用來獲取文件首簇號的方法,在傳統的文件管理系統功能調用中,11H和12H號功能調用分別是搜索第一個匹配文件和下一個匹配文件的功能調用。直接使用它們其中之一,也可以方便地獲取文件目錄登記項的全部32個字節內容,當然也包含了文件首簇號。程序片段如

54、下:MOV DX,OFFSET FCBIMOV AH,11HINT 21H軟件安全技術4.6硬盤防拷貝技術4.6.3 磁盤的消隱與還原 1硬盤消隱技術一種使硬盤從邏輯上消失,在邏輯上不存在的硬盤,在物理上始終是存在的。使硬盤消隱實際上是使系統不能識別物理上存在的硬盤,使得針對硬盤的文件存取操作不能進行,從而達到保護硬盤上信息的目的。通常把使硬盤消隱的操作稱為硬盤加鎖(密)操作。實現硬盤消隱有以下幾種方法:( 1)改變系統設置法 ( 2)修改分區表系統指示字節法 (3)搬移分區表法 軟件安全技術4.6硬盤防拷貝技術2硬盤還原技術授權用戶運行解鎖軟件還原硬盤有兩種形式:一種是還原后的硬盤在再次加鎖

55、前處于開鎖狀態,任何用戶都可以正常使用硬盤,因而授權用戶上完機后需再次加鎖才能阻止非授權用戶對硬盤的訪問;另一種形式是還原后的硬盤只在再次啟動前處于開鎖狀態,一旦關機或重新啟動機器,硬盤使自動處于關鎖狀態。這是通過用密鑰系統盤啟動機器實現的,該密鑰系統盤由授權用戶掌握。不用該密鑰系統盤啟動機器,硬盤不能被使用。硬盤還原的手段不是恢復系統設置表中的硬盤設置就是恢復主引導記錄中的分區表。 軟件安全技術4.6硬盤防拷貝技術4.6.4 硬盤加密、解密實例密鑰系統盤的實例。密鑰系統盤的關鍵在于引導記錄,它是采用搬移硬盤分區表實現加鎖,采用恢復硬盤分區表實現解鎖的。當用例中所給出的密鑰系統盤啟動機器時,第

56、一次不能寫保護,以后則可以。用它啟動機器,則硬盤可用,不用它啟動則硬盤不可用。軟件安全技術4.7 防動態跟蹤技術 4.7.l 跟蹤的工具及其實現 1跟蹤軟件調試軟件是破譯者的“天然”跟蹤工具,能對程序實現指令級跟蹤,DEBUG可以跟蹤DOS認可的任意小的可執行文件。T:單步跟蹤命令。使用該命令可嚴格按指令級進行跟蹤,即該命令不把INT n、CALL n等語句作為一條指令,而是進入這些語句相應的子程序中進行逐條指令跟蹤。P:按匯編語句跟蹤。與 T命令不同的是,該命令把諸如 INT n、CALL n等語句作為一條指令對待,而不像T語句那樣跟蹤到這些語句相對應的子程序中,執行子程序中的每條命令。軟件

57、安全技術4.7 防動態跟蹤技術 G:運行命令。該命令使得用戶可以從程序的任一地方開始執行,并最多可以設置d個中斷點,顯示每個中斷點處指令的運行結果。加密中的防跟蹤處理,就是要阻止解密者利用這些跟蹤(調試)工具對被加密的文件進行有效跟蹤,使跟蹤者落入加密者設置的“陷階”或進入“死胡同”。2跟蹤的過程單步中斷和斷點中斷。單步中斷是由機器內部狀態引起的一種中斷。斷點中斷是一種軟中斷,軟中斷又稱為自陷指令。當CPU執行到編制在程序中的這條自陷指令時,就進入斷點中斷服務程序。由于斷點中斷服務程序完成對斷點處各寄存器內容的顯示,單步中斷和斷點中斷的配合使得調試軟件可以實現對程序運行的跟蹤。 軟件安全技術4

58、.7 防動態跟蹤技術4.7.2 防動態跟蹤的方法防動態跟蹤的目的是阻止破譯者進行有效跟蹤。實現這個目的的方法有兩個途徑:第一個途徑是破壞跟蹤,使破譯者跟蹤不了幾步就死機或機器自啟動;第二個途徑是利用反窮舉法,使跟蹤者在“耗盡精力”之前不能進行實質性跟蹤。這兩個途徑的防跟蹤都要與密文相配合,否則就不能阻止破譯者識破“機關”,實現解密。軟件安全技術4.7 防動態跟蹤技術1修改中斷向量法就是用新值來代替中斷向量的舊值。這個新值可以是被加密程序中某一程序的入口,也可以是一個隨機數。前者可以使跟蹤者誤入加密者設置的“陷阱”中,后者可使機器進入死循環或出現其它異?,F象而死機。所有跟蹤軟件都利用了單步中斷和

59、斷點中斷。這兩個中斷的中斷服務程序的入口(中斷向量)分別被放在內存0:00040007H和0:000C000FH中。修改這兩個中斷的中斷向量,就可以破壞跟蹤或使跟蹤誤入“歧途”。 軟件安全技術4.7 防動態跟蹤技術(1)破壞中斷向量:由于DEBUG程序在跟蹤程序時,需要使用INT1和INT3中斷向量,所以只需破壞這兩個中斷向量,即可阻止DEBUG程序的正常運行,從而喪失其跟蹤其它程序的能力。 (2)破壞更多的中斷向量:有時,為了加強防跟蹤措施,可以破壞更多的中斷向量。 (3)將數據放入中斷向量地址 (4)使中斷向量指向一個子程序 軟件安全技術4.7 防動態跟蹤技術2改變堆棧指針法(1)將堆棧設在ROM區:破譯者用DEBUG進行跟蹤時,DEBUG程序需要在當前堆棧段中存放其運行時的一些重要數據。如果在軟件運行時,自身不需要進行堆棧操作就可以將堆棧段設置在內存ROM區,這時則不能保存斷點,也就無法返回到斷點,從而造成死機使跟蹤無法進行下去。巧妙地使用這種方法,可以達到令人滿意的效果。(2)將堆棧設在程序區:將堆棧設在程序區中,由于堆棧操作會破壞程序代碼,從而使程序不能運行,間接地阻止了破譯者的動態跟蹤。(3)不斷變更堆棧指針:在加密軟件中,為了阻止解密者的單步跟蹤,可以不斷地變更堆棧指針。軟件安全技術4.7 防動態跟蹤技術3封鎖鍵盤輸人法DEBUG的各種命令都是通過鍵盤輸

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論