《寒江獨釣-Windows內(nèi)核安全編程》,譚文等,電子工業(yè)出版社。學(xué)習(xí)筆記。
實例first項目目錄下有三個文件:
first.c
MAKEFILE
SOURCES
first.cDriverEntry()相當(dāng)于C中的main()
DriverUnload()在卸載驅(qū)動時做一些善后工作
這里什么都不做,只輸出兩條信息
另外,DbgPrint()函數(shù)的輸出信息在Dbgview上可以看到,但是我用WinDbg調(diào)試的時候,沒有看到輸出信息.
KdPrint()的輸出信息可以用WinDbg看到
--------------
呃,就在剛寫下上面這些話后,WinDbg中看到DbgPrint()的輸出了,之前關(guān)機時虛擬機中xp沒有關(guān),直接suspend,resume,當(dāng)然xp還是Debug模式,然后把WinDbg打開自動連上xp,然后就顯示了,不知道為什么- -!
//first
#include<ntddk.h>

VOID DriverUnload(PDRIVER_OBJECT driver)


{
DbgPrint("first:Our driver is unloading
\r\n");
}

NTSTATUS DriverEntry(PDRIVER_OBJECT driver,PUNICODE_STRING reg_path)


{
DbgPrint("first:Hello,Driver World!\r\n");

driver->DriverUnload = DriverUnload;

return STATUS_SUCCESS;
}
MAKEFILE這個MAKEFILE只能在xp下用,如果在其它操作系統(tǒng)下,參照WDK自帶示例中的MAKEFILE
!IF 0
Copyright (C) Microsoft Corporation,1999 - 2002
Module Name
makefile.
Notes:
DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source file to this component. This file merely indirects to the real makefile that is shared by all the componets of Windows NT (DDK)
!ENDIF
!INCLUDE $(NTMAKEENV)\makefile.def
SOURCES
很直白,不用解釋了.
注意一點,如果使用自定義的頭文件,像first.h,不要寫到SOURCES后面,編譯器會自己完成包含頭文件的工作
TARGETNAME = first
TARGETTYPE = DRIVER
SOURCES= first.c
軟件準(zhǔn)備用到的軟件: 建造環(huán)境WDK, 虛擬機VMare, 調(diào)試器WinDbg,安裝服務(wù)的小工具SRVINSTW
WDK微軟官網(wǎng)下,直接裝就行了
虛擬機VMare: 直接安裝
然后裝個xp系統(tǒng) File -> New -> Virtual Machine
xp設(shè)置成Debug模式啟動,方法是修改boot.int
給xp添加一個串口
調(diào)試器:安裝完成后,桌面建快捷方式,目標(biāo)路徑后添加以下內(nèi)容設(shè)置調(diào)試對象
-b -k com:port=\\.\pipe\com_1,baud=115200,pipe
安裝服務(wù)的小工具SRVINSTW
試一下上面的小程序1.建造sys文件: 打開x86 Checked Build Environment,進(jìn)到放firsr項目的路徑中,build,生成first.sys
2.安裝: 把first.sys拷貝到虛擬機,用SRVINSTW安裝

3.啟動服務(wù) cmd中輸入net start first
4.停止服務(wù) cmd中輸入net stop first
5.WinDbg中結(jié)果
