原创 filedisk 源碼解析

文章目錄filedisk 源碼解析1. 原理2. 框架3. 驅動源碼3.1 DriverEntry3.2 FileDiskDeviceControl3.2.1 IOCTL_DISK_CHECK_VERIFY3.2.2 IOCTL_

原创 Windows驅動之取消安全隊列

文章目錄Windows驅動之取消安全隊列1. IO_CSQ2. IoCsqInitialize3. IoCsqInsertIrp4. IoCsqRemoveNextIrp5. IRP的取消6. 總結 Windows驅動之取消安全隊

原创 Windows驅動之SetupDi系列函數

文章目錄SetupDi系列函數進行設備信息的管理1. SetupDiGetClassDevs1.1 枚舉設備信息1.2 參數說明1.3 返回值1.4 原理2. SetupDiEnumDeviceInfo2.1 枚舉成員2.2 參數

原创 Windows驅動之Reinitialize

文章目錄Windows驅動之Reinitialize1. IoRegisterBootDriverReinitialization1.1 函數聲明1.2 原理1.3 作用2. IoRegisterDriverReinitializ

原创 Windows驅動之IRP結構

文章目錄Windows驅動之IRP結構1. IRP2. IO_STACK_LOCATION3. IRP 和 IO_STACK_LOCATION 的交互3.1 IoAllocateIrp3.2 IO_STACK_LOCATION的操

原创 Windows驅動之CM_RESOURCE_LIST

文章目錄Windows驅動之CM_RESOURCE_LIST1. CM_RESOURCE_LIST2. 資源提取 Windows驅動之CM_RESOURCE_LIST 當總線檢測到了硬件設備插入之後,就會產生電信號的中斷,導致驅動

原创 Windows驅動之StartIO模型

文章目錄Windows驅動之StartIO模型1. KDEVICE_QUEUE2. IoStartPacket3. IoStartNextPacket4. StartIO5. Cleanup Windows驅動之StartIO模型

原创 虛擬加密磁盤實現

文章目錄虛擬加密磁盤實現1. 背景2. 原理3. 效果 虛擬加密磁盤實現 1. 背景 我們知道,將數據保存到硬盤上面是很不安全的,例如如果有一個公司的核心文檔保存在員工電腦上面,雖然這個員工可以對自己的電腦進行一定的防護,例如封掉

原创 Windows驅動之PNP狀態轉換

文章目錄Windows驅動之PNP狀態轉換1. IRP_MN_XXX2. 狀態轉換2.1 Not Present2.2 Stopped2.3 working Windows驅動之PNP狀態轉換 即插即用(Plug and Play

原创 Windows X86虛擬內存尋址原理探究

文章目錄Windows X86虛擬內存尋址原理探究1. 地址轉換2. 總結3. PAE Windows X86虛擬內存尋址原理探究 我們知道,在X86機器下面每個進程都有自己的4GB內核空間,當然普通情況下只有2GB地址可用,但是

原创 Windows驅動之驅動對象和設備對象

文章目錄Windows驅動之驅動對象和設備對象1. 驅動對象2. 設備對象 Windows驅動之驅動對象和設備對象 在Windows驅動開發中,最重要的三個數據結構是驅動對象、設備對象和IRP;本文我們來探討一下設備對象和驅動對象

原创 Windows驅動之MDL

文章目錄Windows驅動之MDL1. MDL結構2. MDL的使用 Windows驅動之MDL 在驅動開發中,驅動程序訪問應用程序數據緩衝區有三種方法三種方法: 在buffered方式中,I/O管理器先創建一個與用戶模式數據緩

原创 Windows驅動之IRP PENDING

文章目錄Windows驅動之IRP PENDING1. IRP的發起2. IoMarkIrpPending3. IoCompleteRequest4. 總結 Windows驅動之IRP PENDING 我們知道Windows是一個

原创 Windows APC異步過程調用之二

文章目錄Windows APC異步過程調用之二1. 起點2. KiDeliverApc3. KiInitializeUserApc4. KeUserApcDispatcher5. NtContinue Windows APC異步過

原创 Windows驅動之IO_REMOVE_LOCK

文章目錄Windows驅動之IO_REMOVE_LOCK1. IO_REMOVE_LOCK2. IoInitializeRemoveLock3. IoAcquireRemoveLock4. IoReleaseRemoveLockE