Windows內(nèi)核安全編程從入門(mén)到實(shí)踐

出版時(shí)間:2012-4  出版社:電子工業(yè)出版社  作者:《黑客防線(xiàn)》編輯部 組編  頁(yè)數(shù):424  
Tag標(biāo)簽:無(wú)  

前言

  前言  記得第一次在內(nèi)核中簡(jiǎn)單調(diào)用DbgPrint函數(shù)輸出“helloworld”時(shí)興奮得手舞足蹈,也記得之后開(kāi)發(fā)ARP防火墻時(shí)遭遇無(wú)數(shù)次藍(lán)屏而無(wú)限接近崩潰的狀態(tài)。時(shí)至今日,接觸Windows內(nèi)核安全編程已有三年時(shí)間了,期間斷斷續(xù)續(xù)地寫(xiě)了一些小程序,直到偶然一天收到《黑客防線(xiàn)》雜志的邀請(qǐng)而萌生了寫(xiě)一本書(shū)記錄自己一路走來(lái)經(jīng)歷的想法,對(duì)于和我一樣正走在學(xué)習(xí)Windows內(nèi)核安全編程之路上的菜鳥(niǎo)們來(lái)說(shuō),有很大的閱讀價(jià)值,尤其對(duì)于那些正準(zhǔn)備上路或者剛剛上路的新晉菜鳥(niǎo)而言,通過(guò)閱讀本書(shū),可以少走很多無(wú)謂的彎路。  本書(shū)的結(jié)構(gòu)  本書(shū)共包括10章,其中:  第1~3章為基礎(chǔ)篇,介紹基于Windows編程的基礎(chǔ)知識(shí);  第4~8章為提升篇,通過(guò)具體示例介紹各Windows組件相關(guān)的編程方法;  第9~10章為輔助篇,簡(jiǎn)單介紹安全編碼及逆向與調(diào)試程序的方法?! ”緯?shū)的理論部分主要以WDK文檔作為支撐,全書(shū)關(guān)于理論介紹的知識(shí)絕大部分來(lái)源于WDK,另外一小部分知識(shí)直接或間接來(lái)源于其他文檔(如Windbg文檔等)、書(shū)籍(如WindowsInternal4等)、網(wǎng)絡(luò)及個(gè)人經(jīng)驗(yàn)等?! ”緯?shū)的實(shí)踐部分來(lái)源于WDK提供的例子及個(gè)人項(xiàng)目,建議讀者在虛擬機(jī)中運(yùn)行示例?! ”緯?shū)的閱讀說(shuō)明  讀者可以根據(jù)需要選擇閱讀感興趣的章節(jié),也可以從頭至尾完整地閱讀全書(shū)?! 〕颂貏e說(shuō)明適用于Windows7或其他系統(tǒng)的內(nèi)容除外,本書(shū)所有的內(nèi)容默認(rèn)適用于WindowsXP系統(tǒng)。  每章提供的示例建議在虛擬機(jī)環(huán)境下運(yùn)行。由于本人能力和時(shí)間有限,并沒(méi)有在真機(jī)環(huán)境中測(cè)試過(guò),不能保證所提供的示例程序穩(wěn)定運(yùn)行在各種環(huán)境下,若直接運(yùn)行于真機(jī)環(huán)境中,可能會(huì)對(duì)您的計(jì)算機(jī)財(cái)產(chǎn)造成不必要的損害。  致謝  感謝趙躍華教授對(duì)我的悉心培養(yǎng);感謝張翼(xyzreg)學(xué)長(zhǎng)對(duì)我多年的指導(dǎo)和照顧;感謝全體535實(shí)驗(yàn)室的師弟師妹們對(duì)本書(shū)的文字修正;感謝黑客防線(xiàn)在合作過(guò)程中的細(xì)致幫助;最后,感謝我的父母對(duì)我無(wú)盡的給予?! ∪绻陂喿x過(guò)程中發(fā)現(xiàn)本書(shū)的技術(shù)性錯(cuò)誤,或者有好的建議,歡迎致信ifsecurity588@gmail.com。  作者  2011/12/28ax

內(nèi)容概要

  本書(shū)詳細(xì)介紹了Windows平臺(tái)下的內(nèi)核安全編程知識(shí)。首先簡(jiǎn)單介紹了驅(qū)動(dòng)編程的基本方法;然后詳細(xì)介紹了Windows各個(gè)系統(tǒng)組件的工作原理,如文件系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)自上而下的執(zhí)行流程。同時(shí)還介紹了各個(gè)組件涉及的安全問(wèn)題,如文件隱藏、鍵盤(pán)記錄等,并通過(guò)工程項(xiàng)目讓讀者從代碼層級(jí)了解這些信息安全問(wèn)題及解決方法;最后介紹了驅(qū)動(dòng)編程本身的安全問(wèn)題,如安全編碼的注意事項(xiàng)和脆弱代碼的檢測(cè)手段。另外本書(shū)還介紹了簡(jiǎn)單的調(diào)試和逆向技術(shù),幫助解決開(kāi)發(fā)過(guò)程中遇到的技術(shù)難題。通過(guò)閱讀本書(shū),可以幫助讀者更深層次的了解內(nèi)核態(tài)下的信息安全知識(shí)。
  本書(shū)適合大專(zhuān)院校計(jì)算機(jī)系的學(xué)生、windows程序員、從事信息安全行業(yè)的工程師以及所有對(duì)windows內(nèi)核安全編程感興趣的愛(ài)好者使用。

書(shū)籍目錄

第一部分 基礎(chǔ)篇
第1章 前置要求與環(huán)境搭建
1.1 驅(qū)動(dòng)編程的語(yǔ)言
1.2 開(kāi)發(fā)環(huán)境搭建
1.2.1 Visual Studio 2005/2008的安裝與配置
1.2.2 WDK的安裝與配置
1.2.3 VisualDDK的安裝與配置
1.3 常用工具介紹
第2章 內(nèi)核編程基礎(chǔ)知識(shí)
2.1 Windows主要系統(tǒng)組件
2.1.1 對(duì)象管理器
2.1.2 內(nèi)存管理器
2.1.3 進(jìn)程和線(xiàn)程管理器
2.1.4 I/O管理器
2.1.5 PnP管理器
2.1.6 電源管理器
2.1.7 配置管理器
2.1.8 安全引用監(jiān)視器
2.2 常見(jiàn)名詞解釋
2.2.1 內(nèi)核名詞
2.2.2 文件名詞
2.2.3 網(wǎng)絡(luò)名詞
2.3 常見(jiàn)內(nèi)核數(shù)據(jù)結(jié)構(gòu)
2.3.1 驅(qū)動(dòng)框架常見(jiàn)數(shù)據(jù)結(jié)構(gòu)
2.3.2 進(jìn)程與線(xiàn)程數(shù)據(jù)結(jié)構(gòu)
2.3.3 存儲(chǔ)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)
2.3.4 網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)
2.3.5 其他一些常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)
第3章 基本編程方法
3.1 簡(jiǎn)單的NT式驅(qū)動(dòng)模型
3.1.1 驅(qū)動(dòng)模型的選擇
3.1.2 NT式驅(qū)動(dòng)程序基本結(jié)構(gòu)
3.1.3 編譯驅(qū)動(dòng)程序
3.1.4 加載驅(qū)動(dòng)及查看輸出信息
3.2 應(yīng)用層與內(nèi)核的通信方法
3.2.1 訪(fǎng)問(wèn)數(shù)據(jù)的I/O方式
3.2.2 讀寫(xiě)驅(qū)動(dòng)程序
3.2.3 發(fā)送I/O控制碼
3.2.4 內(nèi)存共享
3.3 同步技術(shù)
3.3.1 事件對(duì)象
3.3.2 信號(hào)燈對(duì)象
3.3.3 互斥體對(duì)象
3.3.4 定時(shí)器對(duì)象
3.3.5 自旋鎖
3.3.6 回調(diào)對(duì)象
3.3.7 原子操作
3.4 IRP處理
3.4.1 簡(jiǎn)單的IRP流動(dòng)圖
3.4.2 IRP的創(chuàng)建
3.4.3 IRP的發(fā)送
3.4.4 為IRP設(shè)置完成函數(shù)
3.4.5 IRP的完成
3.4.6 多種典型的 IRP處理示例
3.5 字符串操作
3.5.1 STRING、ANSI_STRING和UNICODE_STRING
3.5.2 初始化和銷(xiāo)毀
3.5.3 復(fù)制和添加
3.5.4 比較
3.5.5 轉(zhuǎn)換
3.6 內(nèi)存管理
3.6.1 分配系統(tǒng)空間內(nèi)存
3.6.2 運(yùn)行時(shí)庫(kù)管理函數(shù)
3.6.3 使用內(nèi)核棧
3.6.4 使用Lookaside快速鏈表
3.6.5 訪(fǎng)問(wèn)用戶(hù)空間內(nèi)存
3.6.6 內(nèi)存區(qū)對(duì)象和視圖
3.6.7 MDL的使用
3.7 注冊(cè)表編程
3.7.1 注冊(cè)表對(duì)象管理函數(shù)
3.7.2 注冊(cè)表運(yùn)行時(shí)庫(kù)函數(shù)
3.7.3 注冊(cè)表調(diào)用過(guò)濾
3.8 文件編程
3.8.1 打開(kāi)文件句柄
3.8.2 執(zhí)行相關(guān)文件操作
3.9 其他
3.9.1 本地系統(tǒng)服務(wù)函數(shù)的Nt和Zw版本
3.9.2 NTSTATUS返回值
3.9.3 雙向鏈表的使用
3.9.4 異常處理
第二部分 提升篇
第4章 進(jìn)程
4.1 進(jìn)程監(jiān)控實(shí)現(xiàn)原理
4.2 Windows 7系統(tǒng)下的進(jìn)程
監(jiān)控軟件實(shí)例
4.2.1 內(nèi)核模塊程序?qū)崿F(xiàn)
4.2.2 用戶(hù)模式程序?qū)崿F(xiàn)
4.3 安裝與使用
第5章 磁盤(pán)
5.1 存儲(chǔ)驅(qū)動(dòng)體系結(jié)構(gòu)
5.2 設(shè)備樹(shù)示例
5.3 diskperf磁盤(pán)過(guò)濾驅(qū)動(dòng)
5.3.1 diskperf介紹
5.3.2 diskperf的過(guò)濾框架
5.3.3 diskperf的PnP支持
5.3.4 diskperf的硬盤(pán)訪(fǎng)問(wèn)監(jiān)控和性能數(shù)據(jù)捕獲
5.3.5 diskperf的電源支持
5.3.6 diskperf的安裝與測(cè)試
第6章 鍵盤(pán)
6.1 原理跟蹤
6.1.1 自下而上的過(guò)程
6.1.2 自上而下的過(guò)程
6.2 幾種常見(jiàn)的鍵盤(pán)記錄行為
6.2.1 應(yīng)用層的消息鉤子
6.2.2 鍵盤(pán)過(guò)濾驅(qū)動(dòng)
6.2.3 鍵盤(pán)類(lèi)驅(qū)動(dòng)的分發(fā)函數(shù)Hook
6.2.4 DKOM技術(shù)
6.2.5 其他方法
6.3 反鍵盤(pán)記錄
6.3.1 實(shí)現(xiàn)原理
6.3.2 反鍵盤(pán)記錄示例
第7章 文件
7.1 原理跟蹤
7.1.1 Windows存儲(chǔ)棧
7.1.2 不涉及緩存的數(shù)據(jù)存儲(chǔ)
7.1.3 涉及緩存的數(shù)據(jù)存儲(chǔ)
7.2 簡(jiǎn)單的文件隱藏
7.2.1 文件隱藏的原理
7.2.2 文件隱藏的實(shí)現(xiàn)
7.3 scanner掃描程序
7.3.1 過(guò)濾管理器與微過(guò)濾驅(qū)動(dòng)概念
7.3.2 使用過(guò)濾管理模型的優(yōu)勢(shì)
7.3.3 微過(guò)濾驅(qū)動(dòng)的加載和卸載
7.3.4 用戶(hù)模式和內(nèi)核模式的交互
7.3.5 scanner介紹
7.3.6 scanner驅(qū)動(dòng)程序
7.3.7 scanner應(yīng)用層程序
7.3.8 scanner的安裝與使用
第8章 網(wǎng)絡(luò)
8.1 原理跟蹤
8.2 NDIS協(xié)議驅(qū)動(dòng)
8.2.1 DriverEntry
8.2.2 綁定
8.2.3 數(shù)據(jù)發(fā)送
8.2.4 數(shù)據(jù)接收
8.2.5 數(shù)據(jù)流動(dòng)總結(jié)
8.3 OPEN_BLOCK的展示
8.3.1 原理知識(shí)
8.3.2 相關(guān)代碼
第三部分 輔助篇
第9章 安全編碼
9.1 藍(lán)屏的概念
9.2 創(chuàng)建可靠的驅(qū)動(dòng)程序
9.2.1 驗(yàn)證設(shè)備對(duì)象
9.2.2 使用安全字符串
9.2.3 驗(yàn)證對(duì)象句柄
9.2.4 支持多CPU
9.2.5 確認(rèn)驅(qū)動(dòng)狀態(tài)
9.2.6 IRP安全檢查
9.3 使用驅(qū)動(dòng)驗(yàn)證程序
9.3.1 驅(qū)動(dòng)驗(yàn)證程序的測(cè)試選項(xiàng)
9.3.2 使用驅(qū)動(dòng)驗(yàn)證程序
第10章 調(diào)試與逆向
10.1 靜態(tài)調(diào)試
10.1.1 靜態(tài)調(diào)試驅(qū)動(dòng)程序
10.1.2 靜態(tài)調(diào)試應(yīng)用程序
10.2 動(dòng)態(tài)調(diào)試
10.2.1 雙機(jī)調(diào)試的基本方法
10.2.2 WinDbg的常用命令
10.2.3 WinDbg的使用技巧
10.3 逆向與調(diào)試相結(jié)合
10.3.1 示例

章節(jié)摘錄

版權(quán)頁(yè):   插圖:   第2章 內(nèi)核編程基礎(chǔ)知識(shí) 2.1 Windows主要系統(tǒng)組件 2.1.1 對(duì)象管理器 Windows對(duì)象管理器用來(lái)管理對(duì)象。文件、設(shè)備、同步機(jī)制、注冊(cè)表鍵值等在內(nèi)核中都使用對(duì)象來(lái)表示。每個(gè)對(duì)象都有一個(gè)對(duì)象頭(包含對(duì)象的一些信息,如名詞、類(lèi)型和位置等)和一個(gè)對(duì)象體(包含與各種對(duì)象類(lèi)型相關(guān)的數(shù)據(jù))。 Windows包含超過(guò)25種類(lèi)型的對(duì)象,如文件、設(shè)備、線(xiàn)程、進(jìn)程、事件、互斥體、信號(hào)量、注冊(cè)表鍵、作業(yè)、內(nèi)存區(qū)、符號(hào)鏈接等。 對(duì)象管理器執(zhí)行如下的操作來(lái)管理對(duì)象: ?負(fù)責(zé)對(duì)象的創(chuàng)建和銷(xiāo)毀; ?維護(hù)一個(gè)對(duì)象名字空間以跟蹤對(duì)象信息; ?跟蹤分配給每一個(gè)進(jìn)程的資源; ?跟蹤具體對(duì)象的訪(fǎng)問(wèn)權(quán)限; ?在對(duì)象的生命期內(nèi)管理對(duì)象,判斷對(duì)象何時(shí)可以被銷(xiāo)毀。 對(duì)象管理器導(dǎo)出的接口函數(shù)通常包括一個(gè)“Ob”前綴,如ObGetObjectSecurity函數(shù)。 2.1.2內(nèi)存管理器 Windows內(nèi)存管理器用來(lái)管理物理內(nèi)存,主要執(zhí)行如下的操作: ?管理內(nèi)存的分配和銷(xiāo)毀: ?支持內(nèi)存映射文件、共享內(nèi)存及寫(xiě)時(shí)復(fù)制的實(shí)現(xiàn)。 內(nèi)存管理器導(dǎo)出的接口函數(shù)通常包括一個(gè)“Mm”前綴,如MmGetPhysicalAddress函數(shù)。 2.1.3進(jìn)程和線(xiàn)程管理器 進(jìn)程即當(dāng)前系統(tǒng)中正在運(yùn)行的軟件程序,每個(gè)進(jìn)程都有一個(gè)ID;線(xiàn)程則代表了程序的哪部分正在運(yùn)行,每個(gè)線(xiàn)程也有一個(gè)ID。 一個(gè)進(jìn)程可能包括多個(gè)線(xiàn)程,每個(gè)線(xiàn)程通過(guò)占用CPU時(shí)間獲得執(zhí)行。在單核處理器的機(jī)器上,雖然一個(gè)進(jìn)程可能擁有多個(gè)線(xiàn)程,但在某一時(shí)刻只有一個(gè)線(xiàn)程正在運(yùn)行,且每個(gè)線(xiàn)程只運(yùn)行很短的時(shí)間便切換到另一個(gè)線(xiàn)程繼續(xù)執(zhí)行,從而讓用戶(hù)產(chǎn)生錯(cuò)覺(jué),似乎同一時(shí)間有多個(gè)程序在執(zhí)行;在多核處理器機(jī)器上,在某一時(shí)刻可以有多個(gè)線(xiàn)程同時(shí)運(yùn)行。如果一個(gè)程序包含有多個(gè)線(xiàn)程,那么多個(gè)線(xiàn)程可以在不同的處理器上同時(shí)運(yùn)行。 Windows的進(jìn)程和線(xiàn)程管理器負(fù)責(zé)處理進(jìn)程中所有線(xiàn)程的執(zhí)行問(wèn)題。無(wú)論機(jī)器是單核或是多核,在驅(qū)動(dòng)編程中都必須仔細(xì)地處理所有的線(xiàn)程,無(wú)論這些線(xiàn)程按照什么順序獲得執(zhí)行,驅(qū)動(dòng)程序都會(huì)穩(wěn)定地運(yùn)行。 進(jìn)程和線(xiàn)程管理器導(dǎo)出的接口函數(shù)通常包括一個(gè)“Ps”前綴,如PsCreateSystemThread函數(shù)。

編輯推薦

  《網(wǎng)絡(luò)安全入門(mén)與提高:Windows內(nèi)核安全編程從入門(mén)到實(shí)踐》適合大專(zhuān)院校計(jì)算機(jī)系的學(xué)生、Windows程序員、從事信息安全行業(yè)的工程師以及所有對(duì)Windows內(nèi)核安全編程感興趣的愛(ài)好者使用。

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    Windows內(nèi)核安全編程從入門(mén)到實(shí)踐 PDF格式下載


用戶(hù)評(píng)論 (總計(jì)34條)

 
 

  •   Windows內(nèi)核安全編程從入門(mén)到實(shí)Windows內(nèi)核安全編程從入門(mén)到實(shí)
  •   黑客防線(xiàn)出的書(shū)多是經(jīng)驗(yàn)之談,這本書(shū)也不例外,非常適合有經(jīng)驗(yàn)的讀者從別人的工程經(jīng)歷那里找到靈感,我推薦這本書(shū)
  •   這本書(shū)比較適合作為一本查詢(xún)類(lèi)書(shū)籍
  •   很不錯(cuò)的入門(mén)書(shū)籍,正在研讀中
  •   不是最基礎(chǔ)的書(shū)籍,不是最基礎(chǔ)的書(shū)籍。
  •   不過(guò)內(nèi)容編排略顯粗糙,但是質(zhì)量還可以。
  •   正在仔細(xì)拜讀~值得看幾遍的好書(shū)~
  •   這個(gè)書(shū)需要有一定的基礎(chǔ),當(dāng)然黑防寫(xiě)的絕對(duì)值得一看
  •   好好好~~~~~~~
  •   黑防出的書(shū),我都喜歡
  •   耐心!好好學(xué)習(xí)!
  •   支持黑防,支持黑防
  •   看了一部分,還行吧!
  •   windows內(nèi)核編程入門(mén)書(shū)籍,但是有些內(nèi)容并沒(méi)有詳細(xì)說(shuō)明
  •   關(guān)鍵操作系統(tǒng)內(nèi)核的書(shū)太少,這本可以看看。
  •   黑客防線(xiàn)官網(wǎng)沒(méi)有源代碼下載啊
  •   這書(shū)...不好說(shuō),一般學(xué)安全的看用處不大,可能專(zhuān)業(yè)人員更需要
  •   剛看了一點(diǎn),代碼細(xì)節(jié)錯(cuò)誤太多
  •   我只能說(shuō),很基礎(chǔ),且毫無(wú)特色!
  •   不錯(cuò)國(guó)內(nèi)很少有這方面的資料
  •   和其他類(lèi)的書(shū)差不多啊
  •   本以為能深入的講解更多的知識(shí),結(jié)果失望了,期本都了解所講
  •   這本書(shū)太爛了,純粹是文字堆砌起來(lái)湊數(shù)。沒(méi)有層次感,沒(méi)有主次。還不如《寒江獨(dú)釣》呢
  •   與其說(shuō)是書(shū),不如說(shuō)是文章集合,國(guó)內(nèi)寫(xiě)驅(qū)動(dòng)的書(shū),也就張帆那本可看,不過(guò)內(nèi)容太老了,其實(shí)微軟自己那本就不錯(cuò),但是大師們是不會(huì)翻譯的,因?yàn)樗麄円簿涂啃畔艛噙^(guò)活,那不然那些大師怎么顯擺?目前為止還沒(méi)發(fā)現(xiàn)一本國(guó)人寫(xiě)的或翻譯的好的驅(qū)動(dòng)書(shū)籍。
  •   垃圾中的垃圾,沒(méi)法用言語(yǔ)形容了,這本書(shū)要是沒(méi)內(nèi)核基礎(chǔ)還真是看不明白,整個(gè)一個(gè)騙錢(qián)坑爹,給作者懶的,很多關(guān)鍵地方代碼連注釋都沒(méi)有,尼瑪這是讓新手去猜么?觀后感就是,除了推理能力,之外沒(méi)學(xué)到什么東西,對(duì)作者的評(píng)價(jià)就是,你丫回去多看幾年內(nèi)核吧,推薦作者一本書(shū)叫《windows內(nèi)核情景分析》這本書(shū),看完之后,作者再?gòu)膶?xiě)一邊,興許還有點(diǎn)看頭
  •   書(shū)不錯(cuò),快遞隔天到,沒(méi)有損壞。總體滿(mǎn)意。
  •   看了一些,感覺(jué)還可以吧。。。我也是剛?cè)腴T(mén)。。。
  •   Windows內(nèi)核安全編程從入門(mén)到實(shí)踐,并不如想象的那樣,但也算不錯(cuò)
  •   不太了解內(nèi)核編程所以買(mǎi)了看看
  •   介紹的還是不太全面。
  •   高:Windows內(nèi)核安全編程從入門(mén)到實(shí)
  •   賣(mài)回家收藏用
  •   入門(mén)很好
  •   書(shū)名很唬人

相關(guān)圖書(shū)

 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7