注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡操作系統(tǒng)Windows內核安全與驅動開發(fā)

Windows內核安全與驅動開發(fā)

Windows內核安全與驅動開發(fā)

定 價:¥139.00

作 者: 譚文 等著
出版社: 電子工業(yè)出版社
叢編項:
標 簽: WINDOWS 操作系統(tǒng)/系統(tǒng)開發(fā) 計算機/網絡

購買這本書可以去


ISBN: 9787121262159 出版時間: 2015-06-01 包裝:
開本: 頁數: 字數:  

內容簡介

  本書的前身是《天書夜讀——從匯編語言到Windows內核編程》和《寒江獨釣——Windows內核安全編程》。與Windows客戶端安全軟件開發(fā)相關的驅動程序開發(fā)是本書的主題。書中的程序使用環(huán)境從32位到64位,從Windows XP到Windows 8都有涉及,大部分程序不經過修改即可在Windows 10上運行。同時本書也深入淺出地介紹了進行內核安全編程所需要的操作系統(tǒng)、匯編等基礎知識。本書共分三篇,基礎篇囊括了驅動開發(fā)的基礎知識,降低了入門的難度;開發(fā)篇介紹了在實際工作中可能遇到的各種開發(fā)需求的技術實現,包括:串口的過濾、鍵盤的過濾、磁盤的虛擬、磁盤的過濾、文件系統(tǒng)的過濾與監(jiān)控、文件系統(tǒng)透明加密、文件系統(tǒng)微過濾驅動、網絡傳輸層過濾、Windows過濾平臺、NDIS協議驅動、NDIS小端口驅動、NDIS中間層驅動、IA-32匯編基礎、IA-32體系中的內存地址、處理器權限級別切換、IA-32體系結構中的中斷和Windows內核掛鉤;高級篇包含了匯編語言、操作系統(tǒng)原理、處理器體系架構相關的內容。本書是由長期從事這個行業(yè)的工程師自己寫的,所以處處以實用為準。對細節(jié)的考究主要體現在對實際問題的解決,而不是知識的詳盡程度上。

作者簡介

暫缺《Windows內核安全與驅動開發(fā)》作者簡介

圖書目錄

基礎篇
第1章內核上機指導
1.1下載和使用WDK
1.1.1下載并安裝WDK
1.1.2編寫第一個C文件
1.1.3編譯一個工程
1.2安裝與運行
1.2.1下載一個安裝工具
1.2.2運行與查看輸出信息
1.2.3在虛擬機中運行
1.3調試內核模塊
1.3.1下載和安裝WinDbg
1.3.2設置WindowsXP調試執(zhí)行
1.3.3設置Vista調試執(zhí)行
1.3.4設置VMware的管道虛擬串口
1.3.5設置Windows內核符號表
1.3.6實戰(zhàn)調試first
第2章內核編程環(huán)境及其特殊性
2.1內核編程的環(huán)境
2.1.1隔離的應用程序
2.1.2共享的內核空間
2.1.3無處不在的內核模塊
2.2數據類型
2.2.1基本數據類型
2.2.2返回狀態(tài)
2.2.3字符串
2.3重要的數據結構
2.3.1驅動對象
2.3.2設備對象
2.3.3請求
2.4函數調用
2.4.1查閱幫助
2.4.2幫助中有的幾類函數
2.4.3幫助中沒有的函數
2.5Windows的驅動開發(fā)模型
2.6WDK編程中的特殊點
2.6.1內核編程的主要調用源
2.6.2函數的多線程安全性
2.6.3代碼的中斷級
2.6.4WDK中出現的特殊代碼
第3章字符串與鏈表
3.1字符串操作
3.1.1使用字符串結構
3.1.2字符串的初始化
3.1.3字符串的拷貝
3.1.4字符串的連接
3.1.5字符串的打印
3.2內存與鏈表
3.2.1內存的分配與釋放
3.2.2使用LIST_ENTRY
3.2.3使用長長整型數據
3.3自旋鎖
3.3.1使用自旋鎖
3.3.2在雙向鏈表中使用自旋鎖
3.3.3使用隊列自旋鎖提高性能
第4章文件、注冊表、線程
4.1文件操作
4.1.1使用OBJECT_ATTRIBUTES
4.1.2打開和關閉文件
4.1.3文件讀/寫操作
4.2注冊表操作
4.2.1注冊表鍵的打開
4.2.2注冊表鍵值的讀
4.2.3注冊表鍵值的寫
4.3時間與定時器
4.3.1獲得當前"滴答"數
4.3.2獲得當前系統(tǒng)時間
4.3.3使用定時器
4.4線程與事件
4.4.1使用系統(tǒng)線程
4.4.2在線程中睡眠
4.4.3使用同步事件
第5章應用與內核通信
5.1內核方面的編程
5.1.1生成控制設備
5.1.2控制設備的名字和符號鏈接
5.1.3控制設備的刪除
5.1.4分發(fā)函數
5.1.5請求的處理
5.2應用方面的編程
5.2.1基本的功能需求
5.2.2在應用程序中打開與關閉設備
5.2.3設備控制請求
5.2.4內核中的對應處理
5.2.5結合測試的效果
5.3阻塞、等待與安全設計
5.3.1驅動主動通知應用
5.3.2通信接口的測試
5.3.3內核中的緩沖區(qū)鏈表結構
5.3.4輸入:內核中的請求處理中的安全檢查
5.3.5輸出處理與卸載清理
第6章64位和32位內核開發(fā)差異
6.164位系統(tǒng)新增機制
6.1.1WOW64子系統(tǒng)
6.1.2PatchGuard技術
6.1.364位驅動的編譯、安裝與運行
6.2編程差異
6.2.1匯編嵌入變化
6.2.2預處理與條件編譯
6.2.3數據結構調整
開發(fā)篇
第7章串口的過濾
7.1過濾的概念
7.1.1設備綁定的內核API之一
7.1.2設備綁定的內核API之二
7.1.3生成過濾設備并綁定
7.1.4從名字獲得設備對象
7.1.5綁定所有串口
7.2獲得實際數據
7.2.1請求的區(qū)分
7.2.2請求的結局
7.2.3寫請求的數據
7.3完整的代碼
7.3.1完整的分發(fā)函數
7.3.2如何動態(tài)卸載
7.3.3代碼的編譯與運行
第8章鍵盤的過濾
8.1技術原理
8.1.1預備知識
8.1.2Windows中從擊鍵到內核
8.1.3鍵盤硬件原理
8.2鍵盤過濾的框架
8.2.1找到所有的鍵盤設備
8.2.2應用設備擴展
8.2.3鍵盤過濾模塊的DriverEntry
8.2.4鍵盤過濾模塊的動態(tài)卸載
8.3鍵盤過濾的請求處理
8.3.1通常的處理
8.3.2PNP的處理
8.3.3讀的處理
8.3.4讀完成的處理
8.4從請求中打印出按鍵信息
8.4.1從緩沖區(qū)中獲得KEYBOARD_INPUT_DATA
8.4.2從KEYBOARD_INPUT_DATA中得到鍵
8.4.3從MakeCode到實際字符
8.5Hook分發(fā)函數
8.5.1獲得類驅動對象
8.5.2修改類驅動的分發(fā)函數指針
8.5.3類驅動之下的端口驅動
8.5.4端口驅動和類驅動之間的協作機制
8.5.5找到關鍵的回調函數的條件
8.5.6定義常數和數據結構
8.5.7打開兩種鍵盤端口驅動尋找設備
8.5.8搜索在KbdClass類驅動中的地址
8.6Hook鍵盤中斷反過濾
8.6.1中斷:IRQ和INT
8.6.2如何修改IDT
8.6.3替換IDT中的跳轉地址
8.6.4QQ的PS/2反過濾措施
8.7直接用端口操作鍵盤
8.7.1讀取鍵盤數據和命令端口
8.7.2p2cUserFilter的最終實現
第9章磁盤的虛擬
9.1虛擬的磁盤
9.2一個具體的例子
9.3入口函數
9.3.1入口函數的定義
9.3.2Ramdisk驅動的入口函數
9.4EvtDriverDeviceAdd函數
9.4.1EvtDriverDeviceAdd的定義
9.4.2局部變量的聲明
9.4.3磁盤設備的創(chuàng)建
9.4.4如何處理發(fā)往設備的請求
9.4.5用戶配置的初始化
9.4.6鏈接給應用程序
9.4.7小結
9.5FAT12/16磁盤卷初始化
9.5.1磁盤卷結構簡介
9.5.2Ramdisk對磁盤的初始化
9.6驅動中的請求處理
9.6.1請求的處理
9.6.2讀/寫請求
9.6.3DeviceIoControl請求
9.7Ramdisk的編譯和安裝
9.7.1編譯
9.7.2安裝
9.7.3對安裝的深入探究
第10章磁盤的過濾
10.1磁盤過濾驅動的概念
10.1.1設備過濾和類過濾
10.1.2磁盤設備和磁盤卷設備過濾驅動
10.1.3注冊表和磁盤卷設備過濾驅動
10.2具有還原功能的磁盤卷過濾驅動
10.2.1簡介
10.2.2基本思想
10.3驅動分析
10.3.1DriverEntry函數
10.3.2AddDevice函數
10.3.3PnP請求的處理
10.3.4Power請求的處理
10.3.5DeviceIoControl請求的處理
10.3.6bitmap的作用和分析
10.3.7boot驅動完成回調函數和稀疏文件
10.3.8讀/寫請求的處理
第11章文件系統(tǒng)的過濾與監(jiān)控
11.1文件系統(tǒng)的設備對象
11.1.1控制設備與卷設備
11.1.2生成自己的一個控制設備
11.2文件系統(tǒng)的分發(fā)函數
11.2.1普通的分發(fā)函數
11.2.2文件過濾的快速IO分發(fā)函數
11.2.3快速IO分發(fā)函數的一個實現
11.2.4快速IO分發(fā)函數逐個簡介
11.3設備的綁定前期工作
11.3.1動態(tài)地選擇綁定函數
11.3.2注冊文件系統(tǒng)變動回調
11.3.3文件系統(tǒng)變動回調的一個實現
11.3.4文件系統(tǒng)識別器
11.4文件系統(tǒng)控制設備的綁定
11.4.1生成文件系統(tǒng)控制設備的過濾設備
11.4.2綁定文件系統(tǒng)控制設備
11.4.3利用文件系統(tǒng)控制請求
11.5文件系統(tǒng)卷設備的綁定
11.5.1從IRP中獲得VPB指針
11.5.2設置完成函數并等待IRP完成
11.5.3卷掛載IRP完成后的工作
11.5.4完成函數的相應實現
11.5.5綁定卷的實現
11.6讀/寫操作的過濾
11.6.1設置一個讀處理函數
11.6.2設備對象的區(qū)分處理
11.6.3解析讀請求中的文件信息
11.6.4讀請求的完成
11.7其他操作的過濾
11.7.1文件對象的生存周期
11.7.2文件的打開與關閉
11.7.3文件的刪除
11.8路徑過濾的實現
11.8.1取得文件路徑的三種情況
11.8.2打開成功后獲取路徑
11.8.3在其他時刻獲得文件路徑
11.8.4在打開請求完成之前獲得路徑名
11.8.5把短名轉換為長名
11.9把sfilter編譯成靜態(tài)庫
11.9.1如何方便地使用sfilter
11.9.2初始化回調、卸載回調和綁定回調
11.9.3綁定與回調
11.9.4插入請求回調
11.9.5如何利用sfilter.lib
第12章文件系統(tǒng)透明加密
12.1文件透明加密的應用
12.1.1防止企業(yè)信息泄密
12.1.2文件透明加密防止企業(yè)信息泄密
12.1.3文件透明加密軟件的例子
12.2區(qū)分進程
12.2.1機密進程與普通進程
12.2.2找到進程名字的位置
12.2.3得到當前進程的名字
12.3內存映射與文件緩沖
12.3.1記事本的內存映射文件
12.3.2Windows的文件緩沖
12.3.3文件緩沖:明文還是密文的選擇
12.3.4清除文件緩沖
12.4加密標識
12.4.1保存在文件外、文件頭還是文件尾
12.4.2隱藏文件頭的大小
12.4.3隱藏文件頭的設置偏移
12.4.4隱藏文件頭的讀/寫偏移
12.5文件加密表
12.5.1何時進行加密操作
12.5.2文件控制塊與文件對象
12.5.3文件加密表的數據結構與初始化
12.5.4文件加密表的操作:查詢
12.5.5文件加密表的操作:添加
12.5.6文件加密表的操作:刪除
12.6文件打開處理
12.6.1直接發(fā)送IRP進行查詢與設置操作
12.6.2直接發(fā)送IRP進行讀/寫操作
12.6.3文件的非重入打開
12.6.4文件的打開預處理
12.7讀/寫加密和解密
12.7.1在讀取時進行解密
12.7.2分配與釋放MDL
12.7.3寫請求加密
12.8crypt_file的組裝
12.8.1crypt_file的初始化
12.8.2crypt_file的IRP預處理
12.8.3crypt_file的IRP后處理
第13章文件系統(tǒng)微過濾驅動
13.1文件系統(tǒng)微過濾驅動簡介
13.1.1文件系統(tǒng)微過濾驅動的由來
13.1.2Minifilter的優(yōu)點與不足
13.2Minifilter的編程框架
13.2.1微文件系統(tǒng)過濾的注冊
13.2.2微過濾器的數據結構
13.2.3卸載回調函數
13.2.4預操作回調函數
13.2.5后操作回調函數
13.2.6其他回調函數
13.3Minifilter如何與應用程序通信
13.3.1建立通信端口的方法
13.3.2在用戶態(tài)通過DLL使用通信端口的范例
13.4Minifilter的安裝與加載
13.4.1安裝Minifilter的INF文件
13.4.2啟動安裝完成的Minifilter
第14章網絡傳輸層過濾
14.1TDI概要
14.1.1為何選擇TDI
14.1.2從socket到Windows內核
14.1.3TDI過濾的代碼例子
14.2TDI的過濾框架
14.2.1綁定TDI的設備
14.2.2唯一的分發(fā)函數
14.2.3過濾框架的實現
14.2.4主要過濾的請求類型
14.3生成請求:獲取地址
14.3.1過濾生成請求
14.3.2準備解析IP地址與端口
14.3.3獲取生成的IP地址和端口
14.3.4連接終端的生成與相關信息的保存
14.4控制請求
14.4.1TDI_ASSOCIATE_ADDRESS的過濾
14.4.2TDI_CONNECT的過濾
14.4.3其他的次功能號
14.4.4設置事件的過濾
14.4.5TDI_EVENT_CONNECT類型的設置事件的過濾
14.4.6直接獲取發(fā)送函數的過濾
14.4.7清理請求的過濾
14.5本書例子tdifw.lib的應用
14.5.1tdifw庫的回調接口
14.5.2tdifw庫的使用例子
第15章Windows過濾平臺
15.1WFP簡介
15.2WFP框架
15.3基本對象模型
15.3.1過濾引擎
15.3.2墊片
15.3.3呼出接口
15.3.4分層
15.3.5子層
15.3.6過濾器
15.3.7呼出接口回調函數
15.4WFP操作
15.4.1呼出接口的注冊與卸載
15.4.2呼出接口的添加與移除
15.4.3子層的添加與移除
15.4.4過濾器的添加
15.5WFP過濾例子
第16章NDIS協議驅動
16.1以太網包和網絡驅動架構
16.1.1以太網包和協議驅動
16.1.2NDIS網絡驅動
16.2協議驅動的DriverEntry
16.2.1生成控制設備
16.2.2注冊協議
16.3協議與網卡的綁定
16.3.1協議與網卡的綁定概念
16.3.2綁定回調處理的實現
16.3.3協議綁定網卡的API
16.3.4解決綁定競爭問題
16.3.5分配接收和發(fā)送的包池與緩沖池
16.3.6OID請求的發(fā)送和請求完成回調
16.3.7ndisprotCreateBinding的最終實現
16.4綁定的解除
16.4.1解除綁定使用的API
16.4.2ndisprotShutdownBinding的實現
16.5在用戶態(tài)操作協議驅動
16.5.1協議的收包與發(fā)包
16.5.2在用戶態(tài)編程打開設備
16.5.3用DeviceIoControl發(fā)送控制請求
16.5.4用WriteFile發(fā)送數據包
16.5.5用ReadFile發(fā)送數據包
16.6在內核態(tài)完成功能的實現
16.6.1請求的分發(fā)與實現
16.6.2等待設備綁定完成與指定設備名
16.6.3指派設備的完成
16.6.4處理讀請求
16.6.5處理寫請求
16.7協議驅動的接收回調
16.7.1和接收包有關的回調函數
16.7.2ReceiveHandler的實現
16.7.3TransferDataCompleteHandler的實現
16.7.4ReceivePacketHandler的實現
16.7.5接收數據包的入隊
16.7.6接收數據包的出隊和讀請求的完成
第17章NDIS小端口驅動
17.1小端口驅動的應用與概述
17.1.1小端口驅動的應用
17.1.2小端口驅動示例
17.1.3小端口驅動的運作與編程概述
17.2小端口驅動的初始化
17.2.1小端口驅動的DriverEntry
17.2.2小端口驅動的適配器結構
17.2.3配置信息的讀取
17.2.4設置小端口適配器上下文
17.2.5MPInitialize的實現
17.2.6MPHalt的實現
17.3打開ndisprot設備
17.3.1IO目標
17.3.2給IO目標發(fā)送DeviceIoControl請求
17.3.3打開ndisprot接口并完成配置設備
17.4使用ndisprot發(fā)送包
17.4.1小端口驅動的發(fā)包接口
17.4.2發(fā)送控制塊(TCB)
17.4.3遍歷包組并填寫TCB
17.4.4寫請求的構建與發(fā)送
17.5使用ndisprot接收包
17.5.1提交數據包的內核API
17.5.2從接收控制塊(RCB)提交包
17.5.3對ndisprot讀請求的完成函數
17.5.4讀請求的發(fā)送
17.5.5用于讀包的WDF工作任務
17.5.6ndisedge讀工作任務的生成與入列
17.6其他的特征回調函數的實現
17.6.1包的歸還
17.6.2OID查詢處理的直接完成
17.6.3OID設置處理
第18章NDIS中間層驅動
18.1NDIS中間層驅動概述
18.1.1Windows網絡架構總結
18.1.2NDIS中間層驅動簡介
18.1.3NDIS中間層驅動的應用
18.1.4NDIS包描述符結構深究
18.2中間層驅動的入口與綁定
18.2.1中間層驅動的入口函數
18.2.2動態(tài)綁定NIC設備
18.2.3小端口初始化(MpInitialize)
18.3中間層驅動發(fā)送數據包
18.3.1發(fā)送數據包原理
18.3.2包描述符"重利用"
18.3.3包描述符"重申請"
18.3.4發(fā)送數據包的異步完成
18.4中間層驅動接收數據包
18.4.1接收數據包概述
18.4.2用PtReceive接收數據包
18.4.3用PtReceivePacket接收
18.4.4對包進行過濾
18.5中間層驅動程序查詢和設置
18.5.1查詢請求的處理
18.5.2設置請求的處理
18.6NDIS句柄
18.6.1不可見的結構指針
18.6.2常見的NDIS句柄
18.6.3NDIS句柄誤用問題
18.6.4一種解決方案
18.7生成普通控制設備
18.7.1在中間層驅動中添加普通設備
18.7.2使用傳統(tǒng)方法來生成控制設備
第19章IA-32匯編基礎
19.1x86內存、寄存器與堆棧
19.1.1_asm關鍵字
19.1.2x86中的mov指令
19.1.3x86中的寄存器與內存
19.1.4賦值語句的實現
19.2x86中函數的實現
19.2.1一個函數的例子
19.2.2堆棧的介紹
19.2.3寄存器的備份和恢復
19.2.4內部變量與返回值
19.3x86中函數的調用與返回
19.3.1函數的調用指令call
19.3.2通過堆棧傳遞參數
19.3.3從函數返回
19.3.4三種常見的調用協議
19.4從32位匯編到64位匯編
19.4.1Intel64與IA-32體系架構簡介
19.4.264位指令與32位指令
19.4.3通用寄存器
19.564位下的函數實現
19.5.1函數概覽
19.5.232位參數的傳遞
19.5.364位參數與返回值
19.5.4棧空間的開辟與恢復
第20章IA-32體系中的內存地址
20.1內存的虛擬地址
20.1.1C語言中的內存地址
20.1.2虛擬地址的構成
20.1.3段的選擇
20.2全局描述符表和段描述符
20.2.1全局描述符表
20.2.2段類型
20.2.3段寄存器與段選擇子
20.2.464位模式下的段
20.3分段編程實踐
20.3.1系統(tǒng)表寄存器的結構
20.3.2在匯編語言中獲取全局描述表的位置
20.3.3調試范例:sgdt指令的錯誤使用
20.3.4在64位下獲得全局描述符表
20.4線性地址基礎
20.4.1分頁控制機制
20.4.2線性地址的轉換
20.4.3混合頁面大小
20.4.432位物理地址的頁目錄和頁表項
20.5各種特殊分頁方式
20.5.1PAE分頁方式
20.5.2PSE-36分頁機制
20.5.3IA-32e模式下的線性地址
20.6分頁編程實踐
20.6.1頁目錄和頁目錄指針表的獲取
20.6.2頁表的獲取
20.6.3線性地址的結構
第21章處理器權限級別切換
21.1Ring0和Ring3權限級別
21.2保護模式下的分頁內存保護
21.3分頁內存不可執(zhí)行保護
21.3.1不可執(zhí)行保護原理
21.3.2不可執(zhí)行保護的漏洞
21.3.3上機實踐
21.4權限級別的切換
21.4.1調用門及其漏洞
21.4.2sysenter和sysexit指令
21.4.3上機實踐
第22章IA-32體系結構中的中斷
22.1中斷基礎知識
22.1.1中斷描述符表
22.1.2中斷處理過程
22.1.364位模式下的中斷處理機制
22.1.4多核下的中斷
22.2Windows中斷機制
22.3中斷編程實踐
22.3.1IDTHook
22.3.2巧用IDTHook實現安全防護
第23章Windows內核掛鉤
23.1系統(tǒng)服務描述符表掛鉤
23.1.1系統(tǒng)服務描述符表(SSDT)
23.1.2系統(tǒng)服務描述符表掛鉤的意圖
23.1.3尋找要掛鉤的函數的地址
23.1.4函數被掛鉤的過程
23.1.5具體實現的代碼
23.2函數導出表掛鉤
23.2.1內核函數的種類
23.2.2掛鉤IoCallDriver
23.2.3對跳轉地址進行修改
23.3Windows7系統(tǒng)下IofCallDriver的跟蹤
23.4Windows7系統(tǒng)下內聯掛鉤
23.4.1寫入跳轉指令并拷貝代碼
23.4.2實現中繼函數
高級篇
第24章Windows通知與回調
24.1Windows的事件通知與回調
24.2常用的事件通知
24.2.1創(chuàng)建進程通知
24.2.2創(chuàng)建線程通知
24.2.3加載模塊通知
24.2.4注冊表操作通知
24.3Windows回調機制
24.3.1回調對象
24.3.2回調對象的創(chuàng)建
24.3.3回調對象的注冊
24.3.4回調的通告
24.4安全的死角,回調的應用
第25章保護進程
25.1內核對象簡介
25.2內核對象的結構
25.3保護內核對象
25.3.1處理對象的打開
25.3.2處理句柄的復制
25.3.3處理句柄的繼承
25.4進程的保護
25.4.1保護原理
25.4.2Vista以后的進程對象保護
25.4.3進程的其他保護
附錄A如何使用本書的源碼光盤
附錄B練習題  

本目錄推薦

掃描二維碼
Copyright ? 讀書網 ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號