深入淺出Windows API程序設計:核心編程篇( 簡體 字) | |
作者:王端明 | 類別:1. -> 程式設計 -> 綜合 |
出版社:人民郵電出版社 | 3dWoo書號: 55908 詢問書籍請說出此書號! 有庫存 NT售價: 750 元 |
出版日:7/1/2022 | |
頁數:598 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787115571595 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第 1章 多線程編程 1
1.1 使用多線程的必要性 2 1.2 多線程編程 5 1.3 線程的終止及其他相關函數 8 1.4 線程間的通信 10 1.4.1 全局變量 11 1.4.2 自定義消息 11 1.4.3 事件對象 15 1.4.4 手動和自動重置事件對象 22 1.5 線程間的同步 25 1.5.1 用戶模式線程同步 28 1.5.2 內核模式線程同步 36 第 2章 內存管理 48 2.1 保護模式的分段與分頁管理機制 50 2.2 獲取系統信息與內存狀態 53 2.3 虛擬地址空間管理函數 56 2.3.1 虛擬地址空間的分配與釋放 57 2.3.2 改變頁面保護屬性 60 2.3.3 查詢頁面信息 61 2.4 堆管理函數 62 2.4.1 私有堆的創建和釋放 63 2.4.2 在堆中分配和釋放內存塊 64 2.4.3 其他堆管理函數 67 2.4.4 在C++中使用堆 68 2.5 其他內存管理函數 70 第3章 文件、驅動器和目錄操作 72 3.1 基本概念 73 3.1.1 與硬盤存儲有關的幾個重要概念 73 3.1.2 分區、邏輯驅動器、文件系統和卷 74 3.1.3 文件名、目錄、路徑和當前目錄 76 3.2 文件操作 77 3.2.1 創建和打開文件 77 3.2.2 讀寫文件 80 3.2.3 文件指針 83 3.2.4 文件屬性 85 3.2.5 復制文件 87 3.2.6 移動文件(目錄)、刪除文件 90 3.2.7 無緩沖I/O 93 3.3 邏輯驅動器和目錄 94 3.3.1 邏輯驅動器操作 94 3.3.2 目錄操作 96 3.3.3 環境變量 102 3.3.4 SHFileOperation函數 106 3.3.5 監視目錄變化 107 3.3.6 獲取硬盤序列號 112 3.3.7 可移動硬盤和U盤監控 118 3.3.8 獲取主板和BIOS序列號 121 3.4 內存映射文件 127 3.4.1 內存映射文件相關函數 128 3.4.2 通過內存映射文件在多個進程間共享數據 134 3.4.3 使用內存映射文件來處理大型文件 136 3.5 APC異步過程調用 137 第4章 進程 143 4.1 創建進程 143 4.2 多個進程間共享內核對象 150 4.3 進程終止 153 4.4 進程間通信 154 4.4.1 WM_COPYDATA 154 4.4.2 管道 159 4.4.3 郵件槽 164 4.5 進程枚舉 165 4.5.1 TlHelp32系列函數 165 4.5.2 EnumProcesses函數 177 4.5.3 進程環境塊PEB 181 4.6 進程調試 185 4.6.1 讀寫其他進程的地址空間 185 4.6.2 獲取一個以暫停模式啟動的進程模塊基地址 189 4.6.3 調試API 193 4.6.4 內存補丁 199 4.6.5 線程環境 204 4.7 窗口間諜 207 4.8 示例:一個程序退出時刪除自身 213 第5章 剪貼板 215 5.1 剪貼板常用函數與消息 215 5.1.1 基本剪貼板函數 215 5.1.2 剪貼板相關的消息 218 5.2 使用剪貼板進行進程間通信 220 5.2.1 Clipboard寫入端 221 5.2.2 Clipboard讀取端 226 5.3 監視剪貼板內容變化 230 5.3.1 相關函數和消息 230 5.3.2 剪貼板監視程序ClipboardMonitor 232 5.3.3 監視剪貼板的新方法 235 第6章 動態鏈接庫 236 6.1 靜態鏈接庫 236 6.2 動態鏈接庫 237 6.2.1 創建DLL項目 238 6.2.2 在可執行模塊中使用DLL 244 6.2.3 入口點函數DllMain 246 6.2.4 延遲加載DLL 248 6.3 線程局部存儲 252 6.3.1 動態TLS 253 6.3.2 靜態TLS 256 6.4 Windows鉤子 258 6.5 在同一個可執行文件的多個實例間共享變量 265 6.6 注入DLL 267 6.6.1 通過Windows鉤子注入DLL 267 6.6.2 通過創建遠程線程注入DLL 276 6.6.3 通過函數轉發器機制注入DLL 283 6.6.4 通過CreateProcess函數寫入ShellCode注入DLL 290 6.6.5 通過調試器寫入ShellCode注入DLL 293 6.6.6 通過APC機制注入DLL 293 6.6.7 通過輸入法機制注入DLL 293 6.7 Shadow API技術 299 6.8 Hook API技術 304 6.8.1 隨機數 304 6.8.2 通過遠程線程注入DLL實現API Hook 306 6.8.3 通過全局消息鉤子注入DLL實現進程隱藏 322 第7章 INI配置文件和注冊表操作 328 7.1 INI配置文件 329 7.1.1 鍵值對的創建、更新與刪除 329 7.1.2 獲取鍵值 330 7.1.3 管理小節 331 7.2 注冊表操作 335 7.2.1 子鍵的打開、關閉、創建和刪除 337 7.2.2 鍵值項的創建或設置、查詢和刪除 340 7.2.3 子鍵、鍵值項的枚舉 344 7.2.4 注冊表應用:程序開機自動運行設置文件關聯 347 第8章 Windows異常處理 349 8.1 結構化異常處理 349 8.1.1 try-except語句 349 8.1.2 GetExceptionCode和GetExceptionInformation 354 8.1.3 利用結構化異常處理進行反調試 358 8.1.4 軟件異常 360 8.2 向量化異常處理(全局) 361 8.2.1 向量化異常處理簡介 361 8.2.2 利用向量化異常處理實現基于斷點的API Hook 362 8.3 頂層未處理異常過濾(全局) 367 8.4 向量化繼續處理(全局) 368 第9章 WinSock網絡編程 374 9.1 OSI參考模型和TCP/IP協議簇 374 9.1.1 OSI參考模型 374 9.1.2 TCP/IP協議簇 377 9.1.3 套接字網絡編程接口 379 9.2 IP地址、網絡字節順序和WinSock的地址表示方式 380 9.2.1 IP地址和端口 380 9.2.2 網絡字節順序 381 9.2.3 WinSock的地址表示方式 381 9.3 WinSock網絡編程 383 9.3.1 TCP網絡編程的一般步驟 384 9.3.2 TCP服務器程序 390 9.3.3 TCP客戶端程序 395 9.3.4 UDP編程 399 9.3.5 P2P技術 402 9.4 WinSock異步I/O模型 403 9.4.1 阻塞模式下的多線程多客戶端套接字編程 404 9.4.2 select模型 414 9.4.3 WSAAsyncSelect模型 419 9.4.4 WSAEventSelect模型 424 9.4.5 Overlapped模型 431 9.4.6 完成端口模型 447 9.4.7 深入介紹I/O完成端口 456 9.4.8 深入介紹線程池 463 9.5 IPHelper API及其他函數 474 9.5.1 獲取本地計算機的網絡適配器信息 475 9.5.2 其他函數 478 9.5.3 校對時間程序 480 9.6 系統網絡連接的啟用和禁用 482 第 10章 其他常用Windows API編程知識 489 10.1 快捷方式 489 10.2 程序開機自動啟動 491 10.2.1 將程序的快捷方式寫入開機自動啟動程序目錄 491 10.2.2 創建任務計劃實現開機自動啟動 493 10.2.3 創建系統服務實現開機自動啟動 493 10.3 用戶賬戶控制 508 10.3.1 自動提示用戶提升權限 510 10.3.2 利用ShellExecuteEx函數以管理員權限啟動程序 512 10.3.3 繞過UAC提權提示以管理員權限運行 513 10.4 用戶界面特權隔離 514 10.5 窗口的查找與枚舉 515 10.6 實現任務欄通知區域圖標與氣泡通知 517 第 11章 PE文件格式深入剖析 520 11.1 DOS頭(DOS MZ頭和DOSStub塊) 521 11.2 PE頭(IMAGE_NT_HEADER32結構) 522 11.3 節表(節區信息結構IMAGE_SECTION_HEADER列表) 531 11.4 64位可執行文件格式PE32+ 537 11.5 導入表 538 11.6 導出表 547 11.7 重定位表 552 11.8 模擬PE加載器直接加載可執行文件到進程內存中執行 555 11.9 線程局部存儲表 563 11.10 加載配置信息表 568 11.11 資源表 569 11.12 延遲加載導入表 577 11.13 校驗和與CRC 577 11.14 64位程序中如何書寫匯編代碼(以獲取CPUID為例) 580 11.15 Detours-master庫 583 11.15.1 注入DLL的編寫 583 11.15.2 將注入DLL加載到目標進程中 586 11.15.3 編輯可執行文件 591 11.16 通過修改模塊導入表中的IAT項來Hook API 592 本書是 Windows API 程序設計的進階圖書,內容包括多線程編程,內存管理,文件、驅動器和目錄操作,進程,剪貼板,動態鏈接庫,INI 配置文件和注冊表操作,Windows 異常處理,WinSock 網絡編程,其他常用Windows API 編程知識,PE 文件格式深入剖析。通過閱讀本書,讀者可以對 Windows 程序設計有更加深入的認識,并將其應用到實際場景中。
本書適合有一定經驗的 Windows API 程序開發人員閱讀,也可以作為培訓學校的教材使用。 |