導航:首頁 > 凈水問答 > 寒江獨釣串口過濾驅動

寒江獨釣串口過濾驅動

發布時間:2022-05-02 07:23:39

❶ 我想用C語言寫一個文件粉碎機,求大神指點我該看些啥書,最好列個書名。

1. 如果說不需要了解到內核那麼深入,你就採用Windows的文件系統驅動吧,大題思路是打開磁碟,然後利用DeviceIoControl訪問磁碟,可以直接操作扇區,這里需要你對文件系統比較了解,然後直接刪除要粉碎的FAT和FDT就行了!
2. 要專業的話,涉及到 文件過濾驅動,現在好多文件粉碎都是這樣的,創建隱藏驅動盤?這個網上都有代碼,不知道你所說的隱藏驅動盤是什麼意思?創建虛擬磁碟網上也有代碼和例子哈。去搜索下!

呵呵,最後我給你的建議是,找一個ARK的源代碼來研究,很多人都寫過的,比如像冰刃這樣的,具有文件管理,強刪等等。
具體的書名的話《寒江獨釣 Windows內核安全編程》《文件過濾驅動》《文件系統方面書籍等等》,不多說了,還有什麼再call我吧,Good Luck!

❷ 在windows平台下的底層開發應該有什麼樣的學習路線

1.語言C/C++(參考書籍:<<C/C++ Primer>> ,<<C和指針>>,<<數據結構C語言描述>>)),匯編(王爽的匯編語言,作為入門,參考Intel手冊,之後參考看雪的<<加密與解密>>,了解PE文件的格式,加殼脫殼和病毒感染的手法,如果是開發的話,只需要了解即可,能用反匯編調試工具去做簡單的CrackMe即可),這個階段大約是大一大二的時間,除去老師上課教的C語言基礎,80x86匯編語言以為,很多知識都是自己去擴展。
2.windows api(win32sdk) 參考書籍(《Windows程序設計》,《Windows核心編程》,MFC之類的需要使用的時候在參考即可,不必花費太多精力,主要是去了解程序的消息機制,事件等等,應該把主要的精力比如線程注入,Ring3的各種HOOK等。這個階段是大二下學期的時間,說實話,我這個方面看的太少了,花了好多時間在一些沒有意義的事情上,導致到大三的時候參加信息安全比賽做驅動的時候經驗嚴重不足,所以基礎太重要了)
3.然後就是winows驅動內核的開發(參考書籍,寒江獨釣,張帆的Windows驅動開發技術詳解,WDK上的各種示例代碼) 熟悉各種過濾驅動框架(文件過濾驅動,文件微過濾驅動,tdi,ndis協議,ndis中間層,ndis小埠等等)。
然後就是各種系統底層的原理,進程創建的流程,文件創建的流程,進程間通信的過程,用各種調試,反匯編工具(od,ida,windbg)去跟蹤分析,可以寫一些Rootkit/Anti-Rootkit工具,比如對於進程隱藏和保護,有SSDT HOOK OpenProcess,摘除進程鏈表等等,這樣有助於對系統底層機制的理解
4.後期就是經驗和內功了,什麼《深入解析Windows操作系統》,《TCP/IP》卷123,《Windows內核原理與實現》等等,說白了,個人認為,底層開發對於調試的功力要求很高,能從藍屏的mp文件出有用的信息

❸ 什麼是windows驅動編程

Linux的內核編程大家都是比較熟悉的。而Windows內核編程則不大為一般讀者所熟悉。常常有這樣的問題:
「你又沒有Windows的代碼,你如何搞內核編程?」
「除了微軟的人,難道還有人做Windows內核嗎?」
「Windows內核編程有用嗎?」
其實Windows內核編程不但有用,而且常用。很多我們每天都使用的軟體,就毫無疑問的使用了Windows內核編程的技術。最典型的就是實時監控的殺毒軟體。此外還有防火牆、虛擬光碟機、以及90%的驅動程序。這些程序的有一個共同的特點,他們的一部分組件,是作為Windows的一部分,能對 Windows上運行的所有的應用程序起作用。
因此內核編程的應用,往往給傳統軟體帶來更強的功能,實現技術上的飛躍。
舉個例子。我們常常聽說,對文件進行加密,可以使文檔更加安全。對文件加密並不需要任何內核組件。我們可以寫一個應用程序,讀入文件,加密數據,然後重寫為一個加密文件。解密也可以同樣如此。
但是實際上這並不滿足一般的用戶需求。對一個公司的員工來說,那些「重要的文檔」很可能就是每天工作所用的文件。想像一下,他必須要每天從伺服器上下載加密的文件,然後用解密工具解密。然後用Office開始工作。工作完畢後,用加密工具加密,再上傳,然後刪除工作文檔。且不說大部分時間文檔是以解密的方式保存在硬碟上的不安全性,這個工作流程是可以接受的嗎?沒有人會接受的。
比較「人性化」的方式就是讓Office可以直接打開已經加密的文檔。保存的時候,直接就保存成加密的文檔。硬碟上,這個文檔始終是加密的。而且對合法的用戶透明。對非法的用戶,則只能看見密文,從而無法編輯也無法閱讀。而且也不僅僅Office,還有AutoCAD、Visual Studio、Photoshop等等用戶可能用於編輯機密文件的所有的工具。這是可以實現的嗎?如果我們不能去修改Office和其他的工作軟體。
這當然是可以實現的。既然我們編寫Windows內核程序,當然可以讓Windows的文件系統從硬碟讀取文件的時候,對特定的進程進行特別的解密。等這些軟體讀取到數據的時候,它們讀到的已經是正常的數據了。這個過程和實時掃描病毒的原理是一樣的,使用一個文件過濾驅動程序。這就是讀者可能已經聽到過的文件透明加密技術。
在和《天書夜讀:從匯編語言到Windows內核編程》一書同一系列的《寒江獨釣——Windows內核編程與信息安全》(預計明年出版)中,對鍵盤過濾、硬碟過濾、文件過濾、網路過濾等安全相關的內核編程,都有詳盡的講解和例子。
內核編程的另一個特點是:這些代碼運行在R0級。R0級別是最高特權級別。對CPU有完全控制的能力。這非常的適合一些安全軟體,當然也適合做破壞的工作。因為內核程序有最高(也就是根)許可權,這樣的技術在安全領域(或者破壞領域)被稱為rootkit技術。rootkit技術是當前安全領域最熱門的技術之一。
許多病毒使用了rootkit技術。用來隱藏病毒文件,竊取密碼、發送攻擊包等等。rootkit病毒感染後極難清除,在感染前提前防範是最有效的辦法。
Windows內核確實沒有公開源代碼。但是MS提供Windows內核程序的開發包:WDK。WDK實際上主要用於開發驅動程序。而驅動程序基本上都是內核程序。WDK提供的頭文件以及部分源代碼,實際上就是Windows內核的代碼的一部分。有部分驅動程序(比如FAT32文件系統)的代碼是完全公開的。我們也可以在這里看到Windows內核開發者的代碼風格。同時,微軟也提供了所有Windows版本的符號表在網上供研究者下載。並提供了功能無比強大的調試器WinDbg。有了它們,你就可以輕松的調試Windows內核了。無論是你自己寫的代碼的部分,還是Windows內核開發者們編寫的部分。雖然看到的是匯編語言,但是函數名和全局變數名都是存在的。而且,所有的這些(WDK、WinDBG,符號表)都是免費的。

那您還在等什麼呢?歡迎進入Windows內核編程的世界!

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/broadviewprograming/archive/2009/03/10/3975093.aspx

❹ Windows內核(驅動)編程中的線程問題

可以使用函數PsCreateSystemThread,用起來和ring3差不多,ring0編程更要注意線程同步問題,否則很容易BSOD(藍屏死機)

❺ 哪裡可以下載計算機方面的電子書啊,最好是chm格式的文件,我想學javascript,學一些計算機方面的英語。

你學這么多你到底想學什麼?
c++得學很久呢,看你需要做什麼開發才學什麼,
你做網站就找asp,php,asp.net,jsp的動態腳本語言,然後得會sql server,mysql,access這些資料庫,javascript是必須要會的.
然後你還得會美工,photoshop做模板圖,又得會css+div布局控制,又得了解jquery,prototype,mootools等框架和插件,又的會自己寫插件.
計算機底層你就搞C++,C++基礎過關了,你可以搞windows編程或者linux編程.
在windows下,你就得買至少10本書,電子書看的你眼睛都能瞎掉,最好是買..
我就是這么過來的,...電子書沒耐心看說實話呵呵.
windows下的書,國產的基本都是垃圾,但也有好的,比如你做mfc開發,就看mfc深入淺出,
你做windows底層,就看寒江獨釣底層驅動過濾,做ring3中間層軟體開發,就得會資料庫,mysql,mssql,access,sqlite等等...做游戲開發的話你就又得學directX,opengl,圖形控制啊什麼的,在linux平台開發你就得會Qt,關於linux運行機制,底層實現以及驅動程序開發,你都得會,
所以電腦這行隨時都得學,進去了就是無底洞,確實工資高挺誘人,但是跳樓的也不少.

總結一下,做網頁開發,javascript,python,asp,php,jsp,asp.net,photoshop,flash,actionscript,mssql,mysql,access,sqlite,oracle這是基礎高級版你會針對語言性的框架得會,比如php的mvc,smart,php相關框架,asp.net的三層架構,多層架構,設計模式,mvc.jsp的ssh框架.資料庫你得會增刪改查,存儲過程.
你要去工作,找個像樣的好點的工作,你得有本科畢業證,
然後還有N個項目實戰,還得有意義,還得現實,模板特色還得貼近中國特色,更重要的是全部原創,簡歷准備10份不同特色的,專注不同領域的.
這僅僅是web網頁開發.
下面說計算機底層哈.
windows:c++,delphi,vb,易語言...或者匯編,asm.
搞的RING3和RING0兩種開發,你要想獨吞那太復雜需要很長時間,這方面大牛有很多人可以去debugman玩玩.Ring3開發無非是一些小軟體,你要想賺錢就做一般實用性的,純客戶端源碼分析,
其實完全不是學幾本書就能搞定的,你要的是有足夠的時間!放棄一切!包括身邊的所有事去融入其中不分日夜黑白的看大牛小牛的源代碼.......如果你有對象了,或者有女友了,那麼放棄底層吧,除非她和你一樣整天搞程序,但這樣女孩基本上1%都沒有.
另外還有做安全方面的人才,保護計算機的安全啊什麼的,背後都賺了N億錢.這世界不是你有技術就厲害,而是你有錢,你得想辦法搞到錢,才能在朋友們,親人們,爸爸媽媽面前,有面子,哦不,不是有面子,是顯得,你成熟了,注意啊,中國式成熟而已.
linux:做linux開發,純屬娛樂,當然我說不包括php網站這種的,我說的是普通開發,非嵌入式,也非驅動開發,沒啥作用,沒人找你在linux給他開發個程序的,如果這有這樣的人,他自己也得懂開發了.
關於python,qt這類跨平台的東西,學學甚好,哪天跟哥們吹起牛,我放棄windows還能活著,呵呵.別有一番風采和趣味.
做開發實在是難受,你沒有一點商業思想,最好就是工作用到啥,學啥,在工作之前想好你要工作的地點,以及做什麼開發?網頁的話,學專門的,找專門的.這樣最好了.
如果你想包攬全部技術,對不起,你可以去北京西單那圖書館去看下,這方面的書,唉...殘酷.
哦對了我還沒說手機開發.
j2me,android,iphone,symbian這四個平台現在最火,也不是四個,其實android和j2me都是用java做開發,只不過底層支持不一樣.symbian可以用qt做開發.
這玩意還得看你喜歡不喜歡,喜歡還得能找對地方,另外最好別去小公司幹活,被老闆吭的你都不想做程序員了.

好了,就到這里了,我不知道為啥要說這么多,但是應該足以說明一個基本的程序員,應該會的東西,這方面資料太多,太龐大,博大精深,希望各位同學看到此帖,謹以一種語言做根基,再去繼承,再去多態吧.

❻ 在windows平台下的底層開發應該有什麼樣的學習路線

題主問的是學習路線,以下是個人意見,(目前是某網路安全公司的開發實習生):
1.語言C/C++(參考書籍:<<C/C++ Primer>> ,<<C和指針>>,<<數據結構C語言描述>>)),匯編(王爽的匯編語言,作為入門,參考Intel手冊,之後參考看雪的<<加密與解密>>,了解PE文件的格式,加殼脫殼和病毒感染的手法,如果是開發的話,只需要了解即可,能用反匯編調試工具去做簡單的CrackMe即可),這個階段大約是大一大二的時間,除去老師上課教的C語言基礎,80x86匯編語言以為,很多知識都是自己去擴展。
2.windows api(win32sdk) 參考書籍(《Windows程序設計》,《Windows核心編程》,MFC之類的需要使用的時候在參考即可,不必花費太多精力,主要是去了解程序的消息機制,事件等等,應該把主要的精力比如線程注入,Ring3的各種HOOK等。這個階段是大二下學期的時間,說實話,我這個方面看的太少了,花了好多時間在一些沒有意義的事情上,導致到大三的時候參加信息安全比賽做驅動的時候經驗嚴重不足,所以基礎太重要了)
3.然後就是winows驅動內核的開發(參考書籍,寒江獨釣,張帆的Windows驅動開發技術詳解,WDK上的各種示例代碼) 熟悉各種過濾驅動框架(文件過濾驅動,文件微過濾驅動,tdi,ndis協議,ndis中間層,ndis小埠等等)。 然後就是各種系統底層的原理,進程創建的流程,文件創建的流程,進程間通信的過程,用各種調試,反匯編工具(od,ida,windbg)去跟蹤分析,可以寫一些Rootkit/Anti-Rootkit工具,比如對於進程隱藏和保護,有SSDT HOOK OpenProcess,摘除進程鏈表等等,這樣有助於對系統底層機制的理解
4.後期就是經驗和內功了,什麼《深入解析Windows操作系統》,《TCP/IP》卷123,《Windows內核原理與實現》等等,說白了,個人認為,底層開發對於調試的功力要求很高,能從藍屏的mp文件出有用的信息

❼ 關於Windows內核編程的問題

其實Windows內核編程不但有用,而且常用。很多我們每天都使用的軟體,就毫無疑問的使用了Windows內核編程的技術。最典型的就是實時監控的殺毒軟體。此外還有防火牆、虛擬光碟機、以及90%的驅動程序。這些程序的有一個共同的特點,他們的一部分組件,是作為Windows的一部分,能對 Windows上運行的所有的應用程序起作用。
因此內核編程的應用,往往給傳統軟體帶來更強的功能,實現技術上的飛躍。
舉個例子。我們常常聽說,對文件進行加密,可以使文檔更加安全。對文件加密並不需要任何內核組件。我們可以寫一個應用程序,讀入文件,加密數據,然後重寫為一個加密文件。解密也可以同樣如此。
但是實際上這並不滿足一般的用戶需求。對一個公司的員工來說,那些「重要的文檔」很可能就是每天工作所用的文件。想像一下,他必須要每天從伺服器上下載加密的文件,然後用解密工具解密。然後用Office開始工作。工作完畢後,用加密工具加密,再上傳,然後刪除工作文檔。且不說大部分時間文檔是以解密的方式保存在硬碟上的不安全性,這個工作流程是可以接受的嗎?沒有人會接受的。
比較「人性化」的方式就是讓Office可以直接打開已經加密的文檔。保存的時候,直接就保存成加密的文檔。硬碟上,這個文檔始終是加密的。而且對合法的用戶透明。對非法的用戶,則只能看見密文,從而無法編輯也無法閱讀。而且也不僅僅Office,還有AutoCAD、Visual Studio、Photoshop等等用戶可能用於編輯機密文件的所有的工具。這是可以實現的嗎?如果我們不能去修改Office和其他的工作軟體。
這當然是可以實現的。既然我們編寫Windows內核程序,當然可以讓Windows的文件系統從硬碟讀取文件的時候,對特定的進程進行特別的解密。等這些軟體讀取到數據的時候,它們讀到的已經是正常的數據了。這個過程和實時掃描病毒的原理是一樣的,使用一個文件過濾驅動程序。這就是讀者可能已經聽到過的文件透明加密技術。
在和《天書夜讀:從匯編語言到Windows內核編程》一書同一系列的《寒江獨釣——Windows內核編程與信息安全》(預計明年出版)中,對鍵盤過濾、硬碟過濾、文件過濾、網路過濾等安全相關的內核編程,都有詳盡的講解和例子。
內核編程的另一個特點是:這些代碼運行在R0級。R0級別是最高特權級別。對CPU有完全控制的能力。這非常的適合一些安全軟體,當然也適合做破壞的工作。因為內核程序有最高(也就是根)許可權,這樣的技術在安全領域(或者破壞領域)被稱為rootkit技術。rootkit技術是當前安全領域最熱門的技術之一。
許多病毒使用了rootkit技術。用來隱藏病毒文件,竊取密碼、發送攻擊包等等。rootkit病毒感染後極難清除,在感染前提前防範是最有效的辦法。
Windows內核確實沒有公開源代碼。但是MS提供Windows內核程序的開發包:WDK。WDK實際上主要用於開發驅動程序。而驅動程序基本上都是內核程序。WDK提供的頭文件以及部分源代碼,實際上就是Windows內核的代碼的一部分。有部分驅動程序(比如FAT32文件系統)的代碼是完全公開的。我們也可以在這里看到Windows內核開發者的代碼風格。同時,微軟也提供了所有Windows版本的符號表在網上供研究者下載。並提供了功能無比強大的調試器WinDbg。有了它們,你就可以輕松的調試Windows內核了。無論是你自己寫的代碼的部分,還是Windows內核開發者們編寫的部分。雖然看到的是匯編語言,但是函數名和全局變數名都是存在的。而且,所有的這些(WDK、WinDBG,符號表)都是免費的。

❽ VC怎麼寫鍵盤驅動

完整的鍵盤功能驅動挺復雜的,如果想了解下如何編寫鍵盤過濾驅動可以看看<寒江獨釣>,裡面有一章專門講鍵盤過濾與反過濾的

❾ 寒江獨釣:Windows內核安全編程的圖書目錄

第1章 內核上機指導 1
Windows內核編程的動手有點麻煩,並不是僅僅安裝一個獨立的軟體(比如VC)之後就可以安然地開始編寫代碼,然後運行了。需要下載開發包、配置開發環境、准備調試工具,可能還需要一些小工具協同工作。這一步攔住了不少的初學者。本章以詳細圖文攻略,來引導讀者完成這一麻煩的步驟。
1.1 下載和使用WDK 2
1.1.1 下載安裝WDK 2
1.1.2 編寫第一個C文件 3
1.1.3 編譯一個工程 5
1.2 安裝與運行 6
1.2.1 下載一個安裝工具 6
1.2.2 運行與查看輸出信息 7
1.2.3 在虛擬機中運行 9
1.3 調試內核模塊 9
1.3.1 下載和安裝WinDbg 9
1.3.2 設置Windows XP調試執行 10
1.3.3 設置Vista調試執行 11
1.3.4 設置VMWare的管道虛擬串口 11
1.3.5 設置Windows內核符號表 13
1.3.6 實戰調試first 14
練習題 16
第2章 內核編程環境及其特殊性 17
編寫過驅動程序的讀者可能會很熟悉這一切,但是對只從事過應用程序的讀者而言,要理解內核編程環境的特殊性,就很需要一些功夫和悟性了。在應用程序中,多線程的情況已經帶來了一定理解的困難;而內核代碼呢?幾乎無時無刻不運行在多線程之下。它從哪裡開始?從哪裡結束?它在什麼進程內運行?這些問題一言難盡。
2.1 內核編程的環境 18
2.1.1 隔離的應用程序 18
2.1.2 共享的內核空間 19
2.1.3 無處不在的內核模塊 20
2.2 數據類型 21
2.2.1 基本數據類型 21
2.2.2 返回狀態 22
2.2.3 字元串 23
2.3 重要的數據結構 23
2.3.1 驅動對象 23
2.3.2 設備對象 25
2.3.3 請求 26
2.4 函數調用 28
2.4.1 查閱幫助 28
2.4.2 幫助中有的幾類函數 30
2.4.3 幫助中沒有的函數 32
2.5 Windows的驅動開發模型 32
2.6 WDK編程中的特殊點 33
2.6.1 內核編程的主要調用源 33
2.6.2 函數的多線程安全性 34
2.6.3 代碼的中斷級 36
2.6.4 WDK中出現的特殊代碼 37
練習題 38
第3章 串口的過濾 40
在安全軟體的開發中,串口驅動的應用並不常見。但是本書以串口驅動作為第一個介紹的實例。為何?僅僅是因為串口簡單。從簡單的例子入手,可以為讀者帶來稍許輕松的感受。
3.1 過濾的概念 41
3.1.1 設備綁定的內核API之一 41
3.1.2 設備綁定的內核API之二 43
3.1.3 生成過濾設備並綁定 43
3.1.4 從名字獲得設備對象 45
3.1.5 綁定所有串口 46
3.2 獲得實際數據 47
3.2.1 請求的區分 47
3.2.2 請求的結局 48
3.2.3 寫請求的數據 49
3.3 完整的代碼 50
3.3.1 完整的分發函數 50
3.3.2 如何動態卸載 52
3.3.3 完整的代碼 53
本章的示例代碼 53
練習題 54
第4章 鍵盤的過濾 56
鍵盤是很重要的輸入設備!這是因為我們用鍵盤錄入信息、用鍵盤輸入密碼,甚至用鍵盤編程,也用鍵盤著書立說。對於黑客來說,使用龐大的計算機資源去破解那些堅不可摧的加密演算法,哪如偷偷地記下用戶用鍵盤輸入的密鑰更加簡單呢?本章專注於鍵盤的保護。
4.1 技術原理 57
4.1.1 預備知識 57
4.1.2 Windows中從擊鍵到內核 58
4.1.3 鍵盤硬體原理 60
4.2 鍵盤過濾的框架 61
4.2.1 找到所有的鍵盤設備 61
4.2.2 應用設備擴展 64
4.2.3 鍵盤過濾模塊的DriverEntry 65
4.2.4 鍵盤過濾模塊的動態卸載 66
4.3 鍵盤過濾的請求處理 68
4.3.1 通常的處理 68
4.3.2 PNP的處理 69
4.3.3 讀的處理 70
4.3.4 讀完成的處理 71
4.4 從請求中列印出按鍵信息 72
4.4.1 從緩沖區中獲得KEYBOARD_INPUT_DATA 72
4.4.2 從KEYBOARD_INPUT_DATA中得到鍵 73
4.4.3 從MakeCode到實際字元 74
4.5 Hook分發函數 75
4.5.1 獲得類驅動對象 76
4.5.2 修改類驅動的分發函數指針 77
4.5.3 類驅動之下的埠驅動 78
4.5.4 埠驅動和類驅動之間的協作機制 79
4.5.5 找到關鍵的回調函數的條件 80
4.5.6 定義常數和數據結構 80
4.5.7 打開兩種鍵盤埠驅動尋找設備 81
4.5.8 搜索在KbdClass類驅動中的地址 83
4.6 Hook鍵盤中斷反過濾 86
4.6.1 中斷:IRQ和INT 86
4.6.2 如何修改IDT 87
4.6.3 替換IDT中的跳轉地址 88
4.6.4 QQ的PS/2反過濾措施 90
4.7 利用IOAPIC重定位中斷處理函數 90
4.7.1 什麼是IOAPIC 90
4.7.2 如何訪問IOAPIC 91
4.7.3 編程修改IOAPIC重定位表 92
4.7.4 插入新的中斷處理 93
4.7.5 驅動入口和卸載的實現 95
4.8 直接用埠操作鍵盤 96
4.8.1 讀取鍵盤數據和命令埠 96
4.8.2 p2cUserFilter的最終實現 97
本章的示例代碼 98
練習題 99
第5章 磁碟的虛擬 100
CPU是計算機的核心,但是它不保存信息。如果它被竊,我們可以簡單地購買一個新的。但是如果裝滿了機密信息的硬碟被竊了,那可就不是買一個新的就能彌補得了的。本章介紹硬碟內核魔術:虛擬硬碟。虛擬硬碟可以不被盜竊者利用嗎?良好的設計可以做到這一點。
5.1 虛擬的磁碟 101
5.2 一個具體的例子 101
5.3 入口函數 102
5.3.1 入口函數的定義 102
5.3.2 Ramdisk驅動的入口函數 103
5.4 EvtDriverDeviceAdd函數 104
5.4.1 EvtDriverDeviceAdd的定義 104
5.4.2 局部變數的聲明 105
5.4.3 磁碟設備的創建 105
5.4.4 如何處理發往設備的請求 107
5.4.5 用戶配置的初始化 108
5.4.6 鏈接給應用程序 110
5.4.7 小結 111
5.5 FAT12/16磁碟卷初始化 111
5.5.1 磁碟卷結構簡介 111
5.5.2 Ramdisk對磁碟的初始化 113
5.6 驅動中的請求處理 119
5.6.1 請求的處理 119
5.6.2 讀/寫請求 120
5.6.3 DeviceIoControl請求 122
5.7 Ramdisk的編譯和安裝 124
5.7.1 編譯 124
5.7.2 安裝 125
5.7.3 對安裝的深入探究 125
練習題 126
第6章 磁碟過濾 127
很多網吧的老闆、公司的IT管理部門以及讀者自己都很厭惡硬碟總是被病毒和木馬搞得一團糟。一些簡單的還原軟體可以搞定這個問題:重啟之後,對硬碟的修改都奇跡般地消失了。這是怎麼實現的呢?本章告訴您答案。
6.1 磁碟過濾驅動的概念 128
6.1.1 設備過濾和類過濾 128
6.1.2 磁碟設備和磁碟卷設備過濾驅動 128
6.1.3 注冊表和磁碟卷設備過濾驅動 129
6.2 具有還原功能的磁碟卷過濾驅動 129
6.2.1 簡介 129
6.2.2 基本思想 130
6.3 驅動分析 130
6.3.1 DriverEntry函數 130
6.3.2 AddDevice函數 132
6.3.3 PnP請求的處理 136
6.3.4 Power請求的處理 140
6.3.5 DeviceIoControl請求的處理 140
6.3.6 bitmap的作用和分析 144
6.3.7 boot驅動完成回調函數和稀疏文件 150
6.3.8 讀/寫請求的處理 152
6.3.9 示例代碼 160
6.3.10 練習題 161
第7章 文件系統的過濾與監控 162
硬碟是硬碟,而文件系統是文件系統,可是有的人總是把它們當做一回事。其實硬碟很簡單,硬碟就是一個很簡單的保存信息的盒子;而復雜的是文件系統,它很精妙地把簡單的數據組織成復雜的文件。作為信息安全的專家,我們當然不能讓文件系統脫離我們的控制之外。
7.1 文件系統的設備對象 163
7.1.1 控制設備與卷設備 163
7.1.2 生成自己的一個控制設備 165
7.2 文件系統的分發函數 166
7.2.1 普通的分發函數 166
7.2.2 文件過濾的快速IO分發函數 167
7.2.3 快速IO分發函數的一個實現 169
7.2.4 快速IO分發函數逐個簡介 170
7.3 設備的綁定前期工作 172
7.3.1 動態地選擇綁定函數 172
7.3.2 注冊文件系統變動回調 173
7.3.3 文件系統變動回調的一個實現 175
7.3.4 文件系統識別器 176
7.4 文件系統控制設備的綁定 177
7.4.1 生成文件系統控制設備的過濾設備 177
7.4.2 綁定文件系統控制設備 178
7.4.3 利用文件系統控制請求 180
7.5 文件系統卷設備的綁定 183
7.5.1 從IRP中獲得VPB指針 183
7.5.2 設置完成函數並等待IRP完成 184
7.5.3 卷掛載IRP完成後的工作 187
7.5.4 完成函數的相應實現 190
7.5.5 綁定卷的實現 191
7.6 讀/寫操作的過濾 193
7.6.1 設置一個讀處理函數 193
7.6.2 設備對象的區分處理 194
7.6.3 解析讀請求中的文件信息 195
7.6.4 讀請求的完成 198
7.7 其他操作的過濾 202
7.7.1 文件對象的生存周期 202
7.7.2 文件的打開與關閉 203
7.7.3 文件的刪除 205
7.8 路徑過濾的實現 206
7.8.1 取得文件路徑的3種情況 206
7.8.2 打開成功後獲取路徑 207
7.8.3 在其他時刻獲得文件路徑 209
7.8.4 在打開請求完成之前獲得路徑名 209
7.8.5 把短名轉換為長名 211
7.9 把sfilter編譯成靜態庫 212
7.9.1 如何方便地使用sfilter 212
7.9.2 初始化回調、卸載回調和綁定回調 213
7.9.3 綁定與回調 215
7.9.4 插入請求回調 216
7.9.5 如何利用sfilter.lib 218
本章的示例代碼 221
練習題 221
第8章 文件系統透明加密 223
如何阻止企業的機密文件被主動泄密,但是又不用關閉網路、禁止U盤等手段重重束縛大家?很多跡象表明,文件系統透明加密是最優的選擇。既然從前一章讀者已經學會了控制文件系統,那麼現在,該是我們摩拳擦掌,用它來保護我們的機密信息的時候了。
8.1 文件透明加密的應用 224
8.1.1 防止企業信息泄密 224
8.1.2 文件透明加密防止企業信息泄密 224
8.1.3 文件透明加密軟體的例子 225
8.2 區分進程 226
8.2.1 機密進程與普通進程 226
8.2.2 找到進程名字的位置 227
8.2.3 得到當前進程的名字 228
8.3 內存映射與文件緩沖 229
8.3.1 記事本的內存映射文件 229
8.3.2 Windows的文件緩沖 230
8.3.3 文件緩沖:明文還是密文的選擇 232
8.3.4 清除文件緩沖 233
8.4 加密標識 236
8.4.1 保存在文件外、文件頭還是文件尾 236
8.4.2 隱藏文件頭的大小 237
8.4.3 隱藏文件頭的設置偏移 239
8.4.4 隱藏文件頭的讀/寫偏移 240
8.5 文件加密表 241
8.5.1 何時進行加密操作 241
8.5.2 文件控制塊與文件對象 242
8.5.3 文件加密表的數據結構與初始化 243
8.5.4 文件加密表的操作:查詢 244
8.5.5 文件加密表的操作:添加 245
8.5.6 文件加密表的操作:刪除 246
8.6 文件打開處理 248
8.6.1 直接發送IRP進行查詢與設置操作 248
8.6.2 直接發送IRP進行讀/寫操作 250
8.6.3 文件的非重入打開 252
8.6.4 文件的打開預處理 255
8.7 讀寫加密/解密 260
8.7.1 在讀取時進行解密 260
8.7.2 分配與釋放MDL 261
8.7.3 寫請求加密 262
8.8 crypt_file的組裝 265
8.8.1 crypt_file的初始化 265
8.8.2 crypt_file的IRP預處理 266
8.8.3 crypt_file的IRP後處理 269
本章的示例代碼 272
練習題 272
第9章 文件系統微過濾驅動 273
從來都不原地踏步的微軟,早就准備好了下一代的文件系統過濾的框架、文檔、代碼例子。雖然本書的前兩章的範例在Windows 7上都還可以正常運行,但是如果不學習一下最新的介面,讀者一定會覺得不自在。但是讀者可以放心,在前面學習的基礎上,了解新的介面是易如反掌的。
9.1 文件系統微過濾驅動簡介 274
9.1.1 文件系統微過濾驅動的由來 274
9.1.2 Minifilter的優點與不足 275
9.2 Minifilter的編程框架 275
9.2.1 微文件系統過濾的注冊 276
9.2.2 微過濾器的數據結構 277
9.2.3 卸載回調函數 280
9.2.4 預操作回調函數 281
9.2.5 後操作回調函數 284
9.2.6 其他回調函數 285
9.3 Minifilter如何與應用程序通信 288
9.3.1 建立通信埠的方法 288
9.3.2 在用戶態通過DLL使用通信埠的範例 290
9.4 Minifilter的安裝與載入 292
9.4.1 安裝Minifilter的INF文件 293
9.4.2 啟動安裝完成的Minifilter 294
本章的示例代碼 295
練習題 295
第10章 網路傳輸層過濾 296
筆者常常使用防火牆,它們看上去真的很神奇。如果懷疑自己的機器上有見不得人的進程打開了網路埠盜走機密信息,防火牆將提醒您,雖然防火牆並不知道它是否是一個木馬。這是怎麼做到的?本章為您揭曉謎底。
10.1 TDI概要 297
10.1.1 為何選擇TDI 297
10.1.2 從socket到Windows內核 297
10.1.3 TDI過濾的代碼例子 299
10.2 TDI的過濾框架 299
10.2.1 綁定TDI的設備 299
10.2.2 唯一的分發函數 300
10.2.3 過濾框架的實現 302
10.2.4 主要過濾的請求類型 304
10.3 生成請求:獲取地址 305
10.3.1 過濾生成請求 305
10.3.2 准備解析IP地址與埠 307
10.3.3 獲取生成的IP地址和埠 308
10.3.4 連接終端的生成與相關信息的保存 310
10.4 控制請求 311
10.4.1 TDI_ASSOCIATE_ADDRESS的過濾 311
10.4.2 TDI_CONNECT的過濾 313
10.4.3 其他的次功能號 314
10.4.4 設置事件的過濾 316
10.4.5 TDI_EVENT_CONNECT類型的設置事件的過濾 318
10.4.6 直接獲取發送函數的過濾 320
10.4.7 清理請求的過濾 322
10.5 本書例子tdifw.lib的應用 323
10.5.1 tdifw庫的回調介面 323
10.5.2 tdifw庫的使用例子 325
本章的示例代碼 326
練習題 327
第11章 NDIS協議驅動 328
網路的連接只是外表而已,實際上,最終它們變成了一個個在網線上往返的網路包。高明的黑客是不會去用Socket來生成連接的。把黑暗的信息隱藏在單個的數據包里,你還可以發現它們嗎?本章介紹的NDIS協議驅動,是Windows網路抓包工具的基礎。
11.1 乙太網包和網路驅動架構 329
11.1.1 乙太網包和協議驅動 329
11.1.2 NDIS網路驅動 330
11.2 協議驅動的DriverEntry 331
11.2.1 生成控制設備 331
11.2.2 注冊協議 333
11.3 協議與網卡的綁定 335
11.3.1 協議與網卡的綁定概念 335
11.3.2 綁定回調處理的實現 335
11.3.3 協議綁定網卡的API 338
11.3.4 解決綁定競爭問題 339
11.3.5 分配接收和發送的包池與緩沖池 340
11.3.6 OID請求的發送和請求完成回調 342
11.3.7 ndisprotCreateBinding的最終實現 345
11.4 綁定的解除 351
11.4.1 解除綁定使用的API 351
11.4.2 ndisprotShutdownBinding的實現 353
11.5 在用戶態操作協議驅動 356
11.5.1 協議的收包與發包 356
11.5.2 在用戶態編程打開設備 357
11.5.3 用DeviceIoControl發送控制請求 358
11.5.4 用WriteFile發送數據包 360
11.5.5 用ReadFile發送數據包 362
11.6 在內核態完成功能的實現 363
11.6.1 請求的分發與實現 363
11.6.2 等待設備綁定完成與指定設備名 364
11.6.3 指派設備的完成 365
11.6.4 處理讀請求 368
11.6.5 處理寫請求 370
11.7 協議驅動的接收回調 374
11.7.1 和接收包有關的回調函數 374
11.7.2 ReceiveHandler的實現 376
11.7.3 TransferDataCompleteHandler的實現 380
11.7.4 ReceivePacketHandler的實現 381
11.7.5 接收數據包的入隊 383
11.7.6 接收數據包的出隊和讀請求的完成 385
本章的示例代碼 388
練習題 389
第12章 NDIS小埠驅動 390
如果厭煩了漏洞百出的乙太網,還有什麼可以充當我的網路介面嗎?當然,一切能通信的設備,皆有替代乙太網的潛質。即使您不願意修改無數通過TCP介面編程的應用程序,我們依然可以用其他通信設備來虛擬網卡。本章介紹小埠驅動來虛擬網卡的技術。
12.1 小埠驅動的應用與概述 391
12.1.1 小埠驅動的應用 391
12.1.2 小埠驅動的實例 392
12.1.3 小埠驅動的運作與編程概述 393
12.2 小埠驅動的初始化 393
12.2.1 小埠驅動的DriverEntry 393
12.2.2 小埠驅動的適配器結構 396
12.2.3 配置信息的讀取 397
12.2.4 設置小埠適配器上下文 398
12.2.5 MPInitialize的實現 399
12.2.6 MPHalt的實現 402
12.3 打開ndisprot設備 403
12.3.1 I/O目標 403
12.3.2 給IO目標發送DeviceIoControl請求 404
12.3.3 打開ndisprot介面並完成配置設備 406
12.4 使用ndisprot發送包 409
12.4.1 小埠驅動的發包介面 409
12.4.2 發送控制塊(TCB) 409
12.4.3 遍歷包組並填寫TCB 412
12.4.4 寫請求的構建與發送 415
12.5 使用ndisprot接收包 417
12.5.1 提交數據包的內核API 417
12.5.2 從接收控制塊(RCB)提交包 418
12.5.3 對ndisprot讀請求的完成函數 420
12.5.4 讀請求的發送 422
12.5.5 用於讀包的WDF工作任務 424
12.5.6 ndisedge讀工作任務的生成與入列 426
12.6 其他的特徵回調函數的實現 428
12.6.1 包的歸還 428
12.6.2 OID查詢處理的直接完成 429
12.6.3 OID設置處理 432
本章的示例代碼 433
練習題 434
第13章 NDIS中間層驅動 435
當我們不滿足於抓包和發包,而試圖控制本機上流入和流出的所有數據包的時候,NDIS中間層驅動是最終的選擇。防火牆的功能在這里得到加強:我們不再滿足於看到連接、埠、對方IP地址,而是要看到每一個數據包的原始結構。本章介紹NDIS中間層驅動。
13.1 NDIS中間層驅動概述 436
13.1.1 Windows網路架構總結 436
13.1.2 NDIS中間層驅動簡介 437
13.1.3 NDIS中間層驅動的應用 438
13.1.4 NDIS包描述符結構深究 439
13.2 中間層驅動的入口與綁定 442
13.2.1 中間層驅動的入口函數 442
13.2.2 動態綁定NIC設備 443
13.2.3 小埠初始化(MpInitialize) 445
13.3 中間層驅動發送數據包 447
13.3.1 發送數據包原理 447
13.3.2 包描述符「重利用」 448
13.3.3 包描述符「重申請」 451
13.3.4 發送數據包的非同步完成 453
13.4 中間層驅動接收數據包 455
13.4.1 接收數據包概述 455
13.4.2 用PtReceive接收數據包 456
13.4.3 用PtReceivePacket接收 461
13.4.4 對包進行過濾 463
13.5 中間層驅動程序查詢和設置 466
13.5.1 查詢請求的處理 466
13.5.2 設置請求的處理 468
13.6 NDIS句柄 470
13.6.1 不可見的結構指針 470
13.6.2 常見的NDIS句柄 471
13.6.3 NDIS句柄誤用問題 473
13.6.4 一種解決方案 475
13.7 生成普通控制設備 476
13.7.1 在中間層驅動中添加普通設備 476
13.7.2 使用傳統方法來生成控制設備 478
本章的示例代碼 483
練習題 483
附錄A 如何使用本書的源碼光碟 485

閱讀全文

與寒江獨釣串口過濾驅動相關的資料

熱點內容
pvdf超濾芯內壓式好不好 瀏覽:496
豪爵vf125怎麼換空氣濾芯 瀏覽:672
安吉爾a6新濾芯怎麼清洗 瀏覽:713
怎樣去除茶壺里的水垢小妙招 瀏覽:854
反滲透r0膜好壞如何區別 瀏覽:129
南宮純水岸的電費怎麼交 瀏覽:145
為什麼飲水機一股狐臭味 瀏覽:736
cod中廢水怎麼處理 瀏覽:802
水處理化驗室安全管理制度 瀏覽:446
焦化廢水吡啶 瀏覽:606
天正中污廢水管的坡度如何設置 瀏覽:591
純水燉人參湯是什麼顏色 瀏覽:402
凈水器濾桶什麼樣子 瀏覽:856
保溫瓶里的水垢用鹽可以洗嗎 瀏覽:27
優點飲水機濾芯換後如何復位 瀏覽:147
美菱飲水機無冷水流出什麼原因 瀏覽:726
冷卻水管道除垢 瀏覽:820
凈水機tsd達到多少需要換濾芯 瀏覽:87
為什麼要夠買空氣凈化器 瀏覽:650
小鴨凈水器電話是多少號 瀏覽:75