天書夜讀

天書夜讀

《天書夜讀》是2008年出版的一本圖書,作者是譚文,邵堅磊 。

內容介紹

從貌似天書的彙編代碼中,一探Windows底層的核心實現。.

在開發中出現的問題,能從Windows自身找到答案!...

本書從基本的Windows程式與彙編指令出發,深入淺出地講解了Windows核心的編程、調試、閱讀,以及自行探索的方法。讀者在使用C/C++ 開發Windows程式的基礎上,將熟練掌握彙編和C語言的套用,深入了解Windows底層,並掌握閱讀Windows核心的基本方法,以及 Windows核心的基本編程方法。

本書適合使用C/C++在Windows上編程的讀者,尤其適合希望加深自己技術功底的Windows應用程式員、計算機專業的有志於軟體開發的大中院校學生;專業的Windows核心程式設計師,亦可從本書得到超越一般核心程式開發的啟發。

目錄

入手篇 熟悉彙編

第1章 彙編指令與C語言

1.1 上機建立第一個工程

1.1.1 用Visual Studio創建工程

1.1.2 用Visual Studio查看彙編代碼

1.2 簡要複習常用的彙編指令

1.2.1 堆疊相關指令

1.2.2 數據傳送指令

1.2.3 跳轉與比較指令

1.3 C函式的參數傳遞過程

第2章 C語言的流程和處理

2.1 C語言的循環反彙編

2.1.1 for循環

2.1.2 do循環

2.1.3 while循環

2.2 C語言判斷與分支的反彙編代碼分析

2.2.1 if-else判斷分支

2.2.2 switch-case判斷分支

2.3 C語言的數組與結構

2.4 C語言的共用體和枚舉類型

第3章 練習反彙編C語言程式

3.1 算法的反彙編

3.1.1 算法反彙編代碼分析

3.1.2 算法反彙編閱讀技巧

3.2 發行版的反彙編

3.3 彙編反C語言練習

基礎篇 核心編程

第4章 核心字元串與記憶體

4.1 字元串的處理

4.1.1 使用字元串結構

4.1.2 字元串的初始化

4.1.3 字元串的拷貝

4.1.4 字元串的連線

4.1.5 字元串的列印

4.2 記憶體與鍊表

4.2.1 記憶體的分配與釋放

4.2.2 使用LIST_ENTRY

4.2.3 使用長長整型數據

4.2.4 使用自旋鎖

第5章 檔案與註冊表操作

5.1 檔案操作

5.1.1 使用OBJECT_ATTRIBUTES

5.1.2 打開和關閉檔案

5.1.3 檔案讀/寫操作

5.2 註冊表操作

5.2.1 註冊表鍵的打開

5.2.2 註冊表值的讀

5.2.3 註冊表值的寫

第6章 時間與執行緒

6.1 時間與定時器

6.1.1 獲得當前滴答數

6.1.2 獲得當前系統時間

6.1.3 使用定時器

6.2 執行緒與事件

6.2.1 使用系統執行緒

6.2.2 線上程中睡眠

6.2.3 使用同步事件

第7章 驅動、設備與請求

7.1 驅動與設備

7.1.1 驅動入口與驅動對象

7.1.2 分發函式和卸載函式

7.1.3 設備與符號連結

7.1.4 設備的安全創建

7.1.5 設備與符號連結的用戶相關性

7.2 請求處理

7.2.1 IRP與IO_STACK_LOCATION

7.2.2 打開與關閉請求的處理

7.2.3 套用層信息傳入

7.2.4 驅動層信息傳出

探索篇 研究核心

第8章 進入WINDOWS核心

8.1 開始WINDOWS核心編程

8.1.1 核心編程的環境準備

8.1.2 用C語言寫一個核心程式

8.2 學習用WINDBG進行調試

8.2.1 軟體的準備

8.2.2 設定Windows XP調試執行

8.2.3 設定VMWare虛擬機調試

8.2.4 設定被調試機為Vista的情況

8.2.5 設定Windows核心符號表

8.2.6 調試例子diskperf

8.3 認識核心代碼函式調用方式

8.4 嘗試反寫C核心代碼

8.5 如何在代碼中尋找需要的信息

第9章 用C++編寫的核心程式

9.1 用C++開發核心程式

9.1.1 建立一個C++的核心工程

9.1.2 使用C接口標準聲明

9.1.3 使用類靜態成員函式

9.1.4 實現new操作符

9.2 開始閱讀一個反彙編的類

9.2.1 new操作符的實現

9.2.2 構造函式的實現

9.3 了解更多的C++特性

第10章 繼續探索WINDOWS核心

10.1 探索WINDOWS已有核心調用

10.2 自己實現XP的新調用

10.2.1 對照調試結果和數據結構

10.2.2 寫出C語言的對應代碼

10.3 沒有符號表的情況

10.4 64位作業系統下的情況

10.4.1 分析64位作業系統的調用

10.4.2 深入了解64位核心調用參數傳

深入篇 修改核心

第11章 機器碼與反彙編引擎

11.1 了解INTEL的機器碼

11.1.1 可執行指令與數據

11.1.2 單條指令的組成

11.1.3 MOD-REG-R/M的組成

11.1.4 其他的組成部分

11.2 反彙編引擎XDE32基本數據結構

11.3 反彙編引擎XDE32具體實現

第12章 CPU許可權級與分頁機制

12.1 RING0和RING3許可權級

12.2 保護模式下的分頁記憶體保護

12.3 分頁記憶體不可執行保護

12.3.1 不可執行保護原理

12.3.2 不可執行保護的漏洞

12.4 許可權級別的切換

12.4.1 調用門及其漏洞

12.4.2 sysenter和sysexit指令

第13章 開發WINDOWS核心HOOK

13.1 XP下HOOK系統調用IOCALLDRIVER

13.2 VISTA下IOFCALLDRIVER的跟蹤

13.3 VISTA下INLINE HOOK

13.3.1 寫入跳轉指令並拷貝代碼

13.3.2 實現中繼函式

實戰篇 實際開發

第14章 反病毒、木馬實例開發

14.1 反病毒、木馬的構想

14.2 開發核心驅動

14.2.1 在核心中檢查執行檔

14.2.2 在核心中生成設備接口

14.2.3 在核心中等待監控進程的回響

14.3 開發監控進程

14.4 本軟體進一步展望

第15章 ROOTKIT與HIPS

15.1 ROOTKIT為何很重要

15.2 ROOTKIT如何逃過檢測

15.3 HIPS如何檢測ROOTKIT

第16章 手寫指令保護代碼

16.1 混淆字元串

16.2 隱藏核心函式

16.3 混淆流程與數據操作

16.3.1 混淆函式出口

16.3.2 插入有意義的花指令

第17章 用VMPROTECT保護代碼

17.1 安裝VMPROTECT

17.2 使用VMPROTECT

17.3 查看VMPROTECT效果

相關詞條

相關搜尋

熱門詞條

聯絡我們