注冊(cè)表保護(hù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
注冊(cè)表保護(hù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
注冊(cè)表保護(hù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
注冊(cè)表保護(hù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
注冊(cè)表保護(hù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

注冊(cè)表保護(hù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)摘要注冊(cè)表作為MicrosoftWindows操作系統(tǒng)的核心,控制著Windows整個(gè)系統(tǒng)的運(yùn)行,而MicrosoftWindows是目前應(yīng)用最廣泛,同時(shí)也是遭受惡意行為攻擊最多的操作系統(tǒng)。當(dāng)用戶在編輯注冊(cè)表的時(shí)候很容易破壞注冊(cè)表,結(jié)果會(huì)導(dǎo)致操作系統(tǒng)癱瘓,所以注冊(cè)表工具成為用戶的一種常用的工具軟件。因此本文通過(guò)監(jiān)視注冊(cè)表訪問(wèn)行為,利用Detours和VC提供的API函數(shù)完成應(yīng)用程序的編寫(xiě)對(duì)正常訪問(wèn)Windows注冊(cè)表行為建立正常檢測(cè)模型,從而來(lái)判斷對(duì)注冊(cè)表的訪問(wèn)行為是否偏離正常模型來(lái)檢測(cè)病毒和入侵行為。該課題從注冊(cè)表的常見(jiàn)編輯功能出發(fā),進(jìn)行集成化設(shè)計(jì),為用戶提供一種實(shí)用的注冊(cè)表工具軟件。該工具軟件是在VC6.0開(kāi)發(fā)環(huán)境下完成了主動(dòng)攔截注冊(cè)表訪問(wèn)并提示給用戶的主要功能。最后,通過(guò)測(cè)試,滿足了用戶常用需求。關(guān)鍵詞:注冊(cè)表,Detours,APIHook,WindowsiDesignandimplementationofregistryprotectionsystemAbstractTheRegistrycontrollingthewholerunningperformanceofsystemisthekernelofoperatingsystemofMicrosoftWindowswhichisthemostpopularbutsuffersfrommanymaliciousattacks.Theregistryistendingtobedestroyedwhenbeingeditedbyusers,andthiswillleadtotheCollapseofsystem,sotheregistrationisoftenusedbyusersasatool.Asaresult,inthispaper,wewillmonitortheregistrybehaviorbyprogrammingtheAPIfunctionprovidedbyVCandusingtheDetourstoformaDetectionmodel,itcancheckifthebehaviorsofeditingregistryarelegalanddetecttheintrusionbehavior.Thesubjectwillprovideuserswitharegistryeditingsoftwareintegratedwithnormaleditingfunctionsofregistry.ThesoftwareisdevelopedwithVC6.0whichhasthemainfunctionofactiveinterceptionofabnormaleditingbehaviorofregistry.Intheend,itistestedtoseeifitsatisfiestherequirementofusers.KeyWords:Registry;Detours;APIHook;Windowsii目錄摘要.................................................................................................................................................iAbstract................................................................................................................................................ii第一章引言..................................................................................................................................11.1注冊(cè)表產(chǎn)生的背景.................................................................................................................11.2課題研究的現(xiàn)狀....................................................................................................................11.3課題研究的方法.....................................................................................................................3第二章理論基礎(chǔ)................................................................................................................................42.1Windows2000/XP的物理文件構(gòu)成....................................................................................42.2五大注冊(cè)表根鍵的概述........................................................................................................52.2.1WindowsNT注冊(cè)表五大根鍵...................................................................................52.2.2Windows2000注冊(cè)表的五大根鍵............................................................................52.2.3WindowXP/2003注冊(cè)表的五大根鍵.........................................................................82.3Windows2000/XP/2003注冊(cè)表的五大根鍵解析...............................................................92.3.1HKEY_CLASSES_ROOT根鍵..................................................................................92.3.2HKEY_CURRENT_USER根鍵...............................................................................102.3.3HKEY_USERS根鍵.................................................................................................102.3.4HKEY_LOCAL_MACHINE根鍵...........................................................................152.3.5HKEY_CURRENT_CONFIG根鍵..........................................................................18第三章系統(tǒng)設(shè)計(jì)..............................................................................................................................193.1技術(shù)方案..............................................................................................................................193.2攔截模塊..............................................................................................................................203.2.1截獲部分....................................................................................................................203.2.2自定義函數(shù)模塊........................................................................................................203.3界面模塊..............................................................................................................................21第四章系統(tǒng)實(shí)現(xiàn)..............................................................................................................................224.1系統(tǒng)基本配置......................................................................................................................224.2系統(tǒng)關(guān)鍵代碼......................................................................................................................22iii4.2.1截獲部分.....................................................................................................................224.2.2設(shè)置全局鉤子............................................................................................................244.2.3自定義函數(shù)................................................................................................................25第五章系統(tǒng)測(cè)試..............................................................................................................................28第六章總結(jié)與展望..........................................................................................................................32參考文獻(xiàn)......................................................................................................................................33iv第一章引言1.1注冊(cè)表產(chǎn)生的背景在上個(gè)世紀(jì)90年代,計(jì)算機(jī)技術(shù)得到了飛速的發(fā)展,網(wǎng)絡(luò)及操作系統(tǒng)的處理能力得到了不斷的增強(qiáng),新的可用計(jì)算機(jī)處理的信息也是接連不斷,但是為了能更好地滿足用戶的需求,軟件和硬件的開(kāi)放性愈來(lái)愈強(qiáng),大家能夠按照自己的意志隨意定制自己的系統(tǒng)。操作系統(tǒng)的一個(gè)特點(diǎn)就是允許用戶按照自己的要求對(duì)計(jì)算機(jī)系統(tǒng)的硬件和軟件進(jìn)行各種各樣的配置。早期的圖形操作系統(tǒng),如Win3.x中,對(duì)軟硬件工作環(huán)境的配置是通過(guò)對(duì)擴(kuò)展名為.ini的文件進(jìn)行修改來(lái)完成的,但I(xiàn)NI文件管理起來(lái)很不方便,因?yàn)槊糠N設(shè)備或應(yīng)用程序都得有自己的INI文件,并且在網(wǎng)絡(luò)上難以實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)。為了克服上述這些問(wèn)題,在Windows95及其后繼版本中,采用了一種叫做“注冊(cè)表”的數(shù)據(jù)庫(kù)來(lái)統(tǒng)一進(jìn)行管理,將各種信息資源集中起來(lái)并存儲(chǔ)各種配置信息。按照這一原則,Windows各版本中都采用了將應(yīng)用程序和計(jì)算機(jī)系統(tǒng)全部配置信息容納在一起的注冊(cè)表,用來(lái)管理應(yīng)用程序和文件的關(guān)聯(lián)、硬件設(shè)備說(shuō)明、狀態(tài)屬性以及各種狀態(tài)信息和數(shù)據(jù)等。注冊(cè)表被稱(chēng)為Windows操作系統(tǒng)的核心[1][2],它實(shí)質(zhì)上是一個(gè)龐大的數(shù)據(jù)庫(kù),存放了關(guān)于計(jì)算機(jī)硬件的全部配置信息、系統(tǒng)和應(yīng)用軟件的初始化信息、應(yīng)用軟件和文檔文件的關(guān)聯(lián)關(guān)系、硬件設(shè)備的說(shuō)明以及各種狀態(tài)信息和數(shù)據(jù),包括Windows操作時(shí)不斷引用的信息。具體來(lái)說(shuō),在啟動(dòng)Windows時(shí),注冊(cè)表會(huì)對(duì)照已有硬件配置數(shù)據(jù),檢測(cè)新的硬件信息;系統(tǒng)內(nèi)核從注冊(cè)表中選取信息包括要裝入什么設(shè)備驅(qū)動(dòng)程序,以及按什么次序裝入,內(nèi)核傳回它自身的信息,例如版權(quán)號(hào);同時(shí)設(shè)備驅(qū)動(dòng)程序也向注冊(cè)表傳送數(shù)據(jù),并從注冊(cè)表接收裝入和配置參數(shù),一個(gè)好的設(shè)備驅(qū)動(dòng)程序會(huì)告訴注冊(cè)表它有使用什么系統(tǒng)資源,例如硬件中斷或DMA通道等,另外,設(shè)備驅(qū)動(dòng)程序還要報(bào)告所發(fā)現(xiàn)的配置數(shù)據(jù);為應(yīng)用程序或硬件的運(yùn)行提供增加新的配置數(shù)據(jù)的服務(wù)。1.2課題研究的現(xiàn)狀Windows的注冊(cè)表主要包含了五個(gè)方面的信息,即PC的全部硬件、軟件設(shè)置、當(dāng)前配置、動(dòng)態(tài)狀態(tài)及用戶特定設(shè)置等內(nèi)容,主要儲(chǔ)存在C:windows下的system.dat和user.dat兩個(gè)文件1中。由此可見(jiàn)注冊(cè)表是Windows系統(tǒng)的重中之重,稍有閃失,后果將是十分的嚴(yán)重。隨著經(jīng)濟(jì)的發(fā)展,越來(lái)越多的人用上了個(gè)人計(jì)算機(jī),并且連接了因特網(wǎng)。但安全的問(wèn)題也隨之而來(lái)。越來(lái)越多的病毒,木馬,惡意軟件,流氓程序以及間諜程序進(jìn)入個(gè)人電腦,對(duì)用戶造成巨大的損失。研究表明,上述程序多數(shù)運(yùn)行在Windows平臺(tái),并且通過(guò)修改注冊(cè)表達(dá)到隨機(jī)啟動(dòng)的目的。例如著名的冰河,BO2K等木馬。其實(shí),為了減少因?yàn)樯鲜霭踩L(fēng)險(xiǎn),注冊(cè)表有一些內(nèi)建的安全限制(比如注冊(cè)表默認(rèn)限制某些區(qū)域只能被特定用戶看到,例如HKLM\SAM和HKLM\SECURITY就只能被LocalSystem用戶看到)。但僅僅有這些安全措施還遠(yuǎn)遠(yuǎn)不能保證注冊(cè)表的安全,我們還應(yīng)該進(jìn)行更加嚴(yán)格的安全控制。目前對(duì)于注冊(cè)表訪問(wèn)操作的防護(hù)措施主要有以下四點(diǎn):1、設(shè)置對(duì)注冊(cè)表工具(Regedit.exe)的運(yùn)行限制保護(hù)注冊(cè)表不受未經(jīng)授權(quán)訪問(wèn)的做好辦法之一是讓惡意用戶根本無(wú)法訪問(wèn)注冊(cè)表。對(duì)于服務(wù)器來(lái)說(shuō),這意味著要嚴(yán)格控制服務(wù)器的物理安全,只允許管理員本地登錄。對(duì)于其他系統(tǒng),或者無(wú)法防止用戶本地登錄到服務(wù)器的情況下,則可以針對(duì)Regedit.exe和Reg.exe配置訪問(wèn)權(quán)限,使其更安全。另外,我們也可以嘗試從系統(tǒng)中刪除注冊(cè)表編輯器以及Reg命令,但這會(huì)導(dǎo)致其他問(wèn)題,造成管理員系統(tǒng)管理的麻煩,尤其是當(dāng)管理員需要從遠(yuǎn)程訪問(wèn)注冊(cè)表的時(shí)候,這樣的做法有些自斷后路。2、設(shè)置對(duì)注冊(cè)表鍵的訪問(wèn)權(quán)限對(duì)于注冊(cè)表的權(quán)限控制,我們還可以具體到對(duì)注冊(cè)表鍵的訪問(wèn)控制。對(duì)于注冊(cè)表鍵的權(quán)限設(shè)置,我們除了可以直接進(jìn)行權(quán)限的編輯外,還可以使用安全模板進(jìn)配置。使用恰當(dāng)?shù)陌踩0宀粌H可以鎖定對(duì)注冊(cè)表的訪問(wèn),而且不要擔(dān)心錯(cuò)誤的設(shè)置會(huì)導(dǎo)致系統(tǒng)無(wú)法啟動(dòng)或應(yīng)用程序無(wú)法運(yùn)行。不過(guò),通常情況下我們只是針對(duì)特定的注冊(cè)表鍵進(jìn)行權(quán)限控制,這時(shí)候只能通過(guò)直接進(jìn)行權(quán)限的編輯。具體方法是:運(yùn)行注冊(cè)表編輯器,找到要設(shè)置的鍵,用鼠標(biāo)右鍵單擊選擇“權(quán)限”,或者也可以首先選中該鍵然后從注冊(cè)表編輯器的“編輯”菜單中選擇“權(quán)限”也可,隨后會(huì)打開(kāi)“SAM的權(quán)限”對(duì)話框。和文件權(quán)限的設(shè)置一樣,我們可安裝需要添加或刪除組和用戶,選中某個(gè)對(duì)象,設(shè)置拒絕或者允許某個(gè)權(quán)限。3、安全設(shè)置控制對(duì)注冊(cè)表的遠(yuǎn)程訪問(wèn)Windows的注冊(cè)表不僅可本地訪問(wèn),還可遠(yuǎn)程訪問(wèn)。因此,攻擊者或者未經(jīng)授權(quán)的用戶2可能會(huì)像管理員一樣嘗試遠(yuǎn)程訪問(wèn)系統(tǒng)的注冊(cè)表,這無(wú)疑會(huì)帶來(lái)極大的安全風(fēng)險(xiǎn)。通常情況下,對(duì)于個(gè)人系統(tǒng)我們不會(huì)遠(yuǎn)程訪問(wèn)注冊(cè)表,那么就可以禁止注冊(cè)表的遠(yuǎn)程訪問(wèn)。4、部署審核監(jiān)視用戶對(duì)注冊(cè)表的操作審核是Windows系統(tǒng)的一項(xiàng)重要功能,就像對(duì)文件等其他系統(tǒng)項(xiàng)進(jìn)行審核一樣,我們也可注冊(cè)表的訪問(wèn)進(jìn)行審核。據(jù)此我們可了解到哪些用戶訪問(wèn)了注冊(cè)表,以及他對(duì)注冊(cè)表進(jìn)行了哪些操作。不過(guò),啟用對(duì)注冊(cè)表的審核后會(huì)耗費(fèi)一定的系統(tǒng)性能。所以建議,我們只選擇自己最關(guān)心的、必要的審核對(duì)象,以減少被寫(xiě)入安全日志中的數(shù)據(jù)流,以此減少對(duì)系統(tǒng)性能帶來(lái)的負(fù)擔(dān)。但是以上四點(diǎn)防護(hù)措施,對(duì)于那些對(duì)系統(tǒng)設(shè)置不是很了解的用戶很難達(dá)到預(yù)期的效果。因此通過(guò)相應(yīng)的軟件,可以攔截對(duì)注冊(cè)表的訪問(wèn),從根本上阻止惡意程序的運(yùn)行,以此達(dá)到保護(hù)用戶文件數(shù)據(jù)的目的。調(diào)查同時(shí)發(fā)現(xiàn),市場(chǎng)上已經(jīng)出現(xiàn)了同類(lèi)功能的產(chǎn)品,如:卡巴斯基、瑞星、360安全衛(wèi)士等??梢?jiàn)發(fā)展注冊(cè)表保護(hù)技術(shù)是有著很好的前景的。1.3課題研究的方法注冊(cè)表管理工具是建立在WindowsXP、Windows2000和Windows2003平臺(tái)上的應(yīng)用程序設(shè)計(jì)。要掌握注冊(cè)表各個(gè)根鍵所對(duì)應(yīng)的系統(tǒng)功能,要清楚的知道注冊(cè)表的數(shù)據(jù)類(lèi)型。要對(duì)注冊(cè)表的相應(yīng)的鍵值進(jìn)行準(zhǔn)確的讀取和寫(xiě)入,使用MicrosoftVisualC++6.0作為開(kāi)發(fā)工具,利用Detours和VC提供的API函數(shù)完成應(yīng)用程序的編寫(xiě)。主要運(yùn)用RegOpenKeyEx()、RegQueryValueEx()、RegSetValueEx()等函數(shù)來(lái)完成注冊(cè)表鍵值的讀寫(xiě)、創(chuàng)建與刪除,從而實(shí)現(xiàn)對(duì)系統(tǒng)設(shè)置。3第二章理論基礎(chǔ)2.1Windows2000/XP的物理文件構(gòu)成在講述Windows2000的物理文件構(gòu)成時(shí),必須提到一個(gè)概念,即配置單元文件[3]。在Windows2000注冊(cè)表編輯器中,文件菜單下有個(gè)“加載/卸載文件配置單元”選項(xiàng)。所謂的配置單元是作為文件出現(xiàn)在硬盤(pán)上的注冊(cè)表的一部分。注冊(cè)表子樹(shù)被劃分成配置單元。配置單元是根鍵、子鍵和鍵值的離散體,它位于注冊(cè)表層的頂部配置單元受Systemroot\System32\Config或Systemroot\ProFile\Username文件夾中的單個(gè)文件和.log文件的支持。默認(rèn)情況下,大多數(shù)配置單元文件(Default、SAM、Security、Software和System)存儲(chǔ)在Systemroot文件夾。而每個(gè)計(jì)算機(jī)用戶的配置文件信息(包括Ntuser.dat和Ntuser.dat.log)的位置,取決于Windows2000是全新安裝還是從Windows95/98或從WindowsNT升級(jí)安裝。在全新安裝以及從Windows95/98升級(jí)安裝的情況下,Ntuser.dat和Ntuser.dat.log文件存儲(chǔ)在%SystemDrive%\DocumentsandSettings\Username文件夾中。在從WindowsNT升級(jí)的安裝中,Nturser.dat和Ntuser.dat.log文件存儲(chǔ)在%Systemroot%\ProFile\Username文件夾中。因?yàn)榕渲脝卧且粋€(gè)文件,所以它可以從一個(gè)系統(tǒng)移動(dòng)到另一個(gè)系統(tǒng)。但是,你必須使用注冊(cè)表編輯器編輯該文件。Windows2000注冊(cè)表中的每個(gè)配置單元均與一組標(biāo)準(zhǔn)文件相關(guān)聯(lián)。如下表2.1所示顯示運(yùn)行Windows2000的計(jì)算機(jī)的標(biāo)準(zhǔn)配置單元和文件。WindowsXP注冊(cè)表物理文件構(gòu)成與Windows2000基本相同。知道Windows注冊(cè)表物理文件的構(gòu)成及保存位置對(duì)于注冊(cè)表的備份和恢復(fù)十分有用。因此,這里有必要介紹注冊(cè)表物理文件的另一個(gè)保存位置:Windows\Repair。這個(gè)文件夾中保存的是初始化注冊(cè)表的5個(gè)文件(System、Software、SAM、Security、Default),在因注冊(cè)表的無(wú)緣無(wú)故造成系統(tǒng)崩潰時(shí),將它們復(fù)制到System32\Config(先將備份后刪除)中可以來(lái)挽救系統(tǒng)。4表2.1配置單元與對(duì)應(yīng)的文件2.2五大注冊(cè)表根鍵的概述2.2.1WindowsNT注冊(cè)表五大根鍵WindowsNT的注冊(cè)表[4]只包含了五大根鍵,在注冊(cè)表編輯器的組織結(jié)構(gòu)中,去掉了HKEY_DYN_DATA根鍵,使注冊(cè)表編輯器開(kāi)始顯示為五大根鍵;以后基于NT的操作系統(tǒng)Windows2000/XP/2003也都顯示為五大根鍵。(1)HKEY_LOCAL_MACHINE:用于保存本機(jī)系統(tǒng)的信息,包含硬件與操作系統(tǒng)的數(shù)據(jù),如驅(qū)動(dòng)程序、系統(tǒng)配置信息等;(2)HKEY_CLASS_ROOT:用于保存與文件關(guān)聯(lián)有關(guān)的信息;(3)HKEY_CURRENT_CONFIG:保存與當(dāng)前的硬件配置文件有關(guān)的數(shù)據(jù);(4)HKEY_CURRENT_USER:保存與當(dāng)前登錄用戶有關(guān)的環(huán)境設(shè)置的數(shù)據(jù),包括桌面設(shè)置、網(wǎng)絡(luò)連接等;(5)HKEY_USERS:保存當(dāng)用戶登錄時(shí),所有必須載入的用戶配置文件數(shù)據(jù),包括缺省的配置文件和登錄者的環(huán)境配置文件。2.2.2Windows2000注冊(cè)表的五大根鍵像WindowsNT一樣,Windows2000的注冊(cè)表編輯器去掉了HKEY_DYN_DATA根鍵,只有HKEY_LOCAL_MACHINE、HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG、HKEY_USERS、HKEY_CURRENT_USER五個(gè)根鍵:5(1)HKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINE根鍵中保存的是用來(lái)控制系統(tǒng)和軟件的設(shè)置。由于這些設(shè)置是針對(duì)那些使用Windows系統(tǒng)的用戶而設(shè)置的,是一個(gè)公共配置信息,所以它與具體用戶無(wú)關(guān)。該根鍵包含下面五個(gè)子鍵:●HARDWARE子鍵該子鍵包含了系統(tǒng)使用的浮點(diǎn)處理器、串口等有關(guān)信息。在它下面保存了一些有關(guān)超文本終端、數(shù)字協(xié)處理器和串口等信息?!馭AM子鍵該子鍵已經(jīng)被系統(tǒng)保護(hù)起來(lái),我們不可能看到里面的內(nèi)容。●SECURITY子鍵該子鍵位于HKEY_LOCAL_MACHINE\Security分支上,該分支只是為將來(lái)的高級(jí)功能而預(yù)留的?!馭OFTWARE子鍵該子鍵中保留的是所有已安裝的32位應(yīng)用程序的信息。各個(gè)程序的控制信息分別安裝在相應(yīng)的子鍵中。由于不同的計(jì)算機(jī)安裝的應(yīng)用程序互不相同,因此這個(gè)子鍵下面的子鍵信息會(huì)有很大的差異?!馭YSTEM子鍵該子鍵保存的是啟動(dòng)時(shí)所使用的信息和修復(fù)系統(tǒng)時(shí)所需的信息,其中包括各個(gè)驅(qū)動(dòng)程序的描述信息和配置信息等。System子鍵下面有一個(gè)CurrentControlSet子鍵,系統(tǒng)在這個(gè)子鍵下保存了當(dāng)前的驅(qū)動(dòng)程序控制集的信息。(2)HKEY_CLASSES_ROOT根鍵在Windows2000中對(duì)HKEY_CLASSES_ROOT子樹(shù)做了改進(jìn)。HKEY_CLASSE_ROOT子樹(shù)與當(dāng)前注冊(cè)使用的用戶有關(guān),它實(shí)際上是HKEY_CURRENT_USER\SOFTWARE\Classes和HKEY_LOCAL_MACHINE\SOFTWARE\Classes的交集。如果兩者的內(nèi)容有沖突,則HKEY_CURRENT_USER\SOFTWARE\Classes優(yōu)先。這個(gè)新的特性在Windows2000中叫做“單用戶類(lèi)注冊(cè)”(Per-userClassRegistration)。單用戶類(lèi)注冊(cè)有如下的好處:●同一臺(tái)計(jì)算機(jī)上的不同用戶可以分別定制不同的系統(tǒng)配置例如,用戶甲安裝了ACDSee圖形軟件,將BMP文件與ACDSee圖形軟件建立關(guān)聯(lián)。而用戶乙安裝了PhotoShop圖形軟件,將BMP文件與PhotoShop圖形軟件建立關(guān)聯(lián),當(dāng)用戶6乙雙擊BMP文件時(shí),會(huì)自動(dòng)調(diào)用PhotoShop圖形軟件,而不會(huì)調(diào)用用戶安裝的ACDSee圖形軟件?!裉岣吡俗?cè)表的安全性使用單用戶類(lèi)注冊(cè),各個(gè)用戶有自己的HKEY_CLASSES_ROOT,不再需要通過(guò)修改HKEY_LOCAL_MACHINE/SOFTWARE/CLASSES來(lái)滿足自己的需求,這樣系統(tǒng)管理員可以提高HKEY_LOCAL_MACHINE/SOFTWARE/CLASSES的權(quán)限,禁止普通用戶修改它,而各個(gè)用戶之間更是不能修改對(duì)方的HKEY_CLASSES_ROOT。●支持漫游類(lèi)注冊(cè)在Windows2000中,提供了一個(gè)叫做“IntelliMirror”的功能。通過(guò)在服務(wù)器和客戶端同時(shí)使用IntelliMirror,用戶的數(shù)據(jù)、應(yīng)用程序和設(shè)置在所有的環(huán)境中都可以跟隨用戶漫游,這當(dāng)然包括了用戶的配置文件。HKEY_CLASSES_ROOT根鍵中記錄的是Windows操作系統(tǒng)中所有數(shù)據(jù)文件的信息,只要記錄不同文件的文件名后綴和與之對(duì)應(yīng)的應(yīng)用程序。在根鍵HKEY_CLASSES_ROOT中保存的信息與HKEY_LOCAL_MACHINE\SOFTWARE\Classes分支中保存的信息是一致的。(4)HKEY_USERS的根鍵HKEY_USERS根鍵中保存的是默認(rèn)用戶(.DEFAULT)、當(dāng)前登錄用戶與軟件的信息。它的下面有.DEFAULT、S-1-5-21-1229272821-436374067-1060284298-1000和S-1-5-21-1229272821-435374069-1060264298-1000_Classes三個(gè)子鍵,其中最重要是.DEFAULT子鍵。.DEFAULT子鍵的配置是針對(duì)未來(lái)將會(huì)被創(chuàng)建的新用戶的。新用戶根據(jù)默認(rèn)配置信息來(lái)生成自己的配置文件,該配置文件包括環(huán)境、屏幕、聲音等多種信息。(5)HKEY_CURRENT_USER根鍵HKEY_CURRENT_USER根鍵中保存的信息與HKEY_USERS\.DEFAULT分支中所保存的信息是相同的。任何對(duì)HKEY_CURRENT_USER根鍵中的信息的修改都會(huì)導(dǎo)致對(duì)HKEY_USERS\.Default中子鍵信息的修改,反之也是如此。72.2.3WindowXP/2003注冊(cè)表的五大根鍵我們知道,WindowsNT/2000都提供了兩個(gè)注冊(cè)表編輯器Regedit和Regedt32,二者在功能和組織體系上都有不同,在實(shí)際的注冊(cè)表編輯中也各有優(yōu)缺點(diǎn);從WindowsXP開(kāi)始,開(kāi)始將這兩個(gè)注冊(cè)表編輯器的功能合在了一起,所以?xún)烧咴诩?xì)節(jié)方面肯定有一些不同。但在WindowsXP同樣擁有五大根鍵,且根鍵的功能含義和映射關(guān)系都和Windows2000保持了一致。在注冊(cè)表物理文件的構(gòu)成上,也是一致的。再來(lái)看看每個(gè)根鍵單獨(dú)包含的信息:(1)HKEY_CLASSES_ROOT根鍵HKEY_CLASSES_ROOT根鍵包含了啟動(dòng)應(yīng)用程序所需的全部信息,其中包括:所有擴(kuò)展名以及應(yīng)用程序和文檔之間的關(guān)聯(lián)信息;所有驅(qū)動(dòng)程序的名字;當(dāng)作指針的字符串,指向它們代表的實(shí)際文件;類(lèi)標(biāo)識(shí)CLSID,這在訪問(wèn)子鍵信息時(shí)非常有用,因?yàn)閃indows中訪問(wèn)子鍵的信息都是用CLSID來(lái)代替的。這里的標(biāo)識(shí)在WindowsXP系統(tǒng)中是唯一的;DDE和OLE信息。對(duì)于每個(gè)文件關(guān)聯(lián)都可以使用DDE和OLE功能;應(yīng)用程序和文檔使用的圖標(biāo)。(2)HKEY_CURRENT_USER根鍵HKEY_CURRENT_USER根鍵用于管理與當(dāng)前登錄系統(tǒng)的用戶有關(guān)的信息,其中包括:用戶的桌面以及WindowsXP對(duì)用戶呈現(xiàn)的外觀和行為;與所有網(wǎng)絡(luò)設(shè)備的連接,如打印機(jī)、共享磁盤(pán)空間等資源;桌面程序項(xiàng)、應(yīng)用程序參數(shù)選擇項(xiàng)、屏幕顏色等其他一些個(gè)人偏好,還有安全權(quán)限等。(3)HKEY_LOCAL_MACHINE根鍵HKEY_LOCAL_MACHINE根鍵保存了運(yùn)行Windows的信息,包括應(yīng)用程序、驅(qū)動(dòng)程序以及硬件信息它有五個(gè)獨(dú)立的子鍵:①HARDWARE:其中保存了含有計(jì)算機(jī)硬件信息的子鍵,在啟動(dòng)系統(tǒng)時(shí),HARDWARE子鍵都被重新創(chuàng)建,這樣就很容易向系統(tǒng)中添加新硬件了。用戶對(duì)HARDWARE子鍵進(jìn)行的修改沒(méi)有任何意義也不會(huì)生效,更不用像通過(guò)其中的CPU信息實(shí)現(xiàn)超頻了。因?yàn)樗窍到y(tǒng)根據(jù)硬件信息在啟動(dòng)時(shí)自己填寫(xiě)的,而不是根據(jù)它的數(shù)據(jù)去啟動(dòng)硬件。②SAM:這是一個(gè)關(guān)于安全賬號(hào)管理器的子鍵,其中存儲(chǔ)著用戶信息和域信息。無(wú)論是哪種注冊(cè)表,SAM中的信息都是不可訪問(wèn)的,只能由系統(tǒng)管理員通過(guò)用戶管理器進(jìn)行管理。③SECURITY:這里的信息與本地安全性和用戶權(quán)限有關(guān),其中含有SAM子鍵的備份。8它也是用戶不能訪問(wèn)的,只能由系統(tǒng)管理員的管理工具修改。④SOFTWARE:其中包含了已經(jīng)安裝的系統(tǒng)軟件和用戶軟件信息。⑤SYSTEM:其中含有與系統(tǒng)啟動(dòng)、設(shè)備驅(qū)動(dòng)程序、服務(wù)和WindowsXP配置有關(guān)的信息。(4)HKEY_USERS根鍵HKEY_USERS根鍵中包含著所有用戶配置文件的當(dāng)前活動(dòng)用戶的信息。其中.DEFAULT是為那些沒(méi)有用戶配置文件的登錄用戶而設(shè)置的。HKEY_USERS中典型的用戶配置文件都包括如下一些子鍵:①AppEvents:其中的EventLabels包括與事件有關(guān)的信息,而Schemes則包括一些針對(duì)自己使用特定聲音方案的應(yīng)用程序的標(biāo)簽。②Console:包含缺省的命令提示符配置。③ControlPanel:包含控制面板上的小信息。④Environment:包含用戶環(huán)境信息。⑤KeyboardLayout:包含鍵盤(pán)配置信息。⑥Printers:包含與計(jì)算機(jī)相連的每一臺(tái)遠(yuǎn)程打印機(jī)的映射信息。⑦Software:包含系統(tǒng)中已安裝的軟件信息。⑧UNICODEProgramGroups:包含的是關(guān)于那些使用UNICODE的程序信息。(5)HKEY_CURRENT_CONFIG根鍵HKEY_CURRENT_CONFIG根鍵是HKEY_LOCAL_MACHINE中的內(nèi)容映射。如果系統(tǒng)中只有一個(gè)硬件配置,則其中的數(shù)據(jù)是和HKEY_LOCAL_MACHINE中一樣的。若系統(tǒng)中新建了一個(gè)硬件配置“(控制面板→系統(tǒng)→硬件配置文件)”,就會(huì)在HKEY_LOCAL_MACHINE中反映出來(lái),在啟動(dòng)時(shí)會(huì)選擇一種配置文件映射到HKEY_CURRENT_CONFIG中。2.3Windows2000/XP/2003注冊(cè)表的五大根鍵解析2.3.1HKEY_CLASSES_ROOT根鍵(1)擴(kuò)展名與應(yīng)用程序的對(duì)應(yīng)關(guān)系Windows所支持的文件類(lèi)型在HKEY_CLASSES_ROOT根鍵下定義。下表中列出了HKEY_CLASSES_ROOT根鍵中的文件擴(kuò)展名和文件類(lèi)型之間關(guān)系,如表2.2所示。9表2.2HKEY_CLASSES_ROOT和文件類(lèi)型之間的關(guān)系(2)特殊擴(kuò)展名與應(yīng)用程序的對(duì)應(yīng)關(guān)系我們?cè)谧?cè)表編輯器中可以發(fā)現(xiàn),HKEY_CLASSES_ROOT根鍵下的文件擴(kuò)展名前面有“+”符號(hào),而且在此文件擴(kuò)展名中沒(méi)有對(duì)應(yīng)的應(yīng)用程序。為了查明這些文件后綴與應(yīng)用程序之間的關(guān)系,我們必須單擊“+”一次或者幾次,才可以看到它們的關(guān)系。2.3.2HKEY_CURRENT_USER根鍵HKEY_CURRENT_USER根鍵中保存的信息(當(dāng)前用戶的子鍵信息)與HKEY_USERS\.Default分支中所保存的信息基本是相同的。任何對(duì)HKEY_CURRENT_USER根鍵中的信息的修改都會(huì)導(dǎo)致對(duì)HKEY_USER\.Default中子鍵信息的修改,反之也是如此。2.3.3HKEY_USERS根鍵(1)AppEvents子鍵10HKEY_USER根鍵中保存的默認(rèn)用戶,當(dāng)前登錄用戶與軟件的信息。HKEY_USERS\.DEFAULT\Software與HKEY_LOCAL_MACHINE\Software中保存的軟件信息相同。HKEY_CURRENT_USER\.DEFAULT下面有八個(gè)子鍵。其中除RemoteAccess子鍵外,下面是其中幾個(gè)系統(tǒng)預(yù)定義的子鍵。AppEvents:登錄已注冊(cè)的各種應(yīng)用事件。ControlPanel:與控制面板設(shè)置有關(guān)的內(nèi)容。KeyboardLayout:鍵盤(pán)設(shè)置信息。Software:軟件設(shè)置信息。.DEFAULT子鍵的配置是針對(duì)未來(lái)將會(huì)被創(chuàng)建的新?lián)碜o(hù)的。新用戶根據(jù)默認(rèn)用戶的配置信息來(lái)生成自己的配置文件,該配置文件包括環(huán)境、屏幕、聲音等多種信息。(2)ControlPanel子鍵ControlPanel子鍵位于HKEY_USEERS\.DEFAULT\ControlPanel分支上,它所包含的內(nèi)容與桌面、光標(biāo)、鍵盤(pán)、和鼠標(biāo)等設(shè)備有關(guān),改變它們的鍵值就將改變對(duì)應(yīng)的工作環(huán)境或參數(shù),如圖2.1所示的就是ControlPanel的子鍵結(jié)構(gòu)。在圖2.1中,我們可以看到,ControlPanel子鍵下面又有十幾個(gè)子鍵,根據(jù)系統(tǒng)配置和設(shè)置情況的不同,子鍵的數(shù)目也會(huì)不同。雖然ControlPanel子鍵中的鍵值與環(huán)境和特性有直接關(guān)系,但有很多參數(shù)的改變并不要求用戶通過(guò)修改注冊(cè)表來(lái)實(shí)現(xiàn),而只需通過(guò)“控制面板”即可進(jìn)行修改。也有一些環(huán)境特性的改變只能通過(guò)修改注冊(cè)表來(lái)實(shí)現(xiàn)。11圖2.1ControlPanel子鍵結(jié)構(gòu)●ControlPanel\Accessibility子鍵Accessibility子鍵包含了十個(gè)子鍵,多數(shù)子鍵在“控制面板”窗口的“輔助選項(xiàng)”圖標(biāo)中都有對(duì)應(yīng)的選項(xiàng)。這些子鍵的鍵值名中一般都有一個(gè)“On”。當(dāng)其鍵值為0時(shí),表示此設(shè)置無(wú)效;而當(dāng)其鍵值為1時(shí),則表示此設(shè)置生效?!馛ontrolPanel\Appearance子鍵該子鍵下的鍵值中列出了可供選擇的各種顏色和圖案。你可以在“控制面板”的“顯示屬性”對(duì)話框的“外觀”選項(xiàng)下的“方案”下拉菜單中,看到這些顏色和圖案的中文名稱(chēng)。在Appearance子鍵下還有一個(gè)Scheme子鍵,用于設(shè)置配色方案的,這些圖案使用十六進(jìn)制數(shù)值表示出來(lái)。●ControlPanel\Colors子鍵該子鍵用于設(shè)置桌面上各種項(xiàng)目顏色??梢栽凇翱刂泼姘濉钡摹帮@示屬性”對(duì)話框中的“外觀”選項(xiàng)下的“顏色”框內(nèi),看到這些項(xiàng)目所設(shè)置的顏色?!馛ontrolPanel\desktop子鍵該子鍵的鍵值列出了桌面和窗口的各種部件,如窗口邊界、標(biāo)題、圖標(biāo)、菜單、滾動(dòng)條、消息框的長(zhǎng)度、寬度和字體等數(shù)據(jù)。這些數(shù)據(jù)可以在“控制面板”的“顯示屬性”對(duì)話框中12進(jìn)行修改。●ControlPanel\InputMethod子鍵該子鍵的鍵值中記錄了輸入法切換熱鍵的有關(guān)數(shù)據(jù)。這些數(shù)據(jù)你可以在“控制面板→輸入法”對(duì)話框中的“熱鍵”選項(xiàng)下進(jìn)行修改?!馛ontrolPanel\International子鍵該子鍵的鍵值中登錄了表示時(shí)間的“上午”和“下午”的數(shù)據(jù)。這些數(shù)據(jù)可以在“控制面板”中打開(kāi)“區(qū)域設(shè)置”對(duì)話框中的“時(shí)間”選項(xiàng)下進(jìn)行修改?!馛ontrolPanel\Keyboard子鍵該子鍵的鍵值登錄了擊鍵時(shí)的重復(fù)延時(shí)和重復(fù)速率。這些數(shù)據(jù)可以在“控制面板”中打開(kāi)“鍵盤(pán)”對(duì)話框中的“速度”選項(xiàng)下進(jìn)行修改?!馛ontrolPanel\Mouse子鍵該子鍵的鍵值中登錄了鼠標(biāo)的雙擊速度和指針的移動(dòng)速度。這些數(shù)據(jù)可以在“控制面板”中打開(kāi)“鼠標(biāo)”對(duì)話框中的“按鈕”和“移動(dòng)”選項(xiàng)下修改。●ControlPanel\PowerCfg子鍵該子鍵用于設(shè)置電源管理的有關(guān)數(shù)據(jù)。這些數(shù)據(jù)可以在“控制面板”中打開(kāi)“電源管理”對(duì)話框中的“電源方案”選項(xiàng)進(jìn)行修改。(3)KeyboardLayout子鍵該子鍵位于HKEY_USERS\.DEFAULT\keyboardlayout分支上,用于設(shè)置鍵盤(pán)的布局,如鍵盤(pán)語(yǔ)言的加載順序等,如下圖2.2所示:該子鍵下面提供了如下三個(gè)子鍵:●Preload子鍵該子鍵位于HKEY_USERS\.DEFAULT\keyboardlayout\preload分支上,用于設(shè)置鍵盤(pán)語(yǔ)言的加載順序。Preload子鍵下面的子鍵個(gè)數(shù)與你在系統(tǒng)中所安裝的鍵盤(pán)語(yǔ)言有關(guān)?!馭ubstitutes子鍵該子鍵位于HKEY_USERS\.DEFAULT\keyboardlayout\substitutes分支,用于設(shè)置可替換的鍵盤(pán)語(yǔ)言布局。在通常情況下,此子鍵的設(shè)置是空的。13圖2.2KeyboardLayout子鍵●Toggle子鍵該子鍵位于HKEY_USERS\.DEFAULT\keyboardlayout\toggle分支上用于選擇鍵盤(pán)語(yǔ)言。(4)Software子鍵Software該子鍵對(duì)于不同的計(jì)算機(jī)其鍵值數(shù)據(jù)是不同的。此子鍵其實(shí)是HKEY_LOCAL_MACHINE\Software分支的一部分,由于Windows中文版內(nèi)嵌了許多Microsoft公司開(kāi)發(fā)的應(yīng)用程序,因此,該子鍵在注冊(cè)表中就顯得十分重要。通過(guò)修改該子鍵下的子鍵,就可以實(shí)現(xiàn)Windows的某些重要功能。●Software\Microsoft子鍵該子鍵用于設(shè)置Microsoft公司開(kāi)發(fā)的應(yīng)用程序鍵值數(shù)據(jù)。●Microsoft\InternetAccountManager子鍵在個(gè)人用戶計(jì)算機(jī)上,該子鍵位于HKEYY_CURRENT_USER\Software\Micro-soft\InternetAccountManager分支上,而不存在于HKEY_USERS相應(yīng)的位置Internet賬號(hào)管理器(InternetAccountManager)。142.3.4HKEY_LOCAL_MACHINE根鍵HKEY_LOCAL_MACHINE根鍵中存放的是用來(lái)控制系統(tǒng)和軟件的設(shè)置。它是一個(gè)公共配置信息,只須做了解就可以了。HKEY_LOCAL_MACHINE包括了五個(gè)子鍵,如圖2.3所示。圖2.3HKEY_LOCAL_MACHINE根鍵HARDWARE子鍵:該子鍵下面存放一些有關(guān)超文本終端、數(shù)學(xué)協(xié)處理器和串口等信息。HARDWARE子鍵下面包括了兩個(gè)子鍵DEVICEMAP(用于存放設(shè)備映象)、DESCRIPTION(存放有關(guān)系統(tǒng)信息)。DEVICEMAP子鍵的層次結(jié)構(gòu)如下:HKEY_LOCAL_MACHINE\HARDWAREHKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAPHKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM在HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM分支下面包括如下設(shè)置內(nèi)容:COM1=COM1:指定COM1端口。COM2=COM2:指定COM2端口。DESCRIPTION子鍵的層次結(jié)構(gòu)如下:HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAPHKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\System15HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\System\FloatingPointProcessorHKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\System\FloatingPointProcessor\0SAM子鍵:系統(tǒng)自動(dòng)將其保護(hù)起來(lái)。SECURITY子鍵:包含了安全設(shè)置的信息,同樣也讓系統(tǒng)保護(hù)起來(lái)。SOFTWARE子鍵:包含了系統(tǒng)軟件,當(dāng)前安裝的應(yīng)用軟件及用戶的有關(guān)信息。SYSTEM子鍵:該子鍵存放的是啟動(dòng)時(shí)所使用的信息和修復(fù)系統(tǒng)說(shuō)所需的信息,其中包括各個(gè)驅(qū)動(dòng)程序的描述信息和配置信息等。System子鍵下面只有一個(gè)CurrentControlSet子鍵,系統(tǒng)在這個(gè)子鍵下保存了當(dāng)前的驅(qū)動(dòng)程序控制集的信息。這里介紹的是CurrentControlSet子鍵下面的Control和Services子鍵。(1)Control子鍵這個(gè)子鍵中保存的是由控制面板中各個(gè)圖標(biāo)程序設(shè)置的信息。由于控制面板中的各個(gè)圖標(biāo)程序可能會(huì)把信息寫(xiě)在不同的子鍵下,所以用戶最好不要通過(guò)注冊(cè)表編輯器來(lái)修改這些信息,否則容易引起系統(tǒng)死機(jī)?!馛ontrol\Fontassoc子鍵該子鍵存放的是有關(guān)字體設(shè)置信息(如卻省字體、替代字體以及字體集等)。在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Fontassoc分支下還有Associated、DefaultFonts、AssociatedCharSet兩個(gè)子鍵。●Control\Nls子鍵該子鍵在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls分支中,它是用來(lái)設(shè)置Windows的語(yǔ)言特性,如代碼頁(yè)、EUDC內(nèi)碼范圍、語(yǔ)言分類(lèi)等。●Control\MediaProperties子鍵該子鍵用于設(shè)置多媒體屬性?!馛ontrol\FileSystem子鍵該子鍵主要對(duì)Windows的NTFS及Windows3.1、Windows9x文件系統(tǒng)進(jìn)行設(shè)置?!馛ontrol\KeyboardLayouts子鍵該子鍵主要對(duì)Windows的鍵盤(pán)布局或者鍵盤(pán)語(yǔ)言進(jìn)行設(shè)置。該子鍵下面包括多個(gè)關(guān)于鍵盤(pán)語(yǔ)言的子鍵,這些子鍵使用數(shù)值表示出來(lái)。16●Control\Update子鍵該子鍵用于確定“控制面板”窗口是否被刷新,此子鍵的功能與“控制面板”窗口中的“查看”菜單中的“刷新”相同?!馛ontrol\TimeZoneInformation子鍵該子鍵用于設(shè)置時(shí)區(qū)信息?!馛ontrol\Print子鍵該子鍵用于設(shè)置打印機(jī)?!馛ontrol\IDConfigDB子鍵該子鍵用于顯示硬件配置文件的配置數(shù)據(jù)、配置名稱(chēng)等其他信息。●Control\ComputerName子鍵該子鍵下面具有如下分層結(jié)構(gòu):HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerNameHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName該子鍵用于設(shè)置計(jì)算機(jī)名稱(chēng)。(2)Services子鍵該子鍵位于HKEY_LOCAL_MACHINE\System\CurrentControlSet\Service分支上。該子鍵中存放了Windows中各項(xiàng)服務(wù)的信息,有些是自帶的,有些是隨后安裝的。在該子鍵下面的每個(gè)子鍵存放相應(yīng)服務(wù)的配置和描述信息。●Services\Class子鍵該子鍵中保存的是Windows支持的不同種類(lèi)硬件的信息,它下面的子鍵與“控制面板”中添加新硬件的分類(lèi)類(lèi)似?!馭ervices\VxD子鍵該子鍵位于HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD分支上。該子鍵保存了Windows中所有虛擬設(shè)備驅(qū)動(dòng)的信息。由于Windows系統(tǒng)能夠自動(dòng)管理這些信息,因此,在通常情況下最好不要通過(guò)注冊(cè)表編輯器來(lái)修改這些信息;但了解此子鍵下的信息是有好處的,因?yàn)橛幸恍┕δ?日撥號(hào)網(wǎng)絡(luò)提速)必須修改此子鍵下的信息。●Services\RemoteAccess子鍵該子鍵位于HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\RemoteAccess17分支上,存放的是和Windows撥號(hào)網(wǎng)絡(luò)有關(guān)的信息?!馭ervices\WinSock2子鍵該子鍵位于HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WinSock2分支上,用于存放與Internet連接時(shí)WinSock2.0版本的有關(guān)信息。2.3.5HKEY_CURRENT_CONFIG根鍵如果在Windows中設(shè)置了兩套或者兩套以上的硬件配置文件(HardwareConfigurationfile),則在系統(tǒng)啟動(dòng)時(shí)將會(huì)讓用戶選擇使用哪套配置文件。而HKEY_CURRENT_CONFIG根鍵中存放的正是當(dāng)前配置文件的所有信息,如圖2.4所示。在Windows系統(tǒng)啟動(dòng)以后,任何對(duì)配置文件的修改都會(huì)同時(shí)影響到HKEY_LOCAL_MACHINE\Config分支、HKEY_LOCAL_MACHINE\Enum分支和HKEY_CURRENT_CONFIG中的相應(yīng)內(nèi)容。圖2.4HKEY_CURRENT_CONFIG根鍵18第三章系統(tǒng)設(shè)計(jì)3.1技術(shù)方案設(shè)計(jì)使用VisualC++6.0作為開(kāi)發(fā)工具[5][6][7],因?yàn)槠渥鳛镸icrosoft的重要開(kāi)發(fā)工具,強(qiáng)大的開(kāi)發(fā)功能勿庸置疑的,所以它也一直被程序員大為推崇。特別是MFC的功能日漸強(qiáng)大,使程序的開(kāi)發(fā)速度、效率大大提高。由于該程序主要是通過(guò)對(duì)注冊(cè)表的查詢(xún)、修改、和創(chuàng)建等一些操作,來(lái)完成對(duì)系統(tǒng)設(shè)置的改變。因此使用VC能非常方便的完成這些操作。在VC中可通過(guò)MFC訪問(wèn)注冊(cè)表,也可以通過(guò)API函數(shù)操作注冊(cè)表[8]。本程序主要使用的API函數(shù)來(lái)完成對(duì)注冊(cè)表的操作。這是因?yàn)镸FC提供的訪問(wèn)注冊(cè)表的函數(shù)[9],雖然操作起來(lái)很方便,但功能有限。軟件系統(tǒng)整體主要分為攔截處理模塊和界面模塊。攔截模塊主要由截獲和自定義函數(shù)組成。系統(tǒng)結(jié)構(gòu)如圖3.1所示。圖3.1系統(tǒng)結(jié)構(gòu)在Windows中,系統(tǒng)調(diào)用有多套。最重要的是兩套系統(tǒng)調(diào)用分別是內(nèi)核例程(提供給驅(qū)動(dòng)程序)[10]、Win32API(提供給Win32應(yīng)用程序)[11]。本軟件主要采用的是Win32API的19系統(tǒng)調(diào)用。3.2攔截模塊3.2.1截獲部分本軟件主要采用的是Win32API的系統(tǒng)調(diào)用,即在用戶層進(jìn)行攔截[12];所以不需要驅(qū)動(dòng)程序,用微軟開(kāi)發(fā)的Detours函數(shù)庫(kù)就可以達(dá)到截獲功能。Detours定義了三個(gè)概念:(1)Target函數(shù):要攔截的函數(shù),通常為Windows的API。(2)Trampoline函數(shù):Target函數(shù)的復(fù)制品。因?yàn)镈etours將會(huì)改寫(xiě)Target函數(shù),所以先把Target函數(shù)復(fù)制保存好,一方面仍然保存Target函數(shù)的過(guò)程調(diào)用語(yǔ)義,另一方面便于以后的恢復(fù)。(3)Detours函數(shù):用來(lái)替代Target函數(shù)的函數(shù)。Detours在Target函數(shù)的開(kāi)頭加入JMPAddress_of_Detour_Function指令(共5個(gè)字節(jié))把對(duì)Target函數(shù)的調(diào)用引導(dǎo)到自己的Detour函數(shù)[13],把Target函數(shù)的開(kāi)頭的5個(gè)字節(jié)加上JMPAddress_of_Target_Function+5作為T(mén)rampoline函數(shù)。Detours庫(kù)可以攔截任意的API調(diào)用,攔截代碼是在動(dòng)態(tài)運(yùn)行時(shí)加載的[14]。Detours替換目標(biāo)API最前面的幾條指令,使其無(wú)條件的跳轉(zhuǎn)到用戶提供的攔截函數(shù)。被替換的API函數(shù)的前幾條指令被保存到Trampoline函數(shù)(就是內(nèi)存中一個(gè)數(shù)據(jù)結(jié)構(gòu))中。Trampoline保存了被替換的目標(biāo)API的前幾條指令和一個(gè)無(wú)條件轉(zhuǎn)移,轉(zhuǎn)移到目標(biāo)API余下的指令。3.2.2自定義函數(shù)模塊在注冊(cè)表的訪問(wèn)操作被攔截后,Detours[15][16]替換目標(biāo)API最前面的幾條指令,使其無(wú)條件的跳轉(zhuǎn)到軟件系統(tǒng)的自定義函數(shù)。操作流程:先將需要操作的子鍵打開(kāi)。一般用RegOpenKeyEx()來(lái)完成;若該子鍵不存在,則需要用RegCreateKey()或者RegCreateKeyEx(),這兩個(gè)函數(shù)的作用是用于創(chuàng)建指定鍵,若該鍵已存在就打開(kāi)它。調(diào)用RegQueryValueEx()函數(shù)來(lái)獲取一個(gè)指定值名稱(chēng)的類(lèi)型和數(shù)據(jù),該指定值名稱(chēng)與一個(gè)打開(kāi)的鍵相聯(lián)系。調(diào)用RegSetValueEx()用于在一個(gè)鍵下設(shè)置一個(gè)指定值的數(shù)據(jù)和類(lèi)型。203.3界面模塊目前界面編程技術(shù)包括MFC、n32SDK、CJLibrary、WTL以及一些界面開(kāi)發(fā)包。本軟件程序采用的是MFC界面編程技術(shù)。21第四章系統(tǒng)實(shí)現(xiàn)4.1系統(tǒng)基本配置該系統(tǒng)只能針對(duì)特定的注冊(cè)表鍵值進(jìn)行監(jiān)控,在運(yùn)行前須選擇要監(jiān)控的注冊(cè)表項(xiàng),具體操作如圖4.1所示:圖4.1指定被監(jiān)視鍵值在【阻止指定鍵值被修改】選項(xiàng)中,用戶可以根據(jù)需求選擇要被監(jiān)視的鍵值。4.2系統(tǒng)關(guān)鍵代碼4.2.1截獲部分以下代碼主要完成對(duì)注冊(cè)表鍵值的添加、修改和刪除操作的攔截功能。Detours庫(kù)可以攔截任意的API調(diào)用,攔截代碼是在動(dòng)態(tài)運(yùn)行時(shí)加載的。Detours替換目標(biāo)API最前面的幾條指令,使其無(wú)條件的跳轉(zhuǎn)到用戶提供的攔截函數(shù)[17]。22LongIntercept(){DetourTransactionBegin();DetourUpdateThread(GetCurrentThread());}ATTACH(&(PVOID&)Real_RegCreateKeyExA,Mine_RegCreateKeyExA);ATTACH(&(PVOID&)Real_RegCreateKeyExW,Mine_RegCreateKeyExW);ATTACH(&(PVOID&)Real_RegSetValueExA,Mine_RegSetValueExA);ATTACH(&(PVOID&)Real_RegSetValueExW,Mine_RegSetValueExW);ATTACH(&(PVOID&)Real_RegDeleteKeyA,Mine_RegDeleteKeyA);ATTACH(&(PVOID&)Real_RegDeleteKeyW,Mine_RegDeleteKeyW);ATTACH(&(PVOID&)Real_RegDeleteValueA,Mine_RegDeleteValueA);ATTACH(&(PVOID&)Real_RegDeleteValueW,Mine_RegDeleteValueW);ATTACH(&(PVOID&)Real_RegQueryValueExA,Mine_RegQueryValueExA);ATTACH(&(PVOID&)Real_RegQueryValueExW,Mine_RegQueryValueExW);ATTACH(&(PVOID&)Real_PostQuitMessage,Mine_PostQuitMessage);returnDetourTransactionCommit();longUnIntercept(){DetourTransactionBegin();DetourUpdateThread(GetCurrentThread());DETACH(&(PVOID&)Real_RegCreateKeyExA,Mine_RegCreateKeyExA);DETACH(&(PVOID&)Real_RegCreateKeyExW,Mine_RegCreateKeyExW);DETACH(&(PVOID&)Real_RegSetValueExA,Mine_RegSetValueExA);DETACH(&(PVOID&)Real_RegSetValueExW,Mine_RegSetValueExW);23DETACH(&(PVOID&)Real_RegDeleteKeyA,Mine_RegDeleteKeyA);DETACH(&(PVOID&)Real_RegDeleteKeyW,Mine_RegDeleteKeyW);DETACH(&(PVOID&)Real_RegDeleteValueA,Mine_RegDeleteValueA);DETACH(&(PVOID&)Real_RegDeleteValueW,Mine_RegDeleteValueW);DETACH(&(PVOID&)Real_RegQueryValueExA,Mine_RegQueryValueExA);DETACH(&(PVOID&)Real_RegQueryValueExW,Mine_RegQueryValueExW);DETACH(&(PVOID&)Real_PostQuitMessage,Mine_PostQuitMessage);}returnDetourTransactionCommit();4.2.2設(shè)置全局鉤子設(shè)置全局鉤子進(jìn)行截獲應(yīng)用程序的函數(shù)調(diào)用,通過(guò)APIHook,改變一個(gè)系統(tǒng)API的原有功能?;镜姆椒ň褪峭ㄟ^(guò)hook“接觸”到需要修改的。API函數(shù)入口點(diǎn),改變它的地址指向新的自定義的函數(shù)。比如RegOpen這個(gè)函數(shù)[18][19],前面detour那段攔截代碼處理以后,被截獲的程序如果再調(diào)用RegOpen,則調(diào)用的是已經(jīng)替換以后的函數(shù)[20]。LRESULTCALLBACKMyShellProc(intnCode,WPARAMwParam,LPARAMlParam){test++;if(test>255){}printf("Hookinthebeginning");if(bTryed==false){bTryed=true;Intercept();24test=1;}}printf("Hookcomplete");bIntercepted=true;return::CallNextHookEx(hhook,nCode,wParam,lParam);extern"C"__declspec(dllexport)BOOLInstallHook(HWNDhandle){0);}4.2.3自定義函數(shù)截獲以后替換原來(lái)函數(shù)的自定義函數(shù)[20],在對(duì)注冊(cè)表的操作被截獲后,根據(jù)用戶的需要所執(zhí)行的操作。LONGWINAPIMine_RegDeleteValueA({stringkey=getFilterStringA(hKey,lpValueName);if(filterQueryA(key))25printf("HookinthebeginningofinstallHook");hhook=::SetWindowsHookEx(WH_SHELL,MyShellProc,GetModuleHandle("hook.dll"),hWnd=handle;RegMonPID=GetCurrentProcessId();returnhhook>0;HKEYhKey,LPCSTRlpValueName)LONGnRet;boolask=false;{}ask=true;__try{if(!ask)nRet=Real_RegDeleteValueA(hKey,lpValueName);if(!HOOK_RegDeleteValue)returnnRet;if(GetCurrentProcessId()==ExplorerPID)returnnRet;if(GetCurrentProcessId()==RegMonPID)returnnRet;if((PID==0)||((GetCurrentProcessId()==PID)&&(PID>0))){if(lpValueName==NULL)returnnRet;COPYDATASTRUCTdata;PARAMSparams={0};params.PID=GetCurrentProcessId();params.hKey=hKey;memcpy(params.buffer1,lpValueName,strlen(lpValueName));data.cbData=sizeof(PARAMS);data.lpData=¶ms;data.dwData=TYPE_RegDeleteValueA;//memcpy(params.buffer1,key.c_str(),strlen(key.c_str()));if(ask){stringmsg;26msg="截獲注冊(cè)表刪除鍵值操作,要?jiǎng)h除的注冊(cè)表鍵為";msg+=key;msg+="\n";msg+="要阻止該操作嗎";if(::MessageBox(NULL,msg.c_str(),"截獲通知",MB_YESNO)==IDYES){}else{}SendMessage(hWnd,WM_COPYDATA,(WPARAM)hWnd,params.reject=false;nRet=Real_RegDeleteValueA(hKey,lpValueName);params.reject=true;(LPARAM)&data);//SendMessage(hWnd,WM_NOTIFY_USER,(WPARAM)hWnd,()lpValueName);}}}__finally{};returnnRet;}27第五章系統(tǒng)測(cè)試通過(guò)應(yīng)用程序PPLiveva_setup_ikan.exe對(duì)程序進(jìn)行測(cè)試的結(jié)果表明,該程序達(dá)到主動(dòng)攔截注冊(cè)表訪問(wèn)并提示給用戶的功能。該測(cè)試主要是針對(duì)注冊(cè)表進(jìn)行插入鍵值和刪除鍵值的操作。以下為測(cè)試過(guò)程圖:1.在【阻止指定鍵值被修改】選項(xiàng)中選擇要監(jiān)視的注冊(cè)表鍵值(主要是關(guān)聯(lián)系統(tǒng)啟動(dòng)項(xiàng)的鍵值,也是最容易受惡意軟件更改的鍵值)如圖5.1所示:HYPERLINK"/retype/zoom/d9ed13f8941ea76e58fa0411?pn=32&x=0&y=1276&raww=779&rawh=431&o=png_6_0_0_117_470_722_399_893.25_1263.375&type=pic

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論