注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件與程序設計其他編程語言/工具天書夜讀:從匯編語言到Windows內(nèi)核編程

天書夜讀:從匯編語言到Windows內(nèi)核編程

天書夜讀:從匯編語言到Windows內(nèi)核編程

定 價:¥45.00

作 者: 譚文,邵堅磊 著
出版社: 電子工業(yè)出版社
叢編項: 驅網(wǎng)核心技術叢書
標 簽: 程序設計

ISBN: 9787121073397 出版時間: 2008-10-01 包裝: 平裝
開本: 16開 頁數(shù): 269 字數(shù):  

內(nèi)容簡介

  本書從基本的Windows程序與匯編指令出發(fā),深入淺出地講解了Windows內(nèi)核的編程、調試、閱讀,以及自行探索的方法。讀者在使用C/C++開發(fā)Windows程序的基礎上,將熟練掌握匯編和C語言的應用,深入了解Windows底層,并掌握閱讀Windows內(nèi)核的基本方法,以及Windows內(nèi)核的基本編程方法。本書適合使用C/C++在Windows上編程的讀者,尤其適合希望加深自己技術功底的Windows應用程序員、計算機專業(yè)的有志于軟件開發(fā)的大中院校學生;專業(yè)的Windows內(nèi)核程序員,亦可從本書得到超越一般內(nèi)核程序開發(fā)的啟發(fā)。

作者簡介

  譚文:從2002年到2008年,從事信息安全類軟件的Windows內(nèi)核驅動的開發(fā)工作。從2008年開始參與一個主要涉及不同架構之間二進制指令的實時翻譯技術的項目的開發(fā)。業(yè)余時間在驅動開發(fā)音(www.driverdevelop.com)以楚狂人為筆名發(fā)表了許多技術文章。

圖書目錄

入手篇  熟悉匯編
本書的第一部分,將幫助讀者消除對匯編的恐懼,熟悉匯編。本部分包括第1~3章。稍顯枯燥的是,它們和Windows內(nèi)核無關,是純C語言與匯編語言的關系的章節(jié)。如果讀者已經(jīng)精通匯編語言,并能順利閱讀匯編代碼,請直接跳過本部分。
第1章  匯編指令與C語言 2
1.1  上機建立第一個工程 4
1.1.1  用Visual Studio創(chuàng)建工程 4
1.1.2  用Visual Studio查看匯編代碼 5
1.2  簡要復習常用的匯編指令 6
1.2.1  堆棧相關指令 6
1.2.2  數(shù)據(jù)傳送指令 7
1.2.3  跳轉與比較指令 8
1.3  C函數(shù)的參數(shù)傳遞過程 9
第2章  C語言的流程和處理 14
2.1  C語言的循環(huán)反匯編 15
2.1.1  for循環(huán) 15
2.1.2  do循環(huán) 16
2.1.3  while循環(huán) 17
2.2  C語言判斷與分支的反匯編 18
2.2.1  if-else判斷分支 18
2.2.2  switch-case判斷分支 19
2.3  C語言的數(shù)組與結構 22
2.4  C語言的共用體和枚舉類型 24
第3章  練習反匯編C語言程序 26
3.1  算法的反匯編 27
3.1.1  算法反匯編代碼分析 27
3.1.2  算法反匯編閱讀技巧 28
3.2  發(fā)行版的反匯編 29
3.3  匯編反C語言練習 33
基礎篇  內(nèi)核編程
本書的第二部分,是編寫Windows內(nèi)核程序編程方法的基礎。本部分包括第4~7章,如果讀者對Windows內(nèi)核編程已經(jīng)有一定的了解,可以跳過本部分;如果讀者從未接觸過Windows內(nèi)核編程,本部分將指導讀者開始Windows內(nèi)核編程,學會使用WDK,并熟悉內(nèi)核編程的習慣與方法。
第4章  內(nèi)核字符串與內(nèi)存 38
4.1  字符串的處理 39
4.1.1  使用字符串結構 39
4.1.2  字符串的初始化 41
4.1.3  字符串的拷貝 42
4.1.4  字符串的連接 42
4.1.5  字符串的打印 43
4.2  內(nèi)存與鏈表 45
4.2.1  內(nèi)存的分配與釋放 45
4.2.2  使用LIST_ENTRY 46
4.2.3  使用長長整型數(shù)據(jù) 49
4.2.4  使用自選鎖 50
第5章  文件與注冊表操作 52
5.1  文件操作 53
5.1.1  使用OBJECT_ATTRIBUTES 53
5.1.2  打開和關閉文件 54
5.1.3  文件讀/寫操作 58
5.2  注冊表操作 60
5.2.1  注冊表鍵的打開 60
5.2.2  注冊表值的讀 62
5.2.3  注冊表值的寫 65
第6章  時間與線程 67
6.1  時間與定時器 68
6.1.1  獲得當前滴答數(shù) 68
6.1.2  獲得當前系統(tǒng)時間 69
6.1.3  使用定時器 70
6.2  線程與事件 73
6.2.1  使用系統(tǒng)線程 73
6.2.2  在線程中睡眠 75
6.2.3  使用同步事件 76
第7章  驅動、設備與請求 79
7.1  驅動與設備 80
7.1.1  驅動入口與驅動對象 80
7.1.2  分發(fā)函數(shù)和卸載函數(shù) 80
7.1.3  設備與符號鏈接 82
7.1.4  設備的安全創(chuàng)建 83
7.1.5  設備與符號鏈接的用戶相關性 85
7.2  請求處理 86
7.2.1  IRP與IO_STACK_LOCATION 86
7.2.2  打開與關閉請求的處理 88
7.2.3  應用層信息傳入 89
7.2.4  驅動層信息傳出 91
探索篇  研究內(nèi)核
本書的第三部分,開始探索Windows內(nèi)核程序,并嘗試閱讀反匯編代碼作為指引。本部分包括第8~10章。如果讀者對Windows內(nèi)核編程已經(jīng)有一定的了解,這一部分會比較有趣;如果讀者從未接觸過Windows內(nèi)核編程,讀者應該先學習第二部分。能自己編寫內(nèi)核程序并不意味著可以讀懂內(nèi)核,雖然反過來是一定成立的。讀懂別人編寫的沒有代碼的程序,比自己編寫更困難一些,但的確是值得的。
第8章  進入Windows內(nèi)核 96
8.1  開始Windows內(nèi)核編程 97
8.1.1  內(nèi)核編程的環(huán)境準備 97
8.1.2  用C語言寫一個內(nèi)核程序 99
8.2  學習用WinDbg進行調試 102
8.2.1  軟件的準備 102
8.2.2  設置Windows XP調試執(zhí)行 103
8.2.3  設置VMWare虛擬機調試 104
8.2.4  設置被調試機為Vista的情況 105
8.2.5  設置Windows內(nèi)核符號表 106
8.2.6  調試例子diskperf 106
8.3  認識內(nèi)核代碼函數(shù)調用方式 107
8.4  嘗試反寫C內(nèi)核代碼 111
8.5  如何在代碼中尋找需要的信息 113
第9章  用C++編寫的內(nèi)核程序 117
9.1  用C++開發(fā)內(nèi)核程序 118
9.1.1  建立一個C++的內(nèi)核工程 118
9.1.2  使用C接口標準聲明 119
9.1.3  使用類靜態(tài)成員函數(shù) 120
9.1.4  實現(xiàn)new操作符 121
9.2  開始閱讀一個反匯編的類 122
9.2.1  new操作符的實現(xiàn) 122
9.2.2  構造函數(shù)的實現(xiàn) 124
9.3  了解更多的C++特性 126
第10章  繼續(xù)探索Windows內(nèi)核 131
10.1  探索Windows已有內(nèi)核調用 132
10.2  自己實現(xiàn)XP的新調用 135
10.2.1  對照調試結果和數(shù)據(jù)結構 135
10.2.2  寫出C語言的對應代碼 137
10.3  沒有符號表的情況 138
10.4  64位操作系統(tǒng)下的情況 141
10.4.1  分析64位操作系統(tǒng)的調用 143
10.4.2  深入了解64位內(nèi)核調用參數(shù)傳遞 145
深入篇  修改內(nèi)核
這是本書的第四部分。讀者已經(jīng)嘗試過探索Windows內(nèi)核程序,并嘗試閱讀反匯編代碼。那么接下來,必須掌握修改內(nèi)核的方法。每一個Windows內(nèi)核程序,都可以看做Windows內(nèi)核本身的一個“補丁”。有時只需要獨立存在,就能起到它的作用;有時卻必須對已有的內(nèi)核二進制代碼進行部分修改。本部分包括第11~13章,主要介紹的是內(nèi)核Hook。
第11章  機器碼與反匯編引擎 150
11.1  了解Intel的機器碼 151
11.1.1  可執(zhí)行指令與數(shù)據(jù) 151
11.1.2  單條指令的組成 152
11.1.3  MOD-REG-R/M的組成 155
11.1.4  其他的組成部分 157
11.2  反匯編引擎XDE32基本數(shù)據(jù)結構 159
11.3  反匯編引擎XDE32具體實現(xiàn) 162
第12章  CPU權限級與分頁機制 166
12.1  Ring0和Ring3權限級 167
12.2  保護模式下的分頁內(nèi)存保護 169
12.3  分頁內(nèi)存不可執(zhí)行保護 172
12.3.1  不可執(zhí)行保護原理 172
12.3.2  不可執(zhí)行保護的漏洞 173
12.4  權限級別的切換 177
12.4.1  調用門及其漏洞 178
12.4.2  sysenter和sysexit指令 181
第13章  開發(fā)Windows內(nèi)核Hook 186
13.1  XP下Hook系統(tǒng)調用IoCallDriver 187
13.2  Vista下IofCallDriver的跟蹤 189
13.3  Vista下inline hook 193
13.3.1  寫入跳轉指令并拷貝代碼 193
13.3.2  實現(xiàn)中繼函數(shù) 196
實戰(zhàn)篇  實際開發(fā)
實戰(zhàn)部分是本書最深入和復雜的一部分,包括第14~17章。為了讓前面練習的成果,在實際應用中產(chǎn)生價值,在這部分我們補充更多的理論知識并嘗試用它們?nèi)プ鲆稽c什么。這一部分包括指令分析、硬件基礎知識、內(nèi)核Hook的實際開發(fā)練習,以及將完成一個用到內(nèi)核Hook的有趣的實例,這個實例有助于計算機阻擋各種病毒和木馬的侵襲。
此外,本部分還包括特殊的一章,涉及如何巧妙地編寫代碼,來防止被其他不受歡迎的讀者閱讀。這與本書的主旨完全相反,正所謂物極必反。
第14章  反病毒、木馬實例開發(fā) 200
14.1  反病毒、木馬的設想 201
14.2  開發(fā)內(nèi)核驅動 204
14.2.1  在內(nèi)核中檢查可執(zhí)行文件 204
14.2.2  在內(nèi)核中生成設備接口 208
14.2.3  在內(nèi)核中等待監(jiān)控進程的響應 210
14.3  開發(fā)監(jiān)控進程 216
14.4  本軟件進一步展望 218
第15章  Rootkit與HIPS 220
15.1  Rootkit為何很重要 222
15.2  Rootkit如何逃過檢測 224
15.3  HIPS如何檢測Rootkit 234
第16章  手寫指令保護代碼 237
16.1  混淆字符串 238
16.2  隱藏內(nèi)核函數(shù) 244
16.3  混淆流程與數(shù)據(jù)操作 251
16.3.1  混淆函數(shù)出口 251
16.3.2  插入有意義的花指令 253
第17章  用VMProtect保護代碼 258
17.1  安裝VMProtect 259
17.2  使用VMProtect 261
17.3  查看VMProtect效果 267
參考文獻 270

本目錄推薦

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