- 寒江獨釣:Windows內核安全編程
- 譚文 楊瀟 邵堅磊等著
- 1794字
- 2018-12-27 18:54:30
前言
本書是一本專門介紹實時掃描的防毒軟件、虛擬磁盤、硬盤還原、硬盤加密、文件系統保護、文件透明加密、防火墻、密碼輸入保護等軟件的Windows內核模塊的具體實現方法的編程技術書。本書的目的是使讀者能夠用C語言編寫這些核心模塊。
大學的時候,在Windows平臺上我最初學的是VB,然后是Delphi。我的感覺是,無論想實現任何功能,都早已有工具的開發者給我們準備了良好的接口和文檔,讓我們學習和使用都非常的方便。因此覺得自己已經學到了終點。如果僅從“能實現功能”的角度講,我沒有必要再學習了,剩下的事情,只是去很舒適地使用那些接口就可以了。那又何必再學習Windows編程呢?
工作之后遇到了障礙。我的第一個任務是實現一個網絡的虛擬磁盤。我雖然自以為無所不能,但是也找不到在Windows系統里增加一個虛擬磁盤的API在哪里。我每天都在使用虛擬光驅、殺毒軟件、防火墻,但是我從未想過它們如何實現。不是因為我懂,而是因為我自以為任何功能的實現一定是簡單而舒適的,等需要的時候再去研究,絕不會有什么困難。
但是實際編碼的時候才明白:良好的接口、舒適的編碼過程,絕對不是天生之道。天地萬物自混沌而起,那些美好的表面,不過是在殘酷的現實上重重包裹的包裝紙罷了。
一輛新車的表面自然光彩照人,操作接口也人性而美好。但是一旦需要打開車身去修理內部某根漏油的管子,就沒有那么容易和舒適了。造成這種情況,絕不是Windows的底層開發者們天生沒有美學觀念。那些多年積累和維護著并不斷改進的無數行代碼,已經是人類工程史上的奇跡了。如今要打開它的外殼去肆意修理,當然不是一件輕松的事情。
但這正是Windows內核編程的魅力所在。
只有極少的程序員會需要參與微軟的Windows內核開發,也只有極少的讀者會自己試圖從頭開發一個類Windows的操作系統內核(有這方面興趣的讀者,建議參考開源項目ReactOS)。單純地講解Windows內核編程對大多數讀者都沒有意義。但是,信息安全類的軟件是內核編程的極好的應用實例。病毒實時監控、防火墻、入侵檢測、數據保護還原、數據即時備份、數據加密、數據防止泄密、反外掛等,都不同程度地涉及到內核編程;或者,內核編程可以讓它們工作得更好。這些就是本書的內容,因此本書的副標題為“Windows內核安全編程”。“寒江獨釣”則表明了這個領域的寒冷與寂寥。
本書和《天書夜讀——從匯編語言到Windows內核編程》的不同之處在于:《天書夜讀》一書介紹的是自己調試Windows內核、獲取知識、解決問題的技巧。因此《天書夜讀》一書介紹的內容大部分是沒有文檔可循的,容易走火入魔。
本書則基本上介紹的是正統的內核編程技術,是微軟在內核編程中給信息安全軟件開發者提供的相關接口的大集合,是名門正派的技術,不沾邪氣。一個好的內核程序員,“正邪兼修”是有必要的。
本書既適合于有志于成為軟件程序員的學生使用,也適合于希望加強自己的技術實力的Windows程序員閱讀,同時更適合于從事信息安全行業的Windows軟件的開發者作為手頭參考。
本書對改善病毒橫行的網絡現狀也有一定益處。雖然無助于勸說那些孜孜不倦的病毒開發者們棄惡從善,但是至少有助于他們提高技術素養,學會更認真地編寫程序,以免總是寫出導致程序崩潰和系統藍屏的代碼,影響無辜者的正常工作。
本書假定讀者了解C語言,能理解C語言的基本語法,并且學習過操作系統、計算機網絡和數據結構的基礎知識。一般來說,如果讀者聽說過“進程”、“文件系統”、“中斷”、“TCP協議”、“以太網包”、“鏈表”、“哈希表”、“加密算法”這些名詞,則足夠閱讀此書了。
有些讀者可能會關心作為一個程序員的就業前景。這也是我非常關心的一個問題。我曾經在杭州的核新軟件公司為證券營業部開發防火墻和虛擬磁盤,一共3年的時間;后來在日電卓越軟件(北京)的上海分公司開發部信息安全開發課工作了3年。我認識的業界朋友們,大多在賽門鐵克、趨勢、瑞星、EMC、華賽這樣的公司就職。現在是我工作的第7個年頭了,我在Intel在上海的紫竹中心參與動態二進制翻譯項目。最有價值的是,我參與的每一個項目都讓我學習到更多的知識,面對許多前所未有的考驗,每一步都讓人充滿了精神上的成就感。
本書的讀者未來很可能會從事底層編碼的工作,而不是一個上層的設計和管理人員。從事底層編碼的程序員,常常被同事稱為“牛人”。這個牛人不是“牛皮哄哄的人”的意思,而是“像牛一樣辛苦工作的人”的意思。想從事這個行業的讀者,我抄我的前同事錢錚最喜歡的一首古詩《代牛言》獻給您:
渴飲潁水流,餓喘吳門月。黃金如可種,我力終不竭。
譚文
2009年1月1日
- Mastering Mesos
- PPT,要你好看
- Hands-On Intelligent Agents with OpenAI Gym
- TIBCO Spotfire:A Comprehensive Primer(Second Edition)
- 程序設計語言與編譯
- 機艙監測與主機遙控
- 數據通信與計算機網絡
- 數據庫系統原理及應用教程(第5版)
- Splunk Operational Intelligence Cookbook
- 影視后期編輯與合成
- Blender 3D Printing by Example
- Statistics for Data Science
- 手機游戲程序開發
- Data Analysis with R(Second Edition)
- 精通ROS機器人編程(原書第2版)