版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三篇網絡安全理論與技術實驗篇第十一章操作系統(tǒng)安全編程實驗11.1WDK的安裝調試網絡空間安全技術實踐教程111.1WDK的安裝調試實驗目的:
本實驗要求在Windows下安裝WDK,并且搭建驅動程序的調試環(huán)境,編譯出第一個運行在Windows內核中的驅動程序。網絡空間安全技術實踐教程211.1WDK的安裝調試實驗預備理論:(1)對于操作系統(tǒng)來說,什么是KernelMode,什么是UserMode?為了不讓程序任意存取資源,大部分的CPU架構都支持Kernelmode與Usermode兩種執(zhí)行模式。當CPU運行于Kernelmode時,任務可以執(zhí)行特權級指令,對任何I/O設備有全部的訪問權,還能夠訪問任何虛擬地址和控制虛擬內存硬件;這種模式對應x86的ring0層,操作系統(tǒng)的核心部分,包括設備驅動程序都運行在該模式。當CPU運行于UserMode時,硬件防止特權指令的執(zhí)行,并對內存和I/O空間的訪問操作進行檢查,如果運行的代碼不能通過操作系統(tǒng)的某種門機制,就不能進入內核模式;這種模式對應于x86的ring3層,操作系統(tǒng)的用戶接口部分以及所有的用戶應用程序都運行在該級別。 網絡空間安全技術實踐教程311.1WDK的安裝調試實驗預備理論:(2)驅動程序是什么?Windows驅動有幾種類型(例如NT/WDM等)?它一般運行在哪個Mode上?驅動程序是一種可以使計算機和設備通信的特殊程序,可以說相當于硬件的接口,操作系統(tǒng)只能通過這個接口,才能控制硬件設備的工作,假如某設備的驅動程序未能正確安裝,便不能正常工作。Windows驅動程序分為兩類,一類是不支持即插即用功能的NT式的驅動程序;另一類是支持即插即用功能的WDM式的驅動程序。他們都運行于kernelmode。
(3)Win32API是什么?x86是什么意思?x64又是什么意思?win32API是指微軟32位平臺的應用編程接口。 X86通常是指32位計算機系統(tǒng)。X64通常指64位計算機系統(tǒng)。網絡空間安全技術實踐教程411.1WDK的安裝調試實驗預備理論:(1)對于操作系統(tǒng)來說,什么是KernelMode,什么是UserMode?為了不讓程序任意存取資源,大部分的CPU架構都支持Kernelmode與Usermode兩種執(zhí)行模式。當CPU運行于Kernelmode時,任務可以執(zhí)行特權級指令,對任何I/O設備有全部的訪問權,還能夠訪問任何虛擬地址和控制虛擬內存硬件;這種模式對應x86的ring0層,操作系統(tǒng)的核心部分,包括設備驅動程序都運行在該模式。當CPU運行于UserMode時,硬件防止特權指令的執(zhí)行,并對內存和I/O空間的訪問操作進行檢查,如果運行的代碼不能通過操作系統(tǒng)的某種門機制,就不能進入內核模式;這種模式對應于x86的ring3層,操作系統(tǒng)的用戶接口部分以及所有的用戶應用程序都運行在該級別。 網絡空間安全技術實踐教程511.1WDK的安裝調試實驗要點說明:(實驗難點說明)安裝WDK編譯NT驅動中的HelloWorld!調試環(huán)境的配置網絡空間安全技術實踐教程611.1WDK的安裝調試實驗準備:(實驗環(huán)境,實驗先有知識技術說明)Host機:裝有WDKVersion7.1.0的Win7x64位操作系統(tǒng)(或裝有WDKVersion10.0.14393.0的Win10x64位操作系統(tǒng))WinDbg6.12.0002.633網絡空間安全技術實踐教程711.1WDK的安裝調試實驗準備:(實驗環(huán)境,實驗先有知識技術說明)虛擬機:裝有WDKVersion7600.16385.1的Windows7x64操作系統(tǒng)DriverMonitorVersion3.2.0DbgViewVersion4.76driversignatureenforcementoverriderVersion1.3b
網絡空間安全技術實踐教程811.1WDK的安裝調試實驗步驟:1)為Host機和虛擬機安裝WDK下面以為host機的Win7系統(tǒng)安裝WDK為例說明WDK安裝步驟。虛擬機的Win7系統(tǒng)中也需要安裝wdk,步驟一致,版本選7.6或8.1,可在Windows官網依據系統(tǒng)版本查找。
首先,利用百度搜索WDK,如圖11-1-1所示,進入官網下載wdk工具包,如圖11-1-2所示。下載后打開安裝包,開始安裝WDK7后,按照安裝提示點擊“下一步”即可完成安裝,如圖11-1-3所示。網絡空間安全技術實踐教程911.1WDK的安裝調試實驗步驟:2)第一個驅動程序的編譯
(1)新建DriverEntry.c文件在安裝WDK之后,我們就可以開始編譯驅動了。我們先在一個目錄下新建一個文件DriverEntry.c,內容如下:#include<ntddk.h>voidDriverUnload(PDRIVER_OBJECTdriver){//Donothing...}NTSTATUSDriverEntry(PDRIVER_OBJECTdriver,PUNICODE_STRINGreg_path){ DbgPrint("Hello,World!"); driver->DriverUnload=DriverUnload; returnSTATUS_SUCCESS;}網絡空間安全技術實踐教程1011.1WDK的安裝調試實驗步驟:2)第一個驅動程序的編譯DriverEntry是每個內核模塊的入口,在加載這個模塊時被系統(tǒng)進程System調用一次。DriverEntry好比控制臺的main函數,它的兩個參數類型為:PDRIVER_OBJECT和PUNICODE_STRING。對于前者,PDRIVER_OBJECT是時DRIVER_OBJECT結構的結構體指針,PDRIVER_OBJECT結構體中有一個重要的成員DriverUnload,它代表卸載該驅動程序的函數指針。我們設置了DriverUnload的函數指針,這樣這個模塊可以被動態(tài)地卸載,如果沒有設置,那么我們的驅動程序一旦加載就不能卸載了。NTSTATUS被定義為32位的無符號長整型。在驅動程序開發(fā)中,人們習慣用NTSTATUS返回狀態(tài)。其中0~0X7FFFFFFF被認為是正確的狀態(tài),而0X80000000~0XFFFFFFFF被認為是錯誤的狀態(tài)。我們通常用NT_SUCCESS這個宏來判定函數返回的狀態(tài)是否正確。網絡空間安全技術實踐教程1111.1WDK的安裝調試實驗步驟:2)第一個驅動程序的編譯PUNICODE_STRING是UNICODE_STRING的結構體指針。UNICODE_STRING在內核中是一個最基礎的結構,其結構體如下:typedefstruct_UNICODE_STRING{USHORTLength;USHORTMaximumLength;PWSTRBuffer;}UNICODE_STRING,*PUNICODE_STRING;Buffer為字符串指針,Length成員表示字符串的當前長度,MaximumLength成員表示該字符串允許的最大長度。這樣的設計雖然占用空間,但是保證了字符操作的安全性。請注意,在Buffer成員不一定以\0結尾,這一點在文件系統(tǒng)的緩沖路徑中尤其明顯。PUNICODE_STRINGreg_path表示該驅動的注冊路徑,詳情大家可以自行查詢。網絡空間安全技術實踐教程1211.1WDK的安裝調試實驗步驟:2)第一個驅動程序的編譯(2)新建makefile文件下面我們在DriverEntry.c的同一目錄下新建makefile文件,內容為:!INCLUDE$(NTMAKEENV)\makefile.def保存即可。網絡空間安全技術實踐教程1311.1WDK的安裝調試實驗步驟:2)第一個驅動程序的編譯(3)新建sources文件在同一目錄下創(chuàng)建sources文件,內容為:TARGETNAME=HELLOWORLDTARGETTYPE=DRIVERSOURCES=DriverEntry.cTARGETNAME代表你輸出的驅動名稱,TARGETTYPE代表目標文件輸出類型,SOURCES代表要編譯的文件。如果有多個文件需要編譯,請使用\依次表示,如:TARGETNAME=HELLOWORLDTARGETTYPE=DRIVERSOURCES=DriverEntry.c\
Foo.c\
Bar.c網絡空間安全技術實踐教程1411.1WDK的安裝調試實驗步驟:2)第一個驅動程序的編譯(4)編譯驅動文件編譯程序時,首先要確定以上三個文件在同一路徑中,如圖11-1-4所示。選擇WDK菜單目錄中的Win7x64CheckedBuildEnvironment程序,如圖11-1-5所示。需要注意的是,這里不要選擇FreeBuildEnvironment,因為Free版驅動會抹去DbgPrint之類的調試輸出語句。通過cd命令將當前的目錄轉為我們自己的工程目錄中,輸入BLD命令(如圖11-1-6所示),即可編譯驅動,驅動編譯成功,得到最終的驅動文件HELLOWORLD.SYS。網絡空間安全技術實踐教程1511.1WDK的安裝調試實驗步驟:3)驅動的安裝以及觀察調試信息先從網上下載DriverMonitor工具(或者是同類軟件)及DbgView工具。前者負責加載、卸載驅動,后者用來觀察調試信息。我們的驅動適用于64位Windows7系統(tǒng),并且強烈建議您在虛擬機中安裝64位Windows7下進行測試,因為驅動程序一旦出錯,不像應用程序編程一樣只會彈一個錯誤對話框,絕大部分情況下會直接藍屏。網絡空間安全技術實踐教程1611.1WDK的安裝調試實驗步驟:3)驅動的安裝以及觀察調試信息
(1)系統(tǒng)中導入注冊表文件(reg)為了使得DbgView可以查看調試信息,我們先要導入一個reg文件,文件內容如下:
WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\DebugPrintFilter]
"DEFAULT"=dword:0000000f導入成功后,重新啟動電腦。網絡空間安全技術實踐教程1711.1WDK的安裝調試實驗步驟:3)驅動的安裝以及觀察調試信息
(2)安裝配置DbgView安裝完成DbgView工具后,打開DbgView,確保DbgView工具打開CaptureKernel(監(jiān)視核心),如下圖11-1-7所示。網絡空間安全技術實踐教程1811.1WDK的安裝調試實驗步驟:3)驅動的安裝以及觀察調試信息
(3)安裝配置SignDrv工具并對驅動簽名在64位操作系統(tǒng)下,驅動程序的加載需要簽名,所以我們這里使用SignDrv工具對我們的驅動程序進行本地簽名(此簽名只對本機系統(tǒng)有效,用作本地開發(fā)調試所用),使之我們的驅動能被系統(tǒng)加載。在管理員權限下打開此工具,如圖11-1-8所示。一路next,先選擇EnableTestMode,選擇Next,重新啟動電腦。如果計算機右下角發(fā)現(xiàn)了水印,則說明系統(tǒng)已進入測試模式(可以加載驅動)。再打開此工具,選擇SignaSystemFile,選擇我們自己的驅動程序加載簽名。網絡空間安全技術實踐教程1911.1WDK的安裝調試實驗步驟:3)驅動的安裝以及觀察調試信息
(4)安裝配置DriverMonitor工具并啟動、卸載驅動程序
接著,使用DriverMonitor工具,選擇File>OpenDriver后,打開自己的驅動程序,接著選擇File>StartDriver啟動驅動,觀察DbgView下的調試輸出語句,最后選擇File>StopDriver卸載驅動以及選擇File>RemoveServiceEntry做最后的清理工作。網絡空間安全技術實踐教程2011.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動動態(tài)調試驅動比較麻煩,這里介紹一個相對通用的調試方法——雙機調試驅動。(1)下載安裝配置WinDbg工具WDK工具包中已經有了WinDbg,點擊開始菜單->WindowsKits->WinDbg運行WinDbg(注意此時host機,虛擬機中都已安裝好WDK而安裝好的WDK中可以看到WinDbg界面),如下圖11-1-9所示。網絡空間安全技術實踐教程2111.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動(2)配置VMware管道虛擬串口調試機與被調試機用串口連接,但是在被調試機是虛擬機的情況下,就不可能用真正的串口來連接了,但是可以在虛擬機上生成一個用管道虛擬的串口。設置步驟如下:1>、虛擬機關閉狀態(tài)下,選擇編輯虛擬機設置。2>、選擇硬件選項卡,移除打印機,因為打印機占了一個串口,如果不刪除則需要使用COM_2作為命名管道。網絡空間安全技術實踐教程2211.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動3>、添加一個串行端口。在圖11-1-11中,點擊添加按鈕,在彈出窗口,選擇串行端口,單擊”下一步“按鈕,進入如圖11-1-12所示界面。接著,在圖11-1-13中,選擇輸出到命名管道,單擊“下一步”按鈕,進入如圖11-1-14所示界面。網絡空間安全技術實踐教程2311.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動在圖11-1-14中,設置如下:命名管道輸入:\\.\pipe\com_1該端是服務器。另一端是應用程序。勾上啟動時連接。單擊“完成”按鈕。回到圖11-1-15最初界面,勾選I/O模式,輪詢時主動放棄CPU(Y),點擊“確定”按鈕。網絡空間安全技術實踐教程2411.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動
(3)配置GuestOS的啟動項開啟虛擬機,進入系統(tǒng),配置GuestOSWin7系統(tǒng)的啟動項,具體配置步驟如下:1>、以管理員身份運行cmd。2>、鍵入bcdedit命令,查看當前啟動項,輸出如下:剛剛安裝的,一般只有一個標識為{current}的啟動加載器是當前的啟動配置。3>、建立一個新的啟動項。bcdedit/copy{current}/d"Windwos7"網絡空間安全技術實踐教程2511.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動
4>、設置新的啟動項。bcdedit/debugONbcdedit/bootdebugON5>、查看當前的調試配置:bcdedit/dbgsettings一般來說,會顯示出使用的第一個串口,波特率為115200bps,和期望的一致,不需要修改。6>、選擇菜單的超時,我設置為10秒:bcdedit/timeout107>、重新啟動,當需要調試時就用調試模式進入。網絡空間安全技術實踐教程2611.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動
(4)配置WinDbgWinDbg安裝在host上,下載安裝與調試機位數相同的WinDbg,然后對WinDbg配置,具體步驟如下:1>、設置調試機上WinDbg的啟動參數,使之連接一個管道,并把這個管道當作一個串口來處理,具體有2種方法:方法一:cmd窗口中,在windbg.exe所在路徑下執(zhí)行,windbg.exe-b-kcom:port=\\.\pipe\com_1,baud=115200,pipe。如圖11-1-23和11-1-24所示。首先在命令行下輸入cdC:\ProgramFiles(x86)\DebuggingToolsforWindows(x86);然后再輸入Windbg.exe-b-kcom:port=\\.\pipe\com_1,baud=115200,pipe即可。網絡空間安全技術實踐教程2711.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動方法二:在開始->程序->選擇WinDbg,單擊右鍵并選擇屬性如圖11-1-25所示,進入如圖11-1-26所示界面,在快捷方式屬性頁中,進入“目標”中的".....windbg.exe"后面增加前面的啟動參數,即在右側雙引號后面添加一個空格和參數-b–kcom:port=\\.\pipe\com_1,baud=115200,pipe,結果如圖11-1-27所示。注意:windbg.exe的全路徑一般是雙引號引住的,但是后面的命令行參數應該放在引號外。同時為避免每次重復都配置,將WinDbg添加至桌面快捷方式,如圖11-1-28所示。點擊運行WinDbg的快捷方式,得到如圖11-1-29所示界面。網絡空間安全技術實踐教程2811.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動
2>、為了能實現(xiàn)源代碼調試,必須設置符號文件路徑和源文件路徑。
符號文件路徑(SymbolFilePath)可以有多個,中間用分號分隔。WinDbg有一個強大的功能,可以自動到Microsoft的服務器上下載符號文件??梢栽赪inDbg界面file選項中找到設置“符號文件路徑”,在符號路徑下做設置,如圖11-1-30所示。在圖11-1-30中,路徑srv*c:\symbols*/download/symbols中c:\symbols為本地目錄,從服務器下載的符號會存儲在此目錄中,你可以設置為你想存放的目錄中。/download/symbols為服務器路徑。如果相關符號表沒有在本地目錄系找到的話,就會自動在指定的服務器下載。分號后面添加自定義驅動模塊的符號文件的路徑,設置要調試的源碼所在路徑即可。網絡空間安全技術實踐教程2911.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動等上述配置完成后,重新啟動虛擬機,在開機的Boot選項上選擇調試模式,打開上述WinDbg的快捷方式,如果出現(xiàn)如圖11-1-31的文字,則說明您的雙機調試終于配置成功了!如果看到WinDbg出現(xiàn)如下文字:nt!RtlpBreakWithStatusInstruction:fffff800`03e8c490ccint3請不要驚慌,int3表示一個軟件斷點中斷,我們輸入命令g即可讓虛擬機中的系統(tǒng)繼續(xù)運作。g命令即是運行網絡空間安全技術實踐教程3011.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動
(5)利用WinDbg調試驅動HELLOWORLD.sys接著,我們來講述一下如何用Windbg調試我們的驅動——以我們的HELLOWORLD.sys驅動為例子。比如我們想跟蹤一下DriverEntry這個函數,我們加入DbgBreakPoint()這個斷點函數,如下所示:DbgPrint("Hello,World!");DbgBreakPoint();driver->DriverUnload=DriverUnload;網絡空間安全技術實踐教程3111.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動
編譯驅動。接著在Windbg的File>SymbolSearchPath中填入srv*C:\symbols*/download/symbols;C:\Users\admin\Desktop\Driver\objchk_win7_amd64(為您的驅動編譯路徑)。如果是第一次操作,此時可能要等待一會Windbg下載一些符號表。接著,在File>SourceSearchPath中填入自己的源文件路徑,如C:\Users\admin\Desktop\Driver。上述操作完成后,我們在主機中的WinDbg命令輸入kd>后面輸入g,運行我們的驅動程序,在運行的瞬間虛擬機會停止響應(實際上是進入到了int3斷點中)。我們可以看到Windbg界面發(fā)生了變化,顯示以下代碼信息,如下圖11-1-32。網絡空間安全技術實踐教程3211.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動
(6)利用WinDbg查看驅動HELLOWORLD.sys運行時寄存器相關信息如果我們要查看當前的寄存器,在圖11-1-32的最下方的WinDbg命令行輸入框中,輸入命令。在windbg命令行輸入r命令:0:kd>rrax=0000000000000000rbx=fffffa8001b98cb0rcx=2799464012740000rdx=000000000000000drsi=fffffa8002157000rdi=000000000000000drip=fffff88002f6803arsp=fffff880045da830rbp=0000000000000000r8=0000000000000065r9=0000000000000003r10=0000000000000000r11=fffff880045da450r12=0000000000000001r13=ffffffff80000648r14=fffffa80020f17e0r15=000000000000001ciopl=0nvupeingnznaponccs=0010ss=0018ds=002bes=002bfs=0053gs=002befl=00000286網絡空間安全技術實踐教程3311.1WDK的安裝調試實驗步驟:4)雙機動態(tài)調試驅動
(6)利用WinDbg查看驅動HELLOWORLD.sys運行時結構體相關信息如果我們要查看某一個結構體的結果,可以使用dt命令,如下:0:kd>dtPDRIVER_OBJECTHE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學第四學年(教育學)教育行動研究試題及答案
- 2025-2026年六年級歷史(模塊測試)上學期期中測試卷
- 2025年大學醫(yī)學影像學(學術研究實務)試題及答案
- 2025年高職石油與天然氣(油氣技術推廣)試題及答案
- 2026年中職第二學年(中西面點工藝)西式糕點制作階段測試題及答案
- 2025年大學第三學年(康復治療學)康復工程基礎階段測試試題及答案
- 2026上半年外語(盧森堡語HSK四級)實戰(zhàn)技巧
- 深度解析(2026)《GBT 18294.2-2010火災技術鑒定方法 第2部分:薄層色譜法》
- 深度解析(2026)《GBT 18199-2000外照射事故受照人員的醫(yī)學處理和治療方案》
- 深度解析(2026)《GBT 17980.72-2004農藥 田間藥效試驗準則(二) 第72部分殺蟲劑防治旱地地下害蟲》
- 切爾諾貝利核電站事故工程倫理分析
- 初中地理七年級上冊第七章第四節(jié)俄羅斯
- 法院起訴收款賬戶確認書范本
- 課堂觀察與評價的基本方法課件
- 私募基金內部人員交易管理制度模版
- 針對低層次學生的高考英語復習提分有效策略 高三英語復習備考講座
- (完整)《走遍德國》配套練習答案
- 考研準考證模板word
- 周練習15- 牛津譯林版八年級英語上冊
- 電力電纜基礎知識課件
- 代理記賬申請表
評論
0/150
提交評論