Windows驱动开发学习笔记(三)—— 内核空间内核模块
生活随笔
收集整理的這篇文章主要介紹了
Windows驱动开发学习笔记(三)—— 内核空间内核模块
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Windows驅(qū)動開發(fā)學習筆記(三)—— 內(nèi)核空間&內(nèi)核模塊
- 內(nèi)核空間
- 實驗
- 第一步:編譯如下代碼
- 第二步:將 .sys 文件拷貝到虛擬機中
- 第三步:部署 .sys 文件并運行
- 第四步:創(chuàng)建一個任意進程
- 第五步:在 WinDbg 中查看新進程的高2G內(nèi)存
- 內(nèi)核模塊
- 驅(qū)動對象
- DRIVER_OBJECT
- LDR_DATA_TABLE_ENTRY
- 實驗
- 第一步:編譯如下代碼
- 第二步:將 .sys 文件拷貝到虛擬機中
- 第三步:部署 .sys 文件并運行
- 第四步:在 WinDbg 中查看驅(qū)動對象
- 第五步:通過雙向鏈表查看其它模塊的信息
- 總結(jié)
內(nèi)核空間
描述:兩個進程在低2G內(nèi)存空間中所對應的物理頁是不同的,但是在高2G內(nèi)存空間中所對應的物理頁幾乎是相同的(所有的進程共享同一個內(nèi)核空間)
實驗
第一步:編譯如下代碼
#include "ntddk.h"//卸載函數(shù) VOID DriverUnload(PDRIVER_OBJECT driver) {DbgPrint("驅(qū)動程序已停止.\r\n"); }ULONG x = 0x12345678;//驅(qū)動程序入口函數(shù),相當于控制臺的main函數(shù) NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath) {DbgPrint("驅(qū)動程序已運行.\r\n");DbgPrint("%x . \r\n", &x);//設置一個卸載函數(shù) 便于退出DriverObject->DriverUnload = DriverUnload;return STATUS_SUCCESS; }第二步:將 .sys 文件拷貝到虛擬機中
第三步:部署 .sys 文件并運行
第四步:創(chuàng)建一個任意進程
本實驗采用飛鴿傳書(ipmsg.exe)
第五步:在 WinDbg 中查看新進程的高2G內(nèi)存
內(nèi)核模塊
描述:
驅(qū)動對象
DRIVER_OBJECT
在WinDbg中查看:
DriverStart:驅(qū)動模塊在內(nèi)核中的地址
DriverSize:驅(qū)動模塊在內(nèi)核中的大小
DriverName:驅(qū)動模塊在內(nèi)核中的名字
DriverSection:指向 _LDR_DATA_TABLE_ENTRY 結(jié)構(gòu)體
LDR_DATA_TABLE_ENTRY
描述:包含了當前內(nèi)核模塊的具體信息,以及其它內(nèi)核模塊的雙向鏈表
在WinDbg中查看:
InLoadOrderLinks:雙向鏈表,包含所有內(nèi)核模塊
DllBase:當前內(nèi)核模塊起始地址
SizeOfImage:當前內(nèi)核模塊的大小
FullDllName:當前內(nèi)核模塊的完整路徑
BaseDllName:當前內(nèi)核模塊的模塊名
實驗
第一步:編譯如下代碼
#include "ntddk.h"//卸載函數(shù) VOID DriverUnload(PDRIVER_OBJECT driver) {DbgPrint("驅(qū)動程序已停止.\r\n"); }//驅(qū)動程序入口函數(shù),相當于控制臺的main函數(shù) NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath) {DbgPrint("驅(qū)動程序已運行.\r\n");DbgPrint("%x . \r\n", DriverObject);//設置一個卸載函數(shù) 便于退出DriverObject->DriverUnload = DriverUnload;return STATUS_SUCCESS; }第二步:將 .sys 文件拷貝到虛擬機中
第三步:部署 .sys 文件并運行
第四步:在 WinDbg 中查看驅(qū)動對象
第五步:通過雙向鏈表查看其它模塊的信息
注意:遇到NULL則跳過
直到找到一個有效的內(nèi)核模塊
總結(jié)
總結(jié)
以上是生活随笔為你收集整理的Windows驱动开发学习笔记(三)—— 内核空间内核模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows驱动开发学习笔记(二)——
- 下一篇: Windows驱动开发学习笔记(四)——