版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.l 軟件安全的基本要求 主要目的:一是禁止非法拷貝和使用;二是防止非法閱讀和修改。其技術(shù)措施應(yīng)實(shí)現(xiàn)三個(gè)基本任務(wù):防拷貝、防靜態(tài)分析和防動(dòng)態(tài)跟蹤 。4.1.1防拷貝 指的是通過采取某種加密措施,使得一般用戶利用正常的拷貝命令,甚至于各種拷貝軟件都無法將軟件進(jìn)行完整的復(fù)制,或者是復(fù)制到的軟件不能正常運(yùn)行。防拷貝技術(shù)是軟件加密的核心技術(shù) ,利用專用技術(shù)制造一種特殊標(biāo)記,正常的拷貝途徑無法復(fù)制這種特殊標(biāo)記,或者是拷貝到的特殊標(biāo)記不完整。特殊標(biāo)記:軟標(biāo)記,硬標(biāo)記計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.l 軟件安全的基本要求拷貝盤母盤制造的特殊標(biāo)記特殊標(biāo)記的不完全拷貝圖41 加密母盤的
2、不完全拷貝示意圖圖42 防拷貝軟件的一般結(jié)構(gòu)開 始讀磁盤特殊標(biāo)記有標(biāo)記嗎?正常運(yùn)行結(jié) 束拒絕運(yùn)行NY計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.l 軟件安全的基本要求一個(gè)簡單的手工作業(yè)方法制作硬標(biāo)記:準(zhǔn)備一根針,在酒精燈上將針尖部分燒紅,然后在磁盤上選擇某一位置,將燒紅的針尖靠近磁介質(zhì)表面停留片刻注意不要接觸磁介質(zhì)表面);當(dāng)拿開針尖以后,磁盤介質(zhì)的這一部分就有一個(gè)小小的痕跡因受熱而發(fā)生變化,不能記錄信息,被損壞的扇區(qū)如果用INT13H讀寫數(shù)據(jù)時(shí),會發(fā)生10HCRC錯(cuò)。這樣,我們即制作了一個(gè)磁盤標(biāo)記。 在被加密程序中編寫一段程序來識別這一標(biāo)記,因此必須知道被損壞的扇區(qū)所在的磁道和扇區(qū)號。 計(jì)算機(jī)安全技術(shù)軟件安
3、全技術(shù)補(bǔ)充:BIOS INT 13H 磁盤I/OAH功能調(diào)用00H復(fù)位磁盤01H取磁盤狀態(tài)02H讀扇區(qū)03H寫扇區(qū)04H檢測扇區(qū)功能調(diào)用02H入口參數(shù):AH= 02HAL:置要讀的扇區(qū)數(shù)目DL :進(jìn)行讀操作的驅(qū)動(dòng)器代碼。數(shù)碼0和1用于識別軟盤,數(shù)碼80H和81H識別硬盤。DH:所讀磁盤磁頭號。CH:識別10位磁道柱面號的低8位數(shù)。CL:低6位放入所讀的起始扇區(qū)號。高2位存放磁道柱面號的高2位。ES:BX:緩沖區(qū)地址。出口參數(shù):錯(cuò)誤則CF=1,錯(cuò)誤信息放在AH中,否則CF=0,AL=0。AH中錯(cuò)誤狀態(tài):00H未出錯(cuò);01H非法功能調(diào)用;03H對寫保護(hù)的磁盤執(zhí)行寫操作;10H讀磁盤時(shí)循環(huán)校驗(yàn)碼(C
4、RC)奇偶校驗(yàn)錯(cuò)。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.l 軟件安全的基本要求知道被燒壞的扇區(qū)為1面 10磁道的第4扇區(qū),因此就可以在程序中寫上下面一段識別母盤的程序片段:RETRY:MOV AX,0201 ;讀一個(gè)扇區(qū) MOV BX,OFFSET HCQ1 MOV CX,0A04H ;讀10磁道的第4扇區(qū) MOV DX,0100 ;A驅(qū)動(dòng)器的1面 INT 13H JB OK_PASS ;讀扇區(qū)出錯(cuò),轉(zhuǎn)OK_PASS JMP RETRY ;是非法復(fù)制盤,重復(fù)讀盤OKPASS:CMP AH,10H ;CRC錯(cuò)受熱損壞的結(jié)果嗎? JNZ RETRY ;不是,重復(fù)讀盤 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)假定被加密程
5、序是顯示字符串“How are you!”. STACK SEGMENT PARA STACK STACK DB 128 DUP0) 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 E
6、ND START 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)上述程序采取防拷貝的措施,是將識別母盤的程序片段寫入到程序中,修改后的程序如下: START SEGMENT PARA STACKSTACK DB 128DUP0) STACK ENDS DATA SEGMENT MSG1 DB 0DH,0AH,“How are you!” HCQ1 DB 512 DUP0) ;設(shè)置磁盤緩沖區(qū) DATA ENDS CODE SEGMENT ASSUME CS:CODE,ES:DATA,DS:DATA START: PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX 計(jì)算機(jī)安全技術(shù)軟件安全
7、技術(shù); 以下識別母盤 RETRY: MOV AX,0201H MOV BX,OFFSET HCQ1 MOV CX,0A04H MOV DX,0100H INT 13H JB OK _PASS ;讀扇區(qū)出錯(cuò),轉(zhuǎn)OK_PASS JMP RETRY ;是非法復(fù)制盤,重復(fù)讀盤 OK_PASS: CMP AH,10H JNZ RETRY ;不是原盤,轉(zhuǎn)RETRY MOV DX,OFFSET MSG1 ;是原盤,正常運(yùn)行 MOV AH,9 INT 21H MOV AH,4CH INT 21H START: ENDP CODE ENDS END START計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.l 軟件安全的基本要求
8、4.1.2防靜態(tài)分析 破譯者可以閱讀到防拷貝的這一段程序。然后進(jìn)行修改,使得被加密的軟件在運(yùn)行時(shí)不進(jìn)行特殊標(biāo)記的識別而無條件地正常執(zhí)行,使得防拷貝的功能失去作用。例如,對于上述的加密程序,解密者可用DEBUG的反匯編命令看到如下的程序指令代碼(P74):為了解密,可在讀盤操作以后,將 1E53:0015處的指令改為無條件轉(zhuǎn)移指令: JMP 001E這樣,該程序在運(yùn)行時(shí),不論讀沒讀到磁盤標(biāo)記,都會正常地運(yùn)行。進(jìn)一步地,還可以將1E53:0007處的指令改為: JMP 001E這樣,該程序在運(yùn)行時(shí)甚至連讀盤都不進(jìn)行,就可以正常運(yùn)行。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù) U 0 27 1E53:0000 B8
9、32lE MOV AX,1E32 1E53:0003 8ED8 MOV DS,AX 1E53:0005 8EC0 MOV ES,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 00
10、07 1E53:001E BA0000 MOV DX,0000 1E53:0021 B409 MOV AH,09 1E53:0023 CD21 INT 21 1E53:0025 B44C MOV AH,4C 1E53:0027 CD21 INT 21 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.l 軟件安全的基本要求防止靜態(tài)閱讀和分析主要方法:將識別磁盤特殊標(biāo)記的程序放在比較隱蔽的地方,或者是對該段程序進(jìn)行加密變換,以密文的形式放在軟件中。但被加密以后的程序不能被執(zhí)行,要求在被加密的程序片段之前利用另外一段解碼程序,使其變換成明文,然后再運(yùn)行該段程序進(jìn)行磁盤特殊標(biāo)記的識別。經(jīng)過這樣處理以后的軟件,不運(yùn)行解碼
11、程序,用 DEBUG的“U命令反匯編出來的密文對破譯者來說是根本看不明白的,因此阻止了非法用戶對軟件的靜態(tài)分析和修改。 例如,將1E53:00070028之間的指令代碼進(jìn)行逐字節(jié)求反,那么在運(yùn)行時(shí),必須使用解碼程序進(jìn)行解密變換。為此在1E53:0007處增加一段解碼程序,而把原CS:00070028H之間的指令代碼經(jīng)逐字節(jié)求反加密變換以后,存放在1E53:00lB開始的內(nèi)存區(qū)域中。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.l 軟件安全的基本要求 1E53:0007 BE1B00 MOV SI,00lB ;SI指向密碼首地址1E53:000A B93D00 MOV CX,003D ;CX指向密碼末地址1E
12、53:000D 2BCE SUB CX,SI ;解密的字節(jié)數(shù)CX1E53:000F FC CLD1E53:0010 2E CS:1E53:0011 8A04 MOV AL,SI ;取一字節(jié)密文1E5:0013 F6D0 NOT AL ;求反解密1E53:0015 2E CS:1E53:0016 8804 MOVSI,AL ;存明文一字節(jié)1E53:0018 46 INC SI ;改變地址1E53:0019 E2F5 LOOP 0010 ;循環(huán)解密1E53:001B 47 INC DI1E53:001C FEFD ?CH計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.l 軟件安全的基本要求如:1E53:001B,0
13、01C,001D處內(nèi)容為:47,F(xiàn)E,F(xiàn)D逐字節(jié)取反后為:B8,01,02其匯編指令為:MOV AX,02014.1.3防動(dòng)態(tài)跟蹤 采取了防靜態(tài)分析的措施以后,雖然阻止了非法用戶對軟件的靜態(tài)分析和閱讀及修改,但是可以利用DEBUG對被加密的軟件進(jìn)行跟蹤,運(yùn)行解碼程序,找到識別磁盤特殊標(biāo)記的程序段,然后對其進(jìn)行修改。所以,進(jìn)行軟件加密的第三個(gè)基本任務(wù)是:必須采取一定的措施阻止解密者的動(dòng)態(tài)跟蹤,使得在正常狀態(tài)下無法用DEBUG程序或其它調(diào)試程序?qū)浖旧磉M(jìn)行跟蹤執(zhí)行。 例如,對于上面的程序,我們可以在防拷貝和防靜態(tài)分析的基礎(chǔ)上再增加防動(dòng)態(tài)跟蹤的技術(shù)。所用的防動(dòng)態(tài)跟蹤技術(shù)是“封鎖鍵盤輸入” 。計(jì)算機(jī)
14、安全技術(shù)軟件安全技術(shù)4.l 軟件安全的基本要求 2A61:0018 E421 IN AL,21 ;讀中斷控制寄存器 2A61:001A 0C02 OR AL,02 ;封鎖鍵盤輸入 2A61:001C E621 OUT 21,AL ;回送中斷控制字 2A61:001E 46 INC SI 2A61:001F E2EF LOOP 0010計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.l 軟件安全的基本要求程序在運(yùn)行過程中會封鎖鍵盤的輸入,即當(dāng)用戶想使用DEBUG的“T命令和“G命令進(jìn)行跟蹤執(zhí)行時(shí),會出現(xiàn)機(jī)器不接受鍵盤輸入的現(xiàn)象,這是由于程序中CS:0018001DH之間的程序?qū)︽I盤進(jìn)行了封鎖。在沒有跟蹤的情況下,
15、程序運(yùn)行完CS:00100020之間的解碼程序以后,將CS:00210048之間的程序變換成明文,然后進(jìn)行磁盤標(biāo)記的識別和運(yùn)行程序主體的工作,最后在返回之前將鍵盤開放。 即: 2A61:0043 19DE SBB SI,BX 2A61:0045 4B DEC BX 2A61:0046 B332 MOV BL,32 2A61:0048 DE0A FIMUL WORD PTRBP十SI計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.2 軟件防拷貝技術(shù) 磁盤上做特殊標(biāo)記,有硬標(biāo)記、軟標(biāo)記。4.2.1激光孔加密技術(shù) 激光方向性好、亮度高等特點(diǎn),用激光在數(shù)據(jù)區(qū)或扇區(qū)標(biāo)識符上燒若干個(gè)痕跡,使磁盤的某幾點(diǎn)失去磁性,在軟盤表面
16、產(chǎn)生永久不可恢復(fù)的標(biāo)志。由于激光孔很小,不仔細(xì)看不容易看見。軟盤在激光處理過的區(qū)域讀寫時(shí),產(chǎn)生CRC校驗(yàn)錯(cuò)誤。而加密軟盤都有自己的識別程序,當(dāng)判斷有CRC檢驗(yàn)錯(cuò)誤時(shí),就認(rèn)為此盤是原盤,然后執(zhí)行被保護(hù)的用戶程序;若沒有CRC校驗(yàn)錯(cuò)誤,則認(rèn)為此盤是復(fù)制品,從而拒絕運(yùn)行被保護(hù)的用戶程序,使拷貝工具無法使用,不能正常工作。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.2 軟件防拷貝技術(shù)補(bǔ)充:MOV AH,19H;取磁盤驅(qū)動(dòng)器編號放在AL中INT 21H ;0:A;1:B;2:CINT 13H AH=0;復(fù)位磁盤,磁盤校準(zhǔn)的磁盤操作 AH=04;檢查磁盤扇區(qū);產(chǎn)生錯(cuò)誤則CF=1,錯(cuò)誤信息在AH中。激光孔定位程序和激光孔
17、指紋識別程序如書本80頁P(yáng)ROLOCK采取如下措施阻止解密者的分析和跟蹤:(1密文處理 (2反跟蹤:防止解密者的跟蹤分析,PROLOCK采用了多種防跟蹤措施。 破壞斷點(diǎn)中斷和單步中斷的向量 隱蔽轉(zhuǎn)移 多循環(huán),多出口 設(shè)置堆棧計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.2 軟件防拷貝技術(shù)4.2.2 電磁加密技術(shù) 借助于專用的電磁機(jī)構(gòu),在所需加密的磁盤上隨機(jī)生成一系列密鑰信息,以供被加密程序識別使用的一種加密技術(shù)。它主要采用了一種奇異的編碼格式將一些數(shù)據(jù)寫入磁盤,供磁盤上專門的密鑰識別程序鑒定。 4.2.3掩膜技術(shù) 采用半導(dǎo)體工藝中的鍍膜方法來制造標(biāo)志,給磁盤某一磁道或某一扇區(qū)進(jìn)行鍍膜。這種方法用膜來“遮掉數(shù)據(jù)
18、地址,使拷貝工具無法識別。即使原樣拷貝出復(fù)制品,在識別程序中,首先對被掩膜的磁盤扇區(qū)進(jìn)行格式化,然后再判別該扇區(qū)是否讀寫正常。如果讀寫扇區(qū)正常,則認(rèn)為此盤是非法復(fù)制品而拒絕該軟件運(yùn)行,甚至使該軟件自行銷毀;否則,認(rèn)為是原盤,繼續(xù)運(yùn)行該軟件。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.3 軟標(biāo)記加密法 4.3.1磁道軟加密法 有磁道接縫加密法、額外磁道加密法、寬磁道加密法、未格式化磁道加密法、磁道間距不規(guī)則變化加密法和螺線型磁道加密法等。1磁道接縫加密法 利用專門的技術(shù)制作特殊的磁道。這種特殊的磁道給復(fù)制工作造成了困難,甚至有些特殊磁道完全不能復(fù)制。此外,它還利用了磁道接縫信息及長度的隨機(jī)性。這種隨機(jī)性導(dǎo)致不
19、同磁盤的磁道接縫信息不同,從而可達(dá)到防拷貝的目的。磁道后置區(qū)占據(jù)的長度是隨機(jī)變化的,其范圍在200300字節(jié)之間,且內(nèi)容也隨機(jī)地變化。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.3 軟標(biāo)記加密法所謂的磁道接縫軟指紋,就是指磁道的后置區(qū),因而利用磁道接縫軟指紋進(jìn)行加密是完全可能的。 將不定長度的后置區(qū)取出以作為鑒別的依據(jù),是磁道接縫軟指紋進(jìn)行加密的關(guān)鍵。對于標(biāo)準(zhǔn)的磁道,讀取困難,除非用端口讀磁道命令來實(shí)現(xiàn),而端口讀磁道命令又是十分繁瑣的。利用修改扇區(qū) ID標(biāo)志和軟盤基數(shù)表的辦法可以較容易地實(shí)現(xiàn)磁道后置區(qū)的讀取。修改扇區(qū)ID標(biāo)志實(shí)際上是修改磁道上最后一個(gè)扇區(qū)的ID標(biāo)志,因?yàn)榇诺郎献詈笠粋€(gè)扇區(qū)與后置區(qū)相連??紤]
20、到后置區(qū)長度不到300字節(jié),因而將磁道最后一個(gè)扇區(qū)ID標(biāo)志中的 N改為 3即可。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.3 軟標(biāo)記加密法補(bǔ)充:INT 13H AH=5 格式化磁盤的單條磁道。AH,AL,CH,DH,DL與磁盤讀寫功能類似,CL低6位不用。BX:被格式化的地址字段集合地址,四個(gè)字節(jié)組成。字節(jié)1:磁柱號;字節(jié)2:磁頭號;字節(jié)3:扇區(qū)號;字節(jié)4:每個(gè)扇區(qū)的字節(jié)數(shù)目,它有四種可能的數(shù)值:0:128字節(jié);1:256字節(jié);2:512字節(jié);3:1024字節(jié)。(P86)2額外磁道加密法 一般磁盤機(jī)可以正常讀寫44個(gè)磁道。有些磁盤機(jī)甚至還可以多讀寫一些。可以設(shè)想,如果將一些關(guān)鍵數(shù)據(jù)放在內(nèi)圈的磁道上,比如放
21、在41道,由于標(biāo)準(zhǔn)的拷貝軟件只能拷貝 039道,因此可以起到軟盤防拷貝的目的。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù) 由于標(biāo)準(zhǔn)的格式化程序只能格式化出40個(gè)磁道,所以額外磁道的制作要由自己編制的匯編程序來實(shí)現(xiàn)。假設(shè)將A驅(qū)動(dòng)器中磁盤的0面40道格式化成一個(gè)標(biāo)準(zhǔn)格式的磁道,具體操作如下: ADEBUG 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
22、 28 00 06 02-E 1018 28 00 07 02 28 00 08 02-E 1020 28 00 09 02-G=100計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.3 軟標(biāo)記加密法3寬磁道加密法 給磁盤驅(qū)動(dòng)器配以寬磁頭,使之能夠同時(shí)在兩個(gè)或多個(gè)磁道上讀寫信息。例如,配以寬磁頭的磁盤驅(qū)動(dòng)器可以在兩個(gè)相鄰的磁道以及磁道之間的間隙同時(shí)寫下完全相同的信息而制成一個(gè)寬磁道。如果讀該磁盤的一段程序能夠使磁盤驅(qū)動(dòng)器的讀寫磁頭在寫有相同信息的兩個(gè)磁道之間物理上實(shí)際是一個(gè)寬“磁道”)來回步進(jìn),那么讀出的數(shù)據(jù)流也不會是中斷的,即可以將寬磁道上的數(shù)據(jù)完整讀出。但在復(fù)制磁盤時(shí),普通磁頭則無法復(fù)制這樣的寬磁道。由于讀
23、寫磁頭兩側(cè)的抹磁頭的抹除作用,在復(fù)制盤中必然將這個(gè)寬磁道物理上分開,成為兩個(gè)普通磁道,在這兩個(gè)磁道間存在物理間隙即在間隙中沒有任何信息),而磁頭步進(jìn)地讀取這兩道的信息,必然導(dǎo)致讀出信息的不連續(xù),從而就可以達(dá)到防拷貝的目的。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.3 軟標(biāo)記加密法4未格式化磁道加密法 在格式化磁盤時(shí),跳過某個(gè)或某些磁道,造成一個(gè)或多個(gè)未格式化的空白磁道,使被加密程序在系統(tǒng)下能正常工作,而傳統(tǒng)的拷貝軟件則無法正常拷貝。 使用被加密程序時(shí),先用在被加密程序中的一段特殊程序?qū)Υ疟P進(jìn)行檢查,如果發(fā)現(xiàn)某一或某些特定的磁道為未格式化磁道,則此盤為原盤,否則為非法拷貝盤。 5磁道間距不規(guī)則變化加密法
24、磁道間距不規(guī)則變化技術(shù)的原理就是利用軟件來控制步進(jìn)電機(jī),使得磁頭在磁盤上產(chǎn)生不規(guī)則的磁道間距,使傳統(tǒng)拷貝軟件無法復(fù)制傳統(tǒng)的拷貝工具是利用程序控制步進(jìn)電機(jī),使磁盤驅(qū)動(dòng)器的讀寫磁頭在磁道間距相等的磁道上來回移動(dòng)而完成其復(fù)制工作的)。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.3 軟標(biāo)記加密法6螺線型磁道加密法 螺線型磁道技術(shù)的原理是在磁盤上制作一些螺線型磁道,致使磁頭在進(jìn)行讀寫操作時(shí)仍在步進(jìn),即磁頭步進(jìn)與讀寫數(shù)據(jù)同時(shí)進(jìn)行。這樣就完全打亂了傳統(tǒng) 的拷貝工具的復(fù)制過程,使經(jīng)過這種方法加密的磁盤無法被拷貝,達(dá)到加密的目的。 4.3.2其它軟加密法 1利用錯(cuò)誤CRC碼加密 2磁道噪聲法 3雙機(jī)加密法 4卷標(biāo)加密法 5弱
25、位加密法 6ID ROM加密法 7利用加密器進(jìn)行加密 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.4扇段軟標(biāo)記加密法 扇段軟標(biāo)記加密方法很多,如扇區(qū)間隙加密法、扇區(qū)軟指紋加密法、異常 ID加密法、額外扇段加密法、超級扇段加密法、扇區(qū)錯(cuò)亂排序法、未格式化扇區(qū)法和扇段對齊技術(shù)法等。4.4.1扇區(qū)軟指紋加密法 扇區(qū)間隙軟指紋加密方法為:磁盤格式化以后,在某一磁道上的第一個(gè)扇區(qū)后的某個(gè)扇區(qū)寫上需要重寫的信息,如被加密程序的數(shù)據(jù)或軟件的一部分,然后再從該扇區(qū)的前一個(gè)扇區(qū)讀該扇區(qū)的內(nèi)容,并利用該扇區(qū)讀出的信息去加密要保護(hù)的軟件。由于從前一段扇區(qū)讀出該扇區(qū)內(nèi)容時(shí),該扇區(qū)的GAP2一起被讀人,所以從該扇區(qū)讀出的內(nèi)容將受GA
26、P2長度的影響。再利用這些受GAP2影響的CRC碼去加密用戶程序,其方法和途徑可以靈活多樣。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.4扇段軟標(biāo)記加密法按扇區(qū)間隙軟件指紋加密的一個(gè)實(shí)例設(shè)被處理的扇區(qū)為第40道0面1扇區(qū))。 (1對第 40道可以選擇任意一道進(jìn)行特殊格式化只格式化 0面),使第二扇區(qū)中從第一扇區(qū)開始,讀該重寫扇區(qū)數(shù)據(jù)時(shí),所讀的內(nèi)容與重寫前是不同的。 GAP2 SYNC AM2 Old Data(512字節(jié)) CRC GAP2 SYNC AM2 New data(512字節(jié)) CRC同一磁道的同一扇區(qū)新數(shù)據(jù)寫入后Data Field of a Sector扇 區(qū) 軟指 紋 信息圖4-12 軟
27、指紋的形成計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)(2讀第 40道 0面3扇區(qū),讀之前修改軟盤基數(shù)表中的N值,使N=4,這樣就可以把第40道0面2扇區(qū)的全部內(nèi)容讀出,而不是僅讀出數(shù)據(jù)域的內(nèi)容。 (3經(jīng)這樣處理后的軟盤,第40道0面上的9個(gè)扇區(qū)就不能被許多拷貝軟件所復(fù)制。4.4.2異常ID加密法 通常采用異常ID參數(shù)的方法如下:(使扇區(qū)長度不等于 512字節(jié)。例如,早期版本的 CCDOS字庫盤上,其格式為每道4扇區(qū),每扇區(qū)1024字節(jié)。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.4扇段軟標(biāo)記加密法(改變磁盤上扇區(qū)的排列順序。例如,可將磁道中扇區(qū)格式化成按相反的順序或交錯(cuò)排列的順序。(使扇區(qū)號取標(biāo)準(zhǔn)格式的取值范圍l9以外的值
28、。(使磁道的邏輯地址與其物理編號不相符。(使磁頭的邏輯編號與其物理編號不相符。由于格式化所需的ID參數(shù)是由指針ES:BX指定的地址,以磁道號T、磁頭號H、扇區(qū)號S和扇區(qū)長度N四個(gè)字節(jié)為一組依次排列的,因此只要改變這些參數(shù)的順序,就能格式化出特殊的磁道。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.4扇段軟標(biāo)記加密法4.4.3 額外扇段加密法 在邏輯結(jié)構(gòu)上,一個(gè)磁道包含若干個(gè)扇區(qū)以及前置區(qū)和后置區(qū)GAP4)。前置區(qū)和后置區(qū)都是為了穩(wěn)定電機(jī)或允許電機(jī)轉(zhuǎn)速稍有偏差而設(shè)的。前置區(qū)的長度是固定的,為32字節(jié);后置區(qū)的長度則是可變的,依電機(jī)轉(zhuǎn)速的不同而不同,一般有數(shù)百字節(jié)左右。 在FM制下,每個(gè)扇區(qū)中不僅包含數(shù)據(jù)區(qū)51
29、2字節(jié)),還包含同步電機(jī)用的兩個(gè)6字節(jié)的SYNC字符序列、4個(gè)字節(jié)的ID地址標(biāo)志、1個(gè)字節(jié)的 AM1、1個(gè)字節(jié)的數(shù)據(jù)標(biāo)志或刪除數(shù)據(jù)標(biāo)志、兩個(gè)2字節(jié)的 CRC(ID域的CRC和數(shù)據(jù)區(qū)的CRC)、一個(gè)11字節(jié)的間隙GAP2和一個(gè)42字節(jié)的間隙GAP3)。因而,一個(gè)標(biāo)準(zhǔn)的扇區(qū)包括數(shù)據(jù)和一些必需的標(biāo)志、間隙,共有512+12+4+2+4+11+42=587字節(jié)。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)下面的匯編程序給出了額外扇區(qū)磁道的產(chǎn)生過程 CDEBUG-E 0000:0522;修改磁盤基數(shù)表0000:0522 DF 02,25,02,09,0A,2A0000:0528 FF 50,0A-A 100;格式化軟盤
30、第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扇段軟標(biāo)記加密法計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)-E 1000 ;設(shè)置格式化時(shí)所需參數(shù)0FA0:1000 00.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 0
31、0.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 ;執(zhí)行格式化程序AX=0000 BX=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
32、NC0FA0:0F0E CC INT 3-E 0000:0522 ;恢復(fù)磁盤基數(shù)表 0000:0522 DF02,25,02,0A,09,2A 0000:0528 FF0A,504.4扇段軟標(biāo)記加密法計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)下面給出讀取磁道額外扇區(qū)的程序及其執(zhí)行結(jié)果:CDEBUG ;進(jìn)入DEBUG-E 0000:0525 ;修改磁盤基數(shù)表0000:0528 02,09,0A,2A0000:0528 FF,50,0A-A 100 ;讀16道0面第10扇區(qū)程序0FA0:0100 MOV AX,02010FA0:0103 MOV BX,10000FA0:0106 MOV CX,100A0FA0:0
33、109 MOV DX,00000FA0:010C INT 130FA0:010E INT 30FA0:010F4.4扇段軟標(biāo)記加密法計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.4扇段軟標(biāo)記加密法4.4.4 超級扇段加密法 由于磁盤機(jī)本身電路的原因,磁盤機(jī)對讀出的要求較低,往往對大扇區(qū)能正確讀出,但要復(fù)制大扇區(qū)一般是做不到的。根據(jù)這個(gè)原理,Softguard系統(tǒng)公司研制了超級扇段技術(shù)來實(shí)現(xiàn)磁盤防拷貝。超級扇段技術(shù)也稱連續(xù)寫技術(shù),它使用專用設(shè)備在軟盤上寫上一些超長的扇區(qū),這些扇區(qū)的長度接近一個(gè)磁道的長度如N=5時(shí),每扇區(qū)字節(jié)數(shù)為4096字節(jié))。普通的磁盤控制器不能寫這些扇區(qū),但在程序控制下可以成功地讀出這些扇區(qū)
34、磁盤機(jī)甚至可以正確讀出N=6的扇區(qū))。 超級扇段技術(shù)可以作為一種防拷貝加密技術(shù)單獨(dú)使用,也可以同其他技術(shù)結(jié)合起來使用,如扇區(qū)接縫指紋技術(shù)和磁道接縫指紋技術(shù)中可以使用超級扇段技術(shù)。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.4扇段軟標(biāo)記加密法下面的程序給出了讀取超級扇段的操作過程這里,超級扇段容量為4096字節(jié),即N=5,其所在磁道為0面39道):CDEBUG;進(jìn)入DEBUGE 0000:0525 ;修改磁盤基數(shù)表0000:0525 02.05 09.01一A 100 ;讀39道0面第1扇區(qū)程序0FA0:0100 MOV AX,02010FA0:0103 MOV BX,10000FA0:0106 MOV C
35、X,27010FA0:0109 MOV DX,00000FA0:010C INT 130FA0:010E INT 30FA0:010F計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)一G=100 ;執(zhí)行讀程序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 AC PE NC0FA0:010E CC INT 3 一E 0000:0252 ;恢復(fù)磁盤基數(shù)表0000:0525 05.02 01.09Q 4.4扇段軟標(biāo)記加密法計(jì)算機(jī)安全技術(shù)
36、軟件安全技術(shù)4.4扇段軟標(biāo)記加密法4.4.5 磁道扇區(qū)亂序排列加密法 目前所用的磁盤都是用軟分段的方法規(guī)劃格式化出來的。所謂軟分段就是用扇區(qū)識別標(biāo)志來存取磁盤上的信息,整個(gè)磁盤只有一索引孔。這種磁盤的每個(gè)磁道上分布著固定數(shù)目的扇區(qū),每個(gè)扇區(qū)的開始部分是扇區(qū)識別標(biāo)志。一條磁道上的扇區(qū)從小到大按序排列,讀寫磁盤扇區(qū)時(shí),根據(jù)磁頭號、磁道號和扇區(qū)號來決定讀寫磁盤上的哪一個(gè)扇區(qū)。每個(gè)扇區(qū)由標(biāo)識域、數(shù)據(jù)域和兩個(gè)間隙域四個(gè)部分構(gòu)成。標(biāo)識域指示該扇區(qū)所在的磁道號、磁頭號和扇區(qū)號以及扇區(qū)中數(shù)據(jù)域的大小。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.4扇段軟標(biāo)記加密法一般地,正常格式化出來的磁盤,標(biāo)識域中所指示某扇區(qū)的磁道號、磁
37、頭號和扇區(qū)號與該扇區(qū)的實(shí)際位置相一致。讀寫磁盤時(shí),根據(jù)請求參數(shù)磁道號、磁頭號和扇區(qū)號來轉(zhuǎn)動(dòng)盤片和移動(dòng)磁頭,并且將讀出的標(biāo)識域與請求參數(shù)相比較。如果一致,則目標(biāo)找到并進(jìn)行讀寫操作;如果不一致,則還要轉(zhuǎn)動(dòng)盤片直到一致為止。 磁道扇區(qū)亂序排列法就是打亂磁道扇區(qū)的正常排列,改變由小到大的次序,由大到小排列,或用大數(shù)排列、跳躍排列次序排列,等等。為加密而改變磁盤扇區(qū)的排列,只要選擇一道或幾道就行了,完全沒有必要改變所有磁道的扇區(qū)排列。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.4扇段軟標(biāo)記加密法 4.4.6 未格式化扇區(qū)加密法 軟盤格式化處理后才能存儲信息,未格式化的磁盤是無法使用的。未格式化扇區(qū)的加密原理就是利用這
38、個(gè)特點(diǎn),在格式化軟盤時(shí),對某一磁道的部分扇區(qū)不做格式化處理。這樣,被加密程序運(yùn)行時(shí),首先利用被加密程序中的一程序段對某一特定磁道進(jìn)行檢查。如果發(fā)現(xiàn)此磁道為一正常磁道即沒有未格式化扇區(qū)),那么此盤必定為復(fù)制盤,否則為原盤。若是原盤則正常執(zhí)行,否則作異常處理。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.4扇段軟標(biāo)記加密法GSH_BUF DB 27H,00,01,02 ;格式化時(shí)所需的標(biāo)識字段 DB 27H,00,02,02 ; 集合 DB 27H,00,03,02 DB 27H,00,04,02 DB 27H,00,05,02 DB 27H,00,06,02 DB 27H,00,07,02 PUSH ESMOV
39、 AH,35H ;取磁盤基數(shù)表指針MOV AL,1EHINT 21HMOV AL,07H ;修改磁盤基數(shù)表中每道的扇區(qū)數(shù)ADD BX,04HMOV ES:BX,ALPOP ES計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.4扇段軟標(biāo)記加密法MOV DL,0 ;將39磁道特殊格式化為有未格式化的扇區(qū)MOV DH,0MOV CH,27HMOV BX,OFFSET GSH_BUF ;該磁道僅有7個(gè)扇區(qū)MOV AH,05INT 13HPUSH ESMOV AH,35HMOV AL,1EHINT 21HMOV AL,09H ;恢復(fù)磁道基數(shù)表原值A(chǔ)DD BX,04HMOV ES:BX,ALPOP ES計(jì)算機(jī)安全技術(shù)軟件安
40、全技術(shù)4.4扇段軟標(biāo)記加密法在被加密程序中可以安排一段專門程序,用來檢查磁盤是否為原盤。具體做法是:檢查磁盤的39道上扇區(qū)數(shù)是否大于7。若大于7,則此盤為拷貝盤;否則,為原盤。 MOV AX,SEG MY_BUF ;ES:BX為用戶緩沖區(qū)地址 MOV ES,AX MOV BX,OFFSET MY_BUF MOV AL,0lH ;讀一個(gè)扇區(qū) MOV DL,00H ; A驅(qū)動(dòng)器 MOV DH,00H ;0磁頭 MOV CH,27H ;39磁道 MOV CL,08H ;第8扇區(qū) MOV AH,02H ;讀盤 INT 13H ;轉(zhuǎn) BIOS CMP AX,0400 ;申請扇區(qū)找到否 JNZ ILLEG
41、L_DISKERR ;找到轉(zhuǎn)非法盤處理子程序 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.4扇段軟標(biāo)記加密法4.4.7 扇段對齊加密法 扇段對齊技術(shù)是一種十分有效的磁盤軟加密方法。但是由于要精確依靠磁盤的轉(zhuǎn)動(dòng)速度來判斷扇段對齊,而磁盤的轉(zhuǎn)動(dòng)速度實(shí)際上時(shí)時(shí)刻刻都不相同,因而這種加密技術(shù)實(shí)施難度大,也較難得到高可靠性。因而,在實(shí)際應(yīng)用中,扇段對齊技術(shù)的使用并不多見。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.5 口令加密與限制技術(shù) 4.5.1口令加密技術(shù) 比如一個(gè)利用系統(tǒng)的功能調(diào)用07H來接收鍵盤輸入的口令加密示范程序。以回車鍵0DH作為結(jié)束符??诹钭州斎牒笈c程序中事先安排好的規(guī)定值進(jìn)行比較。若一致,則顯示:“OK PAS
42、S”,然后運(yùn)行程序;否則,提示用戶重新輸入口令字??诹钭肿疃嗳?,三次輸入若均不正確,則屏幕上顯示:“非法用戶,對不起!”,然后返回DOS,同時(shí)以聲音報(bào)警:笛!笛!笛! 該程序比較簡單,容易被破譯。實(shí)際應(yīng)用時(shí)采用個(gè)加密算法事先將口令字作為密鑰對主要程序段進(jìn)行加密變換,在程序的開頭接收鍵盤輸入的口令字作為密鑰對文件中的密碼進(jìn)行解密。這樣,如果非法用戶輸入的口令不正確,程序根本無法運(yùn)行,而對于解密來說,也是相當(dāng)困難的。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.5 口令加密與限制技術(shù)4.5.2 限制技術(shù)限制技術(shù)1設(shè)置軟件使用期限設(shè)置軟件使用期限許多軟件加密人員為了保護(hù)自己的軟件產(chǎn)品,許多軟件加密人員為了保護(hù)自
43、己的軟件產(chǎn)品,或者為了控制軟件的使用周期,往往在對軟件加密或者為了控制軟件的使用周期,往往在對軟件加密過程中規(guī)定了軟件的使用期限。被加密的軟件在每過程中規(guī)定了軟件的使用期限。被加密的軟件在每次運(yùn)行過程中,首先通過一段程序檢測軟件使用期次運(yùn)行過程中,首先通過一段程序檢測軟件使用期限是否已經(jīng)到期。如果沒有到期,則使軟件正常運(yùn)限是否已經(jīng)到期。如果沒有到期,則使軟件正常運(yùn)行;否則,提示用戶軟件使用已經(jīng)到期,請用戶到行;否則,提示用戶軟件使用已經(jīng)到期,請用戶到軟件研制單位進(jìn)行版本更新?lián)Q代,并中止軟件的運(yùn)軟件研制單位進(jìn)行版本更新?lián)Q代,并中止軟件的運(yùn)行,甚至從磁盤上刪除當(dāng)前軟件。行,甚至從磁盤上刪除當(dāng)前軟件
44、。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.5 口令加密與限制技術(shù)設(shè)置軟件使用期限的方法,一般是利用DOS的系統(tǒng)功能調(diào)用2AH子功能。該子功能是獲取系統(tǒng)日期的系統(tǒng)功能調(diào)用,其調(diào)用方法如下:入口參數(shù):AH=2AH出口參數(shù):CX=年1980至2099)DH=月1= 一月,2=二月,12=十二月)DL=日1至 31)AL=星期幾0=星期日,1=星期一,6=星期六)注意:上述的出口參數(shù)都以二進(jìn)制形式存放在相應(yīng)的寄存器中。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)下面的一段程序所完成的功能是:檢測當(dāng)前日期是否超過1992年3月26日。如果未到該日期,則使軟件正常工作;否則使軟件轉(zhuǎn)入死機(jī)。程序如下:MOV AH,2AHINT 2
45、1H 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 RETRYMSG DB ODH,OAH,09OKPASS: 上述程序段在檢測到軟件使用期限已經(jīng)到期的情況下,首先顯示提示信息警告用戶,然后使程序轉(zhuǎn)入死機(jī)狀態(tài)。而有的軟件在到期的情況下,則使用系統(tǒng)功能調(diào)用41H來將軟件自身從磁盤上刪除。41H子功能調(diào)用方法如下:計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.5 口令加密與限
46、制技術(shù)入口參數(shù):AH41H DS:DX帶路徑的文件名出口參數(shù):CF0 刪除成功CFl 刪除不成功,AX返回出錯(cuò)碼2一未找到路徑;5一拒絕存?。├纾旅娴某绦蚱瓮瓿蓜h除文件C:MYPROGEXE和返回 DOS的功能:PUSH CSPOP DSMOV AH, 41HMOV DX,OFFSET WJM;刪除文件C:MYPROGEXEINT 21HMOV AX,4CFFH;帶錯(cuò)誤碼FFH返回DOSINT 21HWJM DB C:MYPROGEXE計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.5 口令加密與限制技術(shù)2限制軟件的運(yùn)行次數(shù)限制軟件的運(yùn)行次數(shù)是軟件加密中的一種常用的方法。其基本思想是:利用安裝程序?qū)⒁粋€(gè)被
47、加密的軟件拷貝到硬盤中,并將一個(gè)規(guī)定的運(yùn)行次數(shù)寫入被加密的軟件中。對于被加密的軟件來說,在每次運(yùn)行過程中,都要將運(yùn)行次數(shù)單元內(nèi)容減1,當(dāng)某一次運(yùn)行結(jié)果中運(yùn)行次數(shù)減為0時(shí),該加密軟件從此便不能運(yùn)行,或拒絕運(yùn)行,或?qū)⒆陨韽拇疟P上刪除掉,然后要求用戶利用安裝盤重新安裝。單獨(dú)使用這種方法的加密軟件有一種缺陷,那就是如果被加密的軟件不具有防拷貝功能,則非法拷貝者可以將該軟件拷貝到自己的磁盤上。只要運(yùn)行次數(shù)不為0,它就一直執(zhí)行到運(yùn)行次數(shù)為0為止。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.5 口令加密與限制技術(shù)為了阻止拷貝,可將運(yùn)行次數(shù)單元設(shè)置在主引導(dǎo)扇區(qū)中。如果是合法用戶,安裝程序便將規(guī)定的運(yùn)行次數(shù)寫入主引導(dǎo)扇區(qū)相應(yīng)
48、的單元中,被加密軟件每一次運(yùn)行時(shí)讀取這一單元的內(nèi)容并進(jìn)行減1操作,然后判斷運(yùn)行次數(shù)是否為0,從而決定程序是否執(zhí)行。對于這種將運(yùn)行次數(shù)寫入硬盤主引導(dǎo)扇區(qū)的方法,如果非法復(fù)制者只將軟件本身拷貝到自己的磁盤上,而沒有將他自己硬盤中主引導(dǎo)扇區(qū)的運(yùn)行次數(shù)單元的內(nèi)容進(jìn)行相應(yīng)的設(shè)置,被拷貝的程序就不能正常運(yùn)行。更進(jìn)一步,為了防止非法用戶識別出主引導(dǎo)扇區(qū)的運(yùn)行次數(shù),可以將運(yùn)行次數(shù)單元的內(nèi)容經(jīng)過加密變換以后,以密碼的形式存放。加密密鑰可以使用被加密軟件自身的首簇號,這樣基本可以做到一次一密,使得解密者想通過走捷徑(不分析加密程序,而想仿造運(yùn)行次數(shù))的方法來破譯這一軟件是非常困難的. 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4
49、.6硬盤防拷貝技術(shù) 常由出售給用戶的商品軟件和硬盤加密安裝系統(tǒng)軟件組成。這兩個(gè)軟件都通過軟盤方式售給用戶,其中被出售的商品軟件是經(jīng)過加密處理的。硬盤加密技術(shù)實(shí)際上是給硬盤加鎖,加鎖的硬盤只有用密鑰開鎖后才能使用。密鑰有兩種形式:一種是口令形式,密鑰由授權(quán)用戶掌握;另一種是密鑰盤形式,密鑰盤掌握在授權(quán)用戶手中。加密硬盤只對授權(quán)用戶開放,而對非授權(quán)用戶關(guān)閉,既阻止了非法用戶對硬盤的使用,又不影響合法用戶的使用,從而有效地保護(hù)了硬盤上信息的安全。硬盤加密技術(shù)主要采用以下幾種方法:主引導(dǎo)扇區(qū)設(shè)置密碼防拷貝;利用文件首簇號防拷貝;硬盤消隱與還原技術(shù)。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.6硬盤防拷貝技術(shù)4.6
50、.l 主引導(dǎo)扇區(qū)設(shè)置密碼防拷貝硬盤的主引導(dǎo)扇區(qū)中存放主引導(dǎo)程序和硬盤分區(qū)表的信息。通常引導(dǎo)程序占用的偏移地址000000DFH,而硬盤分區(qū)表則從偏移地址01BEH開始存放,在引導(dǎo)程序和硬盤分區(qū)表之間大約有206個(gè)字節(jié)空間是空白區(qū)。硬盤安裝程序的主要功能有兩個(gè):一是在硬盤上設(shè)置密碼標(biāo)志;二是將被加密的軟件由軟盤安裝到硬盤上一般是在硬盤上建立一個(gè)子目錄,將被加密軟件的標(biāo)志存放在此子目錄中)。被安裝的軟件,一般在出售給用戶之前已進(jìn)行了防動(dòng)態(tài)跟蹤和防靜態(tài)分析的加密處理,并具有識別硬盤主引導(dǎo)扇區(qū)中存放的密碼功能。下面給出其密碼設(shè)置程序和密碼識別程序。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)1密碼設(shè)置程序密碼設(shè)置程序?qū)?/p>
51、于安裝程序的一部分,可以使用如下的一段程序:BUF:DB 512 DUP0);讀盤緩沖區(qū)PUSH CSPOP DSPUSH CSPOP ES ;CSDSESMOV BX,OFFSET BUTMOV CX,lMOV DX,0080HMOV AX,0201H ;讀硬盤主引導(dǎo)扇區(qū)到BUFINT 13HMOV BX,OFFSET BUFMOV AX,7E7EHMOV BX十00E0H,AX ;密碼7E7EH到主引導(dǎo)扇區(qū)00E0H單元MOV BX,OFFSET BUFMOV CX,lMOV DX, 0080HMOV AX,0301H;將設(shè)置密碼的主引導(dǎo)扇區(qū)寫回硬盤INT 13H計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)
52、2密碼識別程序密碼識別程序?qū)儆诒患用苘浖绦虻牟糠?,可用如下一段程序進(jìn)行主引導(dǎo)區(qū)約定偏移地址處密碼的識別操作:BUF DB 512 DUP0);讀盤緩沖區(qū)PUSH CSPOP DSPUSH CSPOP ES ;CSDSESMOV BX, OFFSET BUFMOV CX,lMOV DX,0080HMOV AX,0201H ;讀硬盤主引導(dǎo)扇區(qū)INT 13H MOV BX,OFFSET BUFMOV AX,7E7EHCMP BX00E0H,AXJZ OK_PASS ;有密碼,則轉(zhuǎn)OK_PASS正常進(jìn)行RETRY:CLIHLT ;無密碼,死機(jī)JMP RETRYOK_PASS: 計(jì)算機(jī)安全技術(shù)軟件安全
53、技術(shù)4.6硬盤防拷貝技術(shù)4.6.2 利用文件首簇號防拷貝 不同類型硬盤的柱面數(shù)、磁頭數(shù)、每個(gè)柱面上的扇區(qū)數(shù)都是不盡相同的,對于同一個(gè)文件來說,拷到兩個(gè)硬盤上,其首簇號一般是不相同的。即使同一類型的硬盤,磁盤空間的使用狀況也不盡相同。 1文件首簇號的獲取與安裝 文件首簇號的獲取與安裝操作由安裝程序來完成。安裝程序的主要工作是:將被加密的軟件拷貝到硬盤根目錄或某一子目錄下,讀取該軟件的首簇號,以明文或密文的形式寫入被加密軟件規(guī)定的地方。對于DOS3.3(含3.3)以上的版本來說,文件首簇號保存在FCB第28、29字節(jié)中,而對于DOS3.3以下的版本來說,文件首簇號則在FCB的第26、27字節(jié)中。
54、計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)下面的一段程序就是安裝軟件中用于獲取被加密軟件首簇號的程序片段:MSG DB 0DH,0AH,FILE OPEN ERROR!FCBI DB 0FFH,0,0,0,0,0,20,0,PROTECTI.EXE,25 DUP0) MOV DX,OFFSET FCBIMOV AL,0FH INT 21HCMP AL,0JNZ ERR MOV AH,30HINT 21H CMP AL,3JB NEXTMOV SI,OFFSET FCBIMOV AX,SI28 JMP GOONERR: MOV DX,OFFSET MSGMOV AH,9 INT 2 IHMOV AX,4CFFH
55、 INT 21HNEXT: MOV AX,SI26 GOON:計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.6硬盤防拷貝技術(shù)2文件首簇號的識別文件首簇號的識別操作常由被加密程序自己來完成。另外也有用系統(tǒng)功能調(diào)用來獲取文件首簇號的方法,在傳統(tǒng)的文件管理系統(tǒng)功能調(diào)用中,11H和12H號功能調(diào)用分別是搜索第一個(gè)匹配文件和下一個(gè)匹配文件的功能調(diào)用。直接使用它們其中之一,也可以方便地獲取文件目錄登記項(xiàng)的全部32個(gè)字節(jié)內(nèi)容,當(dāng)然也包含了文件首簇號。程序片段如下:MOV DX,OFFSET FCBIMOV AH,11HINT 21H計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.6硬盤防拷貝技術(shù)4.6.3 磁盤的消隱與還原 1硬盤消隱技術(shù)一
56、種使硬盤從邏輯上消失,在邏輯上不存在的硬盤,在物理上始終是存在的。使硬盤消隱實(shí)際上是使系統(tǒng)不能識別物理上存在的硬盤,使得針對硬盤的文件存取操作不能進(jìn)行,從而達(dá)到保護(hù)硬盤上信息的目的。通常把使硬盤消隱的操作稱為硬盤加鎖密操作。實(shí)現(xiàn)硬盤消隱有以下幾種方法:( 1改變系統(tǒng)設(shè)置法 ( 2修改分區(qū)表系統(tǒng)指示字節(jié)法 (3搬移分區(qū)表法 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.6硬盤防拷貝技術(shù)2硬盤還原技術(shù)授權(quán)用戶運(yùn)行解鎖軟件還原硬盤有兩種形式:一種是還原后的硬盤在再次加鎖前處于開鎖狀態(tài),任何用戶都可以正常使用硬盤,因而授權(quán)用戶上完機(jī)后需再次加鎖才能阻止非授權(quán)用戶對硬盤的訪問;另一種形式是還原后的硬盤只在再次啟動(dòng)前處于
57、開鎖狀態(tài),一旦關(guān)機(jī)或重新啟動(dòng)機(jī)器,硬盤使自動(dòng)處于關(guān)鎖狀態(tài)。這是通過用密鑰系統(tǒng)盤啟動(dòng)機(jī)器實(shí)現(xiàn)的,該密鑰系統(tǒng)盤由授權(quán)用戶掌握。不用該密鑰系統(tǒng)盤啟動(dòng)機(jī)器,硬盤不能被使用。硬盤還原的手段不是恢復(fù)系統(tǒng)設(shè)置表中的硬盤設(shè)置就是恢復(fù)主引導(dǎo)記錄中的分區(qū)表。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.6硬盤防拷貝技術(shù)4.6.4 硬盤加密、解密實(shí)例密鑰系統(tǒng)盤的實(shí)例。密鑰系統(tǒng)盤的關(guān)鍵在于引導(dǎo)記錄,它是采用搬移硬盤分區(qū)表實(shí)現(xiàn)加鎖,采用恢復(fù)硬盤分區(qū)表實(shí)現(xiàn)解鎖的。當(dāng)用例中所給出的密鑰系統(tǒng)盤啟動(dòng)機(jī)器時(shí),第一次不能寫保護(hù),以后則可以。用它啟動(dòng)機(jī)器,則硬盤可用,不用它啟動(dòng)則硬盤不可用。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.7 防動(dòng)態(tài)跟蹤技術(shù) 4.7
58、.l 跟蹤的工具及其實(shí)現(xiàn) 1跟蹤軟件調(diào)試軟件是破譯者的“天然跟蹤工具,能對程序?qū)崿F(xiàn)指令級跟蹤,DEBUG可以跟蹤DOS認(rèn)可的任意小的可執(zhí)行文件。T:單步跟蹤命令。使用該命令可嚴(yán)格按指令級進(jìn)行跟蹤,即該命令不把INT n、CALL n等語句作為一條指令,而是進(jìn)入這些語句相應(yīng)的子程序中進(jìn)行逐條指令跟蹤。P:按匯編語句跟蹤。與 T命令不同的是,該命令把諸如 INT n、CALL n等語句作為一條指令對待,而不像T語句那樣跟蹤到這些語句相對應(yīng)的子程序中,執(zhí)行子程序中的每條命令。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.7 防動(dòng)態(tài)跟蹤技術(shù) G:運(yùn)行命令。該命令使得用戶可以從程序的任一地方開始執(zhí)行,并最多可以設(shè)置d個(gè)
59、中斷點(diǎn),顯示每個(gè)中斷點(diǎn)處指令的運(yùn)行結(jié)果。加密中的防跟蹤處理,就是要阻止解密者利用這些跟蹤調(diào)試工具對被加密的文件進(jìn)行有效跟蹤,使跟蹤者落入加密者設(shè)置的“陷階或進(jìn)入“死胡同”。2跟蹤的過程單步中斷和斷點(diǎn)中斷。單步中斷是由機(jī)器內(nèi)部狀態(tài)引起的一種中斷。斷點(diǎn)中斷是一種軟中斷,軟中斷又稱為自陷指令。當(dāng)CPU執(zhí)行到編制在程序中的這條自陷指令時(shí),就進(jìn)入斷點(diǎn)中斷服務(wù)程序。由于斷點(diǎn)中斷服務(wù)程序完成對斷點(diǎn)處各寄存器內(nèi)容的顯示,單步中斷和斷點(diǎn)中斷的配合使得調(diào)試軟件可以實(shí)現(xiàn)對程序運(yùn)行的跟蹤。 計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.7 防動(dòng)態(tài)跟蹤技術(shù)4.7.2 防動(dòng)態(tài)跟蹤的方法防動(dòng)態(tài)跟蹤的目的是阻止破譯者進(jìn)行有效跟蹤。實(shí)現(xiàn)這個(gè)目
60、的的方法有兩個(gè)途徑:第一個(gè)途徑是破壞跟蹤,使破譯者跟蹤不了幾步就死機(jī)或機(jī)器自啟動(dòng);第二個(gè)途徑是利用反窮舉法,使跟蹤者在“耗盡精力之前不能進(jìn)行實(shí)質(zhì)性跟蹤。這兩個(gè)途徑的防跟蹤都要與密文相配合,否則就不能阻止破譯者識破“機(jī)關(guān)”,實(shí)現(xiàn)解密。計(jì)算機(jī)安全技術(shù)軟件安全技術(shù)4.7 防動(dòng)態(tài)跟蹤技術(shù)1修改中斷向量法就是用新值來代替中斷向量的舊值。這個(gè)新值可以是被加密程序中某一程序的入口,也可以是一個(gè)隨機(jī)數(shù)。前者可以使跟蹤者誤入加密者設(shè)置的“陷阱中,后者可使機(jī)器進(jìn)入死循環(huán)或出現(xiàn)其它異?,F(xiàn)象而死機(jī)。所有跟蹤軟件都利用了單步中斷和斷點(diǎn)中斷。這兩個(gè)中斷的中斷服務(wù)程序的入口中斷向量分別被放在內(nèi)存0:00040007H和0:
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年學(xué)生保險(xiǎn)全保障協(xié)議
- 2025標(biāo)識標(biāo)牌行業(yè)發(fā)展趨勢分析與預(yù)測合同3篇
- 二零二五版辦公區(qū)域租賃合同(含物業(yè)增值服務(wù))
- 二手住宅交易服務(wù)合同(2024年版)3篇
- 二零二五年度上市公司專項(xiàng)財(cái)務(wù)咨詢與輔導(dǎo)協(xié)議
- 二零二五年度股權(quán)分割協(xié)議書模板
- 2025年度礦業(yè)權(quán)出讓與地質(zhì)安全監(jiān)管合同
- 2025年度車輛借出免責(zé)及車輛使用責(zé)任界定協(xié)議
- 二零二五年度文化藝術(shù)活動(dòng)派遣協(xié)議范本
- 2025年度城市綜合體物業(yè)保安勞務(wù)管理合同
- 小兒甲型流感護(hù)理查房
- 霧化吸入療法合理用藥專家共識(2024版)解讀
- 2021年全國高考物理真題試卷及解析(全國已卷)
- 拆遷評估機(jī)構(gòu)選定方案
- 趣味知識問答100道
- 鋼管豎向承載力表
- 2024年新北師大版八年級上冊物理全冊教學(xué)課件(新版教材)
- 人教版數(shù)學(xué)四年級下冊核心素養(yǎng)目標(biāo)全冊教學(xué)設(shè)計(jì)
- JJG 692-2010無創(chuàng)自動(dòng)測量血壓計(jì)
- 三年級下冊口算天天100題(A4打印版)
- CSSD職業(yè)暴露與防護(hù)
評論
0/150
提交評論