国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

磁盤加密文件的零類中斷反跟蹤探究

2017-03-12 22:55:34
關(guān)鍵詞:程序段斷點(diǎn)子程序

李 娜

(錦州師范高等??茖W(xué)校,遼寧錦州121000)

一個(gè)應(yīng)用軟件往往由若干個(gè)程序段組成,而每個(gè)程序段又可由若干子程序組成.程序中各種運(yùn)算、判斷、分支轉(zhuǎn)移和循環(huán)過程很多,在眾多的指令群中,巧妙利用計(jì)算機(jī)系統(tǒng)的一些特殊中斷并隱蔽地調(diào)出,就會(huì)制造跟蹤障礙,達(dá)到防止跟蹤的目的[1].這種反跟蹤方法更隱蔽、更巧妙.如果想要了解程序中到底由哪些特殊中段實(shí)現(xiàn)反跟蹤的,就必須逐條跟蹤程序的運(yùn)行,這就要花費(fèi)大量時(shí)間和精力.因?yàn)樵诟櫟倪^程中,還要克服大量的抵制單步運(yùn)行的反跟蹤措施,一般會(huì)使跟蹤者喪失信心——計(jì)算機(jī)零類中斷就是運(yùn)用這一原理而產(chǎn)生的[2].

1 零類中斷原理

計(jì)算機(jī)系統(tǒng)都設(shè)有一個(gè)零類中斷,即“被零除”產(chǎn)生的中斷,其中斷功能是自動(dòng)完成的.無論在程序哪個(gè)位置,只要是除法指令且除數(shù)為零,都產(chǎn)生“被零除”的錯(cuò)誤,并由INT 00H中斷處理程序?qū)Υ诉M(jìn)行處理[3、4].因此,如果將某個(gè)加密程序段作為INT 00H 中斷的新的中斷處理程序,并預(yù)先留駐內(nèi)存,要執(zhí)行這段程序時(shí),只需造成一個(gè)被零除的錯(cuò)誤就可以了,而無需明顯地使用中斷指令或子程序調(diào)用去實(shí)現(xiàn).在跟蹤情況下運(yùn)行程序時(shí),如果沒有逐條跟蹤到人為設(shè)置好的除法指令,或設(shè)斷點(diǎn)跟蹤時(shí)沒有將斷點(diǎn)設(shè)置到指令處,就不能發(fā)現(xiàn)一個(gè)程序段在悄悄地進(jìn)行調(diào)用執(zhí)行.設(shè)計(jì)較好的反跟蹤程序,還可以使跟蹤行為得不到除數(shù)為零的結(jié)果,自然也就無法去跟蹤中斷程序段了.跟蹤者如果不了解秘密執(zhí)行的程序段的運(yùn)行情況,就會(huì)使跟蹤失?。械母櫿咦砸詾閷?duì)程序進(jìn)行了完整的跟蹤,而沒有發(fā)覺已經(jīng)失去了對(duì)一段程序的了解.

2 程序?qū)崿F(xiàn)

此種方法的程序B1.ASM如下:

title B1. ASM

data segment

char db’program OK!’,0dh,0ah,24h

disp db’Run INT 00H!’ 0dh,0ah,24h

oldint dw 0,0

data ends

stack segment para stack

dw 20 dup (?)

stack ends

code segment

assume cs:code,ds:data,ss:stack

begin:mov ax,data

mov ds,ax

mov es,ax

……

push ds

push es

cli

xor ax,ax

move es,ax

mov ax,es:[0000h]

mov oldint,ax

mov ax,es:[0002h]

mov oldint +2,ax

mov ax,seg int00

mov ds,ax

mov dx,offset int00

mov ax,2500h

int 21h

sti

pop es

pop ds

……

push es

mov ax,0000h

mov es,ax

mov ax,es[0004h]

mov bx,es[000ch]

xor bx,ax,

div bx

pop es

……

Push es

cli

mov ax,0000h

mov es,ax

mov ax,oldint

mov es:[0000h],ax

mov ax,oldint +2

mov es:[00002h],ax

sti

pop es

mov dx,offset char

mov ah,09h

int 21h

jmp eeee

;……

int00 proc near

push dx

push ax

push ds

cli

mov ax,0000h

mov es,ax

mov byte ptr es:[0004h],0cfh

mov byte ptr es:[000ch],0cfh

mov dx,seg disp

mov ds,dx

mov dx,offset disp

mov ah,09h

int 21h

sti

pop ds

pop dx

pop ax

pop ax

add,ax,1

push ax

iret

int00 endp

; ……

eeee: mov ah,4ch

int 21h

code ends

ends begin

程序中,開始設(shè)置了新的零類中斷向量,也就是將INT 00H指向程序中的一個(gè)子程序.在程序執(zhí)行的過程中,檢測(cè)INT 01H和INT 03H的中斷向量?jī)?nèi)容,并將INT 01H中斷向量與INT 03H中斷向量進(jìn)行“異或”處理.這樣做的目的是:當(dāng)程序正常執(zhí)行時(shí),INT 01H和INT 03H 中斷向量的值是一致的.通過兩個(gè)數(shù)“異或”處理后得到一個(gè)零值,然后由除法指令DIV產(chǎn)生一個(gè)零類中斷,即INT 00H中斷.當(dāng)程序被調(diào)試軟件跟蹤運(yùn)行時(shí),由于INT 00H和INT 03H的中斷向量不一致,經(jīng)過“異或”運(yùn)算得到的結(jié)果不可能出現(xiàn)零值,這樣也就產(chǎn)生不了零類中斷,從而也就進(jìn)入不了特定子程序,使跟蹤失?。绦蛟谡_\(yùn)行時(shí)會(huì)顯示“Run INT 00H!”和“Program Ok!”,而在被調(diào)試跟蹤情況下運(yùn)行就只顯示“Program Ok!”.很明顯,程序沒有執(zhí)行特定的子程序段,用戶可以在特定的子程序中斷安排關(guān)鍵數(shù)據(jù)及指令等內(nèi)容,以防破譯.

3 結(jié)語

為了便于理解,本文所給出的程序比較簡(jiǎn)單,而真正的反跟蹤手段要復(fù)雜得多.例如,可以動(dòng)態(tài)解碼過程得到一系列數(shù)據(jù),由這些數(shù)再循環(huán)運(yùn)算產(chǎn)生被零除的結(jié)果,進(jìn)而產(chǎn)生INT 00H中斷.程序反跟蹤技術(shù)作為磁盤加密的一個(gè)重要手段,研究其具有實(shí)際意義,因此還需在實(shí)踐中不斷摸索.

猜你喜歡
程序段斷點(diǎn)子程序
基于WinCC的物料小車控制系統(tǒng)設(shè)計(jì)與仿真
數(shù)控系統(tǒng)手輪回退功能的研究與實(shí)現(xiàn)*
一類無限可能問題的解法
基于NC程序段的提高數(shù)控加工監(jiān)控閾值與信號(hào)同步的方法*
主導(dǎo)電回路發(fā)生斷點(diǎn)故障判斷方法探討
淺談子程序在數(shù)控車編程中的應(yīng)用
子程序在數(shù)控車加工槽中的應(yīng)用探索
西門子840D系統(tǒng)JOG模式下PLC調(diào)用并執(zhí)行NC程序
簡(jiǎn)化編程與子程序嵌套的應(yīng)用
科技傳播(2011年24期)2011-08-29 05:39:46
TKScope仿真調(diào)試Cortex-M3內(nèi)核的高級(jí)手段
旺苍县| 奉化市| 德江县| 木里| 巫溪县| 微山县| 徐州市| 寿阳县| 汾西县| 罗定市| 道真| 建瓯市| 陇川县| 本溪| 高邮市| 永丰县| 邵武市| 松阳县| 玉山县| 武邑县| 延庆县| 南郑县| 监利县| 梅河口市| 会同县| 长岭县| 汉阴县| 微山县| 天水市| 宁陵县| 昌吉市| 黑河市| 神农架林区| 报价| 安化县| 凤翔县| 清苑县| 金秀| 牡丹江市| 建平县| 井陉县|