圖書信息
書 名:Windows 應用程式捆綁核心編程
作 者: 張正秋 [作譯者介紹]

出版社:清華大學出版社
ISBN:730214088X
上架時間:2006-12-15
出版日期:2007 年1月
開 本:185×260
頁 碼:359
版 次:1-1
定 價 :¥49.00
圖書概述
本書所介紹的內容與計算機防護技術相關。本書基於作者在計算機編程方面的多年實踐經驗,對當今國際上最新的應用程式間的通信、掛鈎、捆綁技術作了較為具體、系統的歸納和總結,並給出了大量的實例。本書中很多的技術還沒有公開,屬於底層熱門技術,所給出的很多程式代碼可以直接用於商業軟體的製作。
本書旨在為對通信、掛鈎和捆綁等方面編程感興趣的讀者提供參考,適合於中高級軟體開發人員使用,還可以作為計算機和信息類專業高年級學生學習的輔助讀物。
圖書目錄
第1章 再談計算機記憶體訪問 1
1.1 引言 1
1.2 記憶體管理概述 1
1.2.1 虛擬記憶體 1
1.2.2 CPU工作模式 2
1.2.3 邏輯、線性和物理地址 3
1.2.4 存儲器分頁管理機制 3
1.2.5 線性地址到物理
地址的轉換 4
1.3 虛擬記憶體訪問 5
1.3.1 獲取系統信息 5
1.3.2 在應用程式中使用
虛擬記憶體 6
1.3.3 獲取虛存狀態 7
1.3.4 確定虛擬地址空間的狀態 8
1.3.5 改變記憶體頁面保護屬性 9
1.3.6 進行一個進程的記憶體讀寫 10
1.4 檔案的記憶體映射 11
1.4.1 記憶體映射API函式 11
1.4.2 用記憶體映射在多個應用程式
之間共享數據 13
1.4.3 用記憶體映射檔案讀取
大型檔案 18
1.5 深入認識指針的真正含義 21
1.5.1 指針的真正本質 21
1.5.2 用指針進行應用程式
之間的通信 22
1.6 本章小結 26
參考文獻 27
第2章 再談PE檔案結構 28
2.1 引言 28
2.2 PE檔案格式概述 28
2.2.1 PE檔案結構布局 28
2.2.2 PE檔案記憶體映射 30
2.2.3 Big-endian和
Little-endian 31
2.2.4 3種不同的地址 31
2.3 PE檔案結構 32
2.3.1 MS-DOS頭部 32
2.3.2 IMAGE_NT_HEADER
頭部 33
2.3.3 IMAGE_SECTION_HEADER
頭部 36
2.4 如何獲取PE檔案中的OEP 36
2.4.1 通過檔案讀取OEP值 37
2.4.2 通過記憶體映射
讀取OEP值 38
2.4.3 讀取OEP值方法的測試 39
2.5 PE檔案中的資源 40
2.5.1 查找資源在檔案中的
起始位置 40
2.5.2 確定PE檔案中的資源 41
2.6 一個修改PE執行檔
的完整實例 43
2.6.1 如何獲得MessageBoxA
代碼 43
2.6.2 把MessageBoxA()代碼寫入
PE檔案的完整實例 45
2.7 本章小結 53
參考文獻 53
第3章 進程之間通信概述
及初級技術 54
3.1 引言 54
3.2 進程通信概述 55
3.2.1 Windows進程間標準
通信技術的發展 55
3.2.2 應用程式與進程 56
3.2.3 進程之間通信的類型 56
3.3 使用自定義訊息通信 57
3.3.1 通過自定義訊息實現進程
間通信的方法 57
3.3.2 通過自定義訊息實現進程
間通信的實例 58
3.4 使用WM_COPYDATA訊息通信 60
3.4.1 通過WM_COPYDATA訊息
實現進程間通信的方法 60
3.4.2 通過WM_COPYDATA訊息
實現進程間通信的實例 61
3.5 使用記憶體讀寫函式和記憶體
映射檔案通信 62
3.5.1 使用記憶體映射檔案
通信的方法 62
3.5.2 使用記憶體讀寫函式實現進程
間通信的方法 62
3.5.3 使用記憶體讀寫函式實現進程
間通信的實例 63
3.6 使用動態程式庫通信 64
3.6.1 DLL概述 64
3.6.2 使用DLL通信的方法 65
3.6.3 使用DLL通信的實例 66
3.7 使用Windows剪貼簿通信 67
3.7.1 使用剪貼簿實現進程間
通信的方法 68
3.7.2 使用剪貼簿實現進程間
通信的實例 68
3.8 使用動態數據交換(DDE)
通信 70
3.8.1 使用DDE技術通信原理 70
3.8.2 如何使用DDEML
編寫程式 71
3.8.3 使用DDE通信的實例 72
3.9 本章小結 77
參考文獻 77
第4章 使用訊息管道、郵槽和
套接字通信 78
4.1 引言 78
4.2 如何用命名管道進行進程間通信 78
4.2.1 命名管道函式 79
4.2.2 命名管道服務端與客戶端
之間通信的實現流程 80
4.2.3 命名管道服務端與客戶端
之間通信的實例 81
4.3 如何用郵槽進行進程間通信 85
4.3.1 用郵槽進行進程間
通信的步驟 85
4.3.2 郵槽伺服器端與客戶端之間
通信的實例 86
4.4 如何用Windows套接字進行
進程間通信 90
4.4.1 套接字分類 90
4.4.2 流式套接字編程流程 91
4.4.3 套接字調用基本函式 92
4.4.4 Winsock程式設計 95
4.4.5 一個通用套接字類 96
4.4.6 套接字伺服器端與客戶端間
通信的實例 101
4.5 本章小結 106
參考文獻 106
第5章 使用LPC和RPC通信 107
5.1 引言 107
5.2 接口定義語言(IDL)簡介 107
5.3 使用本地過程調用(LPC)
通信 108
5.3.1 使用LPC通信方法介紹 108
5.3.2 使用LPC通信的實例 110
5.4 使用遠程過程調用(RPC)
通信 117
5.4.1 RPC運行機制 117
5.4.2 RPC 綁定模式和屬性 118
5.4.3 RPC傳輸(Transport) 118
5.4.4 如何編寫RPC應用程式 119
5.4.5 使用RPC通信的實例 120
5.5 本章小結 128
參考文獻 128
第6章 使用組件模型通信 129
6.1 引言 129
6.2 COM/DCOM模型概述 129
6.2.1 COM/DCOM的特點 129
6.2.2 COM/DCOM組件
模型分類 130
6.3 使用組件對象模型(COM/DCOM)
通信 131
6.3.1 使用COM/DCOM通信
方法介紹 131
6.3.2 基於DCOM實現遠程
會話的實例 136
6.4 本章小結 147
參考文獻 147
第7章 進程的創建、控制和隱藏 148
7.1 引言 148
7.2 常見的幾種創建進程的方法 148
7.2.1 使用WinExec() 函式 148
7.2.2 使用ShellExecute()和
ShellExecuteEx()函式 149
7.2.3 使用CreateProcess()函式 151
7.2.4 使用OLE激活服務程式 154
7.3 如何獲得進程句柄 155
7.3.1 獲得一個進程的句柄 155
7.3.2 提升進程許可權級別 156
7.4 如何實現當前進程的枚舉 158
7.4.1 通過系統快照實現當前
進程的枚舉 158
7.4.2 通過psapi.dll提供的API函式
實現當前進程的枚舉 160
7.4.3 通過wtsapi32.dll提供的API函
數實現當前進程的枚舉 162
7.4.4 通過ntdll.dll提供的API函式
實現當前進程的枚舉 163
7.5 如何終止進程 164
7.5.1 如何終止本進程 165
7.5.2 如何終止外部進程 165
7.5.3 終止進程的實例 165
7.6 如何隱藏進程(注入代碼) 166
7.6.1 基本原理 166
7.6.2 使用CreateRemoteThread()
隱藏DLL 167
7.6.3 使用CreateRemoteThread()直
接注入API函式代碼 173
7.6.4 使用Windows記憶體映射檔案
注入代碼 174
7.6.5 使用特洛伊DLL
注入代碼 174
7.6.6 使用註冊表注入DLL 175
7.6.7 使用程式掛鈎的方法
注入代碼 175
7.7 本章小結 175
參考文獻 176
第8章 應用程式的靜態掛鈎 177
8.1 引言 177
8.2 使用C/C++語言提取可
執行程式代碼 177
8.2.1 在C/C++中使用
內聯彙編 177
8.2.2 如何使用C/C++語言提取
可執行程式代碼 179
8.3 如何對PE檔案加殼 182
8.3.1 PE檔案的加殼方法 182
8.3.2 向PE檔案中靜態注入
代碼的完整實例 183
8.4 如何實現檔案脫殼 191
8.5 本章小結 192
參考文獻 192
第9章 應用程式的動態掛鈎 193
9.1 動態掛鈎概述 193
9.2 使用Windows鉤子函式掛鈎 194
9.2.1 Windows鉤子函式 194
9.2.2 具體實例 195
9.3 替換原API函式入口掛鈎 198
9.3.1 如何替換原API函式入口
實現掛鈎 198
9.3.2 通用的替換原API函式
入口掛鈎類 199
9.3.3 使用JMP法編寫的
掛鈎實例 201
9.4 替換IAT中的函式地址
進行掛鈎 202
9.4.1 如何替換IAT中的函式
地址實現掛鈎 202
9.4.2 通用的替換IAT中的
函式地址掛鈎類 203
9.4.3 使用IAT法編寫的
掛鈎實例 207
9.5 替換windows訊息處理函式
實現掛鈎 208
9.5.1 Windows訊息處理函式
及其替換 209
9.5.2 替換Windows訊息處理
函式實現掛鈎的實例 210
9.6 鉤子DLL檔案的裝載 214
9.7 本章小結 216
參考文獻 216
第10章 數據的編碼和解碼實例 217
10.1 引言 217
10.2 遊程編碼 218
10.2.1 CX遊程壓縮方法 218
10.2.2 BI_RLE8壓縮方法 218
10.2.3 BI_RLE壓縮方法 218
10.2.4 縮位壓縮方法
(Packbits) 219
10.3 HUFFMAN編碼 219
10.3.1 Huffman編碼原理 219
10.3.2 Huffman編碼過程 220
10.4 算術編碼 221
10.4.1 算術編碼算法 221
10.4.2 算術解碼算法 222
10.5 LZW壓縮算法 222
10.5.1 LZW壓縮算法原理 223
10.5.2 用VC++實現LZW
壓縮算法 225
10.6 Base64編碼 236
10.6.1 Base64算法原理 236
10.6.2 Base64算法的實現 238
10.7 本章小結 241
參考文獻 242
第11章 執行檔的捆綁和分離 243
11.1 引言 243
11.2 捆綁方式分類 243
11.2.1 結合式捆綁 243
11.2.2 功能式捆綁 245
11.3 檔案捆綁相關技術 245
11.3.1 檔案捆綁工具及實現 245
11.3.2 木馬程式與捆綁 246
11.3.3 檔案自身操作
特點分析 246
11.4 檔案屬性的獲取和偽裝 248
11.4.1 檔案屬性的獲取
和更改 248
11.4.2 一個獲取檔案基
本屬性類 249
11.4.3 可執行程式自刪除
的實現 251
11.4.4 如何獲取其他套用
程式的圖示 254
11.4.5 如何改變視窗的圖示 255
11.5 被捆綁檔案分離後的運行及
自分解檔案原理 256
11.5.1 異步執行分解法
的實現 256
11.5.2 同步執行分解法
的實現 256
11.5.3 自動分解法的實現 257
11.6 一個捆綁機(BindHider)軟體
的設計 258
11.6.1 BindHider的設計 258
11.6.2 BindHider的原始碼 259
11.7 一種製作自分解檔案的方法 263
11.7.1 母體程式的製作 264
11.7.2 自分解檔案的製作 266
11.8 本章小結 267
參考文獻 268
第12章 執行檔的分割和合併 269
12.1 引言 269
12.2 檔案分割方式 269
12.2.1 考慮檔案格式的分割 269
12.2.2 設定子檔案大小
的分割 270
12.2.3 具有自合併功能
的檔案分割 271
12.2.4 依賴檔案存放位置
的分割 271
12.2.5 依賴磁碟大小的分割 271
12.3 如何使用多執行緒 272
12.3.1 執行緒的創建和終止 272
12.3.2 執行緒的控制函式 273
12.3.3 執行緒的通信 273
12.4 檔案的簡單分割與合併 274
12.4.1 檔案的簡單分割 274
12.4.2 檔案的簡單合併 275
12.5 用多執行緒進行檔案的分割
與合併的實例 277
12.5.1 檔案的分割與合併
方案設計 277
12.5.2 用多執行緒進行
檔案分割 279
12.5.3 用多執行緒進行
檔案合併 282
12.6 分割後檔案自動合併的
方案設計 286
12.6.1 控制程式的製作 286
12.6.2 用於檔案自合併的控制
程式的製作 287
12.6.3 一種生成自合併檔案的
分割軟體製作 289
12.7 本章小結 292
參考文獻 292
第13章 多執行緒下載和斷點續傳 293
13.1 引言 293
13.2 使用FTP進行多執行緒下載
和斷點續傳 293
13.2.1 FTP協定簡介 293
13.2.2 FTP的工作模式 295
13.2.3 FTP協定多執行緒下載和
斷點續傳的實現 295
13.2.4 實例 306
13.3 使用HTTP進行多執行緒下載
和斷點續傳 307
13.3.1 HTTP協定簡介 307
13.3.2 HTTP協定的內部
操作過程 308
13.3.3 HTTP協定多執行緒下載和
斷點續傳的實現 311
13.3.4 實例 321
13.4 BT下載簡介 323
13.4.1 BT下載與一般下載
的區別 323
13.4.2 BT種子 324
13.4.3 BT的下載過程 324
13.5 本章小結 324
參考文獻 325
第14章 帶附屬檔案的電子郵件
傳送剖析 326
14.1 引言 326
14.2 電子郵件的傳送方法 326
14.3 用WinSock實現SMTP協定 327
14.3.1 SMTP協定 327
14.3.2 SMTP的實現 328
14.4 郵件格式化 335
14.4.1 郵件主體格式化 335
14.4.2 郵件附屬檔案格式化 338
14.4.3 郵件格式化 341
14.5 傳送電子郵件實例 346
14.6 本章小結 347
參考文獻 347
第15章 特洛伊木馬與反木馬技術 348
15.1 引言 348
15.2 常見的木馬種類 349
15.3 木馬的載入方式 350
15.4 木馬採用的偽裝方法 351
15.5 Windows 2K/XP中無法刪除
檔案的常用解決辦法 352
15.6 一種木馬病毒的檢測技術 353
15.7 本章小結 358
參考文獻 359