獨辟蹊徑的編程思維——“拿來主義”編程 ( 簡體 字) |
作者:李瑞民 | 類別:1. -> 程式設計 -> 綜合 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 37764 詢問書籍請說出此書號!【有庫存】 NT售價: 395 元 |
出版日:3/1/2014 |
頁數:496 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121223990 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:推薦序一 拿破侖曾說過:“世上只有兩種力量:利劍和思想。從長而論,利劍總是敗在思想手下。”美國利用思想滲透致使前蘇聯解體,編程也是一樣,除了需要技術,更需要思想,這樣才能編寫出更多的好程序,并提高效率。“拿來主義”是編程思想的重要組成部分,有助于縮短開發進度,提升開發質量,使開發技術獲得新的突破。當然,“拿來主義”應該在尊重版權許可的前提下進行,這樣才能讓“拿來主義”思想廣泛應用和發展。 本書講述“拿來主義”的實踐,涵蓋操作系統、Web 等多方面技術,對廣大程序員來說是一本很好的教材。其內容豐富而深刻,極具參考價值和實用性,堪稱經典之作。Hook 獲取、DLL 重載、API 截獲、DOS 公共數據區、Office 控件調用、B/S 提取等稀缺的技術資料一應俱全。以Hook 為例,有簡單的介紹,也有深度的技術。又比如DLL 的函數使用,有理論知識又不缺實例。 本書是李瑞民博士的第5本著作,我不僅欽佩李瑞民博士的技術和經驗,更欽佩他的開源 精神和為開源事業所做的貢獻。共享是一種黑客精神,開源是一種共享方式,共享和開源促進著技術的突破與創新。Linux 的開源衍生出嵌入式、RedHat、Debian、Android、Ubuntu 等,進而衍生出BackTrack、Kali、MIUI、Smartisan OS 等。如果沒有開源,智能移動設備可能不會迅速普及大眾,科技所帶來的生活樂趣將會滯后。簡單、快捷的網站搭建,功能和安全性的增強,互聯網的呈現,以及大數據的形成等都得益于網站程序的開源。可以說,開源改變世界! 本書令我大開眼界,有一種頓悟的感覺。在千千萬萬的書叢中,好書難得一遇,而本書就 是其中之一,使讀者既能得到思想上的指導,又能得到技術上的提煉,可謂魚和熊掌兼得。 網絡尖刀核心成員 冷鷹
推薦序二 隨著技術的發展以及開源社區的日益壯大,程序員做某個軟件時的第一想法,除了“這個 軟件如何實現”,還有“有沒有別人已經做好的,拿來使用一下”。Ruby on Rails 這樣的語言可以幫助一個零經驗者用幾個小時建立一個網站雛形,這樣的事情之所以成為可能,是因為其背后的強大框架支持。對其能夠支撐的接口了解得越多,在系統中可增加的特性就越多。而開發者并不需要開發一個和Rails 一樣或者等同的框架,可以直接將其“拿來”使用。 軟件業已經有很多“輪子”被發明了,重新發明“輪子”并不會顯得有多明智。直接“拿 來”那些現成的可用組件或框架,可以迅速提升開發能力,更加專注于業務邏輯。書中所主張的“拿來主義”正是應該被奉行的精神。但是正如作者所言,要想“拿來”,得先看對象是否允許“被拿來”,是否允許修改,是否允許繞過一些限制等。了解相關法律規定和條款可以讓程序員在一個合法的領域中“拿來”。 本書作者對Windows 編程中操作系統及DLL 能夠提供的接口、數據操作等進行了全面而 深入的分析。作者憑其深厚的功底帶領讀者更深入地了解Windows 系統中可以被輕松“拿來”的東西。如果你正在開發一個Windows 系統中的應用,本書則可能為你提供更加快捷、有效的方案。本書為在Windows 上開發應用程序,尤其是和底層打交道的程序員們帶來了非常有價值的知識。 除了代碼和接口,我們還可以“拿來”思想,可以“拿來”設計模式,可以“拿來”測試 驅動開發,還可以“拿來”領域驅動設計。在“拿來”之前,還需要知道有什么可以“被拿來”。本書從若干個角度進行分析,引領讀者了解哪些是可以“被拿來”的。 這是一本用心寫就的書。 敏捷開發獨立咨詢師、《會說話的代碼》作者 王洪亮
前言 在軟件開發中,編程人員經常會遇到這么一個問題:就是自己想做的某個功能還不知道該 如何實現呢,而該功能早已被別人實現并應用。這時,也許我們突然會有一個念頭,如果能將別人做好的程序全部或一部分通過一定技術拿來為我所用,那不僅可以大大縮短開發進度,在技術攻關上還能得到保障。當然,自己要權衡的是為此所付出的購買版權、獲得許可的代價。 撇開項目開發中的其他環節,僅從技術角度來講,這種“拿來為我所用”的目標是需要有 重要的前提和強有力的技術支持的。其前提就是不違反國際、國家的與版權、著作權相關的各項法律法規,通過合法的手段獲得,并明確獲得了修改、重新發布、商業銷售等許可。本書所有的技術和內容都是基于這一前提的,而實現這一目標所需要支持的技術,則是本書的內容。 在中華五千年漫長的文明史中,這種“拿來為我所用”的現象并不少見,2300 多年前趙 武靈王“胡服騎射”,改中原寬大的衣服為北方游牧民族短小精簡的衣服,改善了戰士作戰的靈活性,增加了戰斗力。1000 多年前遼太宗耶律德光在治理天下時,采納了“說漢話,穿漢服”的方式,以便引進當時漢族先進的文化和管理方式,以取代當時少數民族相對落后的管理方式。1840 年以來,一批批國人出于強國的目的,提出了很多相似的觀點,如“師夷長技以治夷”、“古為今用”等,這些觀點的共同特點就是“不管是誰的,只要是對的,一切皆可為我所用”,而最讓我認同的是20 世紀30 年代魯迅先生提出的“拿來主義”。簡單地說,“拿來主義”即“去其糟粕,取其精華,為我所用”,這也正是本書以此命名的主要原因。 根據“拿來”方式的使用特點,全書分為靜態分析型的拿來技術、功能型的拿來技術、輸 出接收型的拿來技術、嵌入型的拿來技術、中間嗅探型的拿來技術、控制交互型的拿來技術等6大類。從概念上,6 大類雖然各有特色,但具體到一個編程應用中時,往往各大類你中有我,我中有你,相互調用,互為支持。 全書分為6大部分共15章。其中,作為全書內容的背景,第1 章緒論講述了拿來技術的 一些定義、共性及分類方式,由于第1 章是后面6 部分14 章的基礎,所以不能作為獨立的一部分,只列為單獨的一章。而后面14 章的內容,則各自獨立,在閱讀上除了有些內容相關聯之外,對閱讀順序沒有嚴格要求。 靜態分析型的拿來技術是指通過對數據的靜態分析,從中提取可以“拿來”的信息為自己 的程序所用。這里所強調的是“靜態分析”,而不是“靜態數據”,所以并不強調“拿來”的數據一定是靜態數據。根據這一原則,這一類型所對應的拿來技術共分為3 種,分別是操作系統數據的拿來、系統共享文件中的拿來和靜態程序文件資源的拿來。 功能型的拿來技術,其操作對象是可執行文件。通過對可執行文件的操作,或者是使其執 行以達到自己程序所要達到的目的;或者是對其執行后生成的結果進行分析,從中提取出有用的信息;或者是控制其執行,使之在按自己要求運行的狀態下,達到自己的目的。根據可執行的程序是否有界面,本部分分為無界面程序命令行中的拿來和有界面程序消息式的拿來兩章。 輸出接收型的拿來技術,其操作對象則將關注點轉移至程序的輸出界面的接收上,接收的 目的是因為原有界面不能滿足自己的需要,因而需要通過一定方式接收其中原本屬于界面展示的內容,拿來后為我所用,轉換為自己的界面,進而以自己界面的風格進行顯示。這部分內容根據當前的兩大使用領域,分為讀取B/S 界面上輸入的數據和對Office 文件輸出的接收操作兩章。 嵌入型的拿來技術與輸出接收型的拿來技術,在應用上似乎是一個姊妹篇,因為嵌入型的 拿來技術也是針對程序的輸出界面的接收。但與輸出接收型不同的是,這種技術對程序原有界面很滿意,想將其界面中的全部或一部分拿來為已所用。該部分內容根據所使用的技術不同,分為控件嵌入式的拿來和界面嵌入式的拿來兩章。 中間嗅探型的拿來技術關注的則是程序內部模塊之間或程序之間的臨時數據,無論是程序 模塊之間、程序之間,還是系統之間,要進行數據交換,必然需要通過一個雙方都能接收的協議,在知道這個協議的前提下,如果能通過一定的技術,獲得二者之間通信的數據,那么對比協議就可以分析二者通信中的內容,甚至直接分析出其中的每一項數據細節,從而實現對數據的拿來。中間嗅探型分為程序調用時的數據過濾、網絡通信時的數據監聽和串口通信時的數據監控3種。 控制交互型的拿來技術,則既不在乎程序本身的對外輸出,也不關注程序的界面,而是將 精力放在程序自身的運作上。通過對程序的控制,以及與程序交互的交換,進而實現對程序原理和數據結構的分析,最后將其內部運行機制作為結果進行拿來。主要分為從運行的程序中拿來和Hook 控制式的拿來。 最后,本書還在附錄中增加了3個與本書息息相關的內容。第1 個是本書涉及的概念中, 容易混淆的那些術語、概念和定義,本書并不是要重新定義這些概念,只是相對本書中的這些概念進行解釋,從而避免讀者理解上的錯誤;第2 個是對ASCII 碼的詳細解釋,并在碼表中內嵌了一個簡單的十進制數據和十六進制數據的轉換表;第3 個則是Web 中的HTTP 錯誤返回碼,借以解釋全書中,散落在多章的有關B/S 架構中的常見問題。 從格式上,本書除了正常的內容之外,還增加了兩個備注標識項。其中“提示”是指與所 介紹內容有關,但不足以以正文的內容進行說明的輔助內容;而“重要”則是指該內容不但與介紹的內容有緊密的關系,而且若不理解該內容,很可能對所涉及的內容有錯誤的理解。 全書內容有收錄性質,一切以實用為標準。例如Windows 9X 版本已很少有用戶使用,已 無收錄的必要,故所有內容中,均至少從Windows XP/2000 版本開始。比Windows 9X 更早的DOS雖然早已淘汰,但由于Windows 所有版本都保留“命令提示符”以示兼容,并且目前始終有大量命令行應用存在,所以保留了DOS 的部分內容。所有的內容,都盡可能以編程實例的方式進行講解和驗證。 重要 本書的程序、代碼全部開源,除第9 章“編程實例1:嵌入式視頻播放器”中的代碼之外,對其余代碼約定如下。 (1)本書及隨書光盤中的所有例程,其源碼部分版權歸本書作者所有; (2)光盤內容不得進行單獨銷售,不得提供網站下載(含收費或免費)。 第9 章“編程實例1:嵌入式視頻播放器”中的代碼則不受上述約束,但使用該程序的人需要接受VideoLan 對基于其技術進行軟件開發的各項要求。 |
內容簡介:與傳統編程習慣于每一細節都親歷親為所不同的是,如果在程序設計之初就綜合考慮并合法應用第三方既有成果,就可在項目開發的時間、成本及質量這三個關鍵矛盾體“三要素”上進行統籌設計,這種技術就是“拿來主義”的編程技術。本書分別通過靜態分析、功能調用、輸出接收、界面嵌入、中間嗅探、控制交互等方法詳細介紹了多達14種拿來技術。全書集編程思想、技術、實踐為一體,融會貫通,靈活運用,勢必大有裨益。 本書適用于對網絡黑客攻防程序開發、反向工程及程序原理分析感興趣的人員,也適用于監控類和測試類程序開發人員,還可作為高校編程實驗用書。另外,本書所涉及的各項技術,除了原理闡述和技術分析之外,均附有完整的程序源代碼,所以也適用于各類編程愛好者學習、驗證和修改。 |
目錄:第 1 章緒論1 1.1 “拿來主義”編程技術簡介............1 1.1.1 什么是“拿來主義” ..........1 1.1.2 為什么要采用“拿來主義”.............................2 1.2 常用的“拿來主義”編程技術......3 1.3 “拿來主義”編程技術的分類........5 1.3.1 靜態分析型的拿來技術......5 1.3.2 功能型的拿來技術.6 1.3.3 輸出型的拿來技術.7 1.3.4 嵌入型的拿來技術.8 1.3.5 中間嗅探型的拿來技術......8 1.3.6 控制交互型的拿來技術......9 第 1 部分靜態分析型的拿來技術 第 2 章操作系統數據的拿來.........12 2.1 本章的預備知識..............12 2.1.1 進制的表示與轉換............12 2.1.2 DOS 下的地址表示...........14 2.1.3 Debug 工具的使用............15 2.2 裸機時代的可用數據......19 2.2.1 裸機的啟動過程...19 2.2.2 CMOS 內存中的數據........20 2.2.3 中斷與中斷向量...25 2.2.4 BIOS 數據區........28 2.2.5 ROM 中的數據.....36 2.3 DOS 中的全局變量.........42 2.3.1 曾經輝煌的DOS..43 2.3.2 DOS 的內存映射..44 2.3.3 DOS 數據區.........46 2.3.4 DOS 的“拿來”實例.......47 2.4 Windows 中的共享數據..49 2.4.1 如日中天的Windows ........49 2.4.2 Windows 中的環境變量....50 VIII 獨辟蹊徑的編程思維——“拿來主義”編程 2.4.3 Windows 環境變量的意義.52 2.4.4 Windows 環境變量的編程.53 2.4.5 修改Windows 的全局環境變量......................56 2.5 編程實例:基于WinIO 的CMOS 數據讀寫.............56 2.5.1 程序主界面..........57 2.5.2 程序代碼..............57 第 3 章系統共享文件中的拿來 ....61 3.1 操作系統配置文件的拿來............61 3.1.1 對配置文件的讀/寫...........62 3.1.2 Boot.ini .................65 3.2 目錄名稱的拿來..............66 3.2.1 與用戶名相同的目錄名....67 3.2.2 所安裝的軟件列表............68 3.2.3 與用戶相關的特定目錄名.68 3.3 數據庫訪問式的共享......69 3.3.1 ODBC 數據訪問方式........69 3.3.2 ADO 數據連接.....82 3.4 注冊表的共享.................86 3.4.1 基于注冊表訪問的API .....86 3.4.2 注冊表項的操作...92 3.5 文件級的拿來.................93 3.5.1 網絡配置文件.......93 3.5.2 日志文件..............97 3.5.3 Windows 目錄自帶的音頻文件資源.............103 3.6 編程實例1:通過ODBC 對txt 文件進行讀/寫......108 3.6.1 程序主界面........109 3.6.2 程序代碼............109 3.7 編程實例2:通過ADO 對Excel 文件進行讀/寫.... 112 3.7.1 程序主界面........ 112 3.7.2 程序代碼............ 113 第 4 章靜態程序文件中資源的拿來 ...................... 115 4.1 常見可執行文件的格式 115 4.1.1 DOS 下的COM 和EXE 文件的格式簡介.... 115 4.1.2 Windows 下PE 文件的格式.......................... 118 4.2 VC 軟件編程人員眼中的程序資源.......................... 119 4.3 在可執行文件中調整資源..........121 4.3.1 從可執行文件中提取資源.............................121 4.3.2 更換可執行文件中的資源.............................122 4.4 軟件漢化與界面調整....122 4.4.1 軟件漢化............123 目錄IX 4.4.2 軟件界面調整.....125 4.5 界面復制.......................126 4.5.1 將可執行文件中的界面復制到工程中..........126 4.5.2 對兩個工程之間界面的復制.........................128 第 2 部分功能型的拿來技術 第 5 章無界面程序命令行中的拿來 ......................132 5.1 什么是命令行...............132 5.1.1 常用的DOS 內部命令....134 5.1.2 常用的DOS 外部命令....138 5.2 命令行的組合使用........149 5.2.1 設備文件............149 5.2.2 重定向技術........151 5.2.3 管道技術............155 5.3 命令行的編程技術........156 5.3.1 可嵌入DOS 命令行的幾個函數...................156 5.3.2 管道編程的幾個函數......161 5.4 編程實例1:使用重定向接收外部程序運行結果...162 5.4.1 程序主界面........162 5.4.2 程序代碼............163 5.5 編程實例2:使用管道接收外部程序運行結果......164 5.5.1 程序主界面........164 5.5.2 程序代碼............165 第 6 章有界面程序消息式的拿來 ........ 167 6.1 消息機制.......................167 6.1.1 消息的定義........168 6.1.2 消息的隊列和非隊列模式.............................169 6.1.3 與消息有關的幾個函數..170 6.2 Visual C++自帶的消息處理工具175 6.2.1 程序界面上的控件..........175 6.2.2 Visual C++下提供的標準控件.......................176 6.2.3 消息查詢工具Spy++.......177 6.3 通過消息控制程序........182 6.3.1 與窗口有關的幾個函數..182 6.3.2 與消息控制有關的幾個函數.........................186 6.4 編程實例:通過消息控制程序..191 6.4.1 程序主界面........191 6.4.2 程序代碼............192 X 獨辟蹊徑的編程思維——“拿來主義”編程 第3 部分輸出接收型的拿來技術 第 7 章讀取 B/S 界面上輸出的數據......................200 7.1 Web 服務器的安裝和測試.........201 7.1.1 Web 服務器的安裝和驗證............................201 7.1.2 檢驗Web 服務器的效果.205 7.2 基于Web 應用的編程接口........207 7.2.1 CInternetSession 類..........208 7.2.2 CInternetConnection 類....216 7.2.3 CHttpConnection 類.........217 7.2.4 CFtpConnection 類...........218 7.2.5 CInternetFile 類..222 7.2.6 CInternetException 類......224 7.3 編程實例:基于Web 的拿來方式...........................225 7.3.1 原理分析............226 7.3.2 程序主界面........228 7.3.3 程序代碼............228 第 8 章對 Office 文件輸出的接收操作.................231 8.1 Microsoft Office 簡介....232 8.2 輸出式的拿來簡介........233 8.2.1 COM/DCOM 的概念.......234 8.2.2 AfxOleInit 函數..234 8.2.3 COleVariant 類....235 8.2.4 COleDispatchDriver 類....240 8.3 程序員眼中的Office.....241 8.3.1 Office 的結構框架...........242 8.3.2 Office 組件的導入...........242 8.4 Word 的結構輸出..........244 8.4.1 Word 簡介...........244 8.4.2 Word 中的要素...244 8.5 Excel 的結構輸出..........245 8.5.1 Excel 簡介..........246 8.5.2 Excel 中的要素...246 8.6 PowerPoint 的結構輸出.247 8.6.1 PowerPoint 簡介.248 8.6.2 PowerPoint 中的要素.......248 8.7 輸出式的拿來技術在信息安全領域內的應用.........249 8.7.1 數字水印簡介.....249 8.7.2 Word 中格式輸出類的數字水印...................250 8.7.3 Word 中內容格式的數字水印.......................251 8.8 編程實例1:讀取Word 文件中的純文本內容........252 目錄XI 8.8.1 程序主界面........252 8.8.2 程序代碼............253 8.9 編程實例2:讀寫Excel 中的數據..........................254 8.9.1 程序主界面........255 8.9.2 程序代碼............255 8.10 編程實例3:控制PPT 的輸出258 8.10.1 程序主界面.......258 8.10.2 程序代碼..........259 第 4 部分嵌入型的拿來技術 第 9 章控件嵌入式的拿來 ..........264 9.1 ActiveX 技術簡介.........264 9.2 在Windows 程序中嵌入ActiveX 控件....................266 9.2.1 設置對ActiveX 控件的支持.........................266 9.2.2 從系統注冊的組件中導入要使用的ActiveX 控件..................267 9.2.3 從DLL 文件中導入要使用的ActiveX 控件.268 9.3 編程實例1:嵌入式視頻播放器.............................268 9.3.1 播放器編程的簡介..........268 9.3.2 VLC 簡介...........269 9.3.3 程序主界面........274 9.3.4 程序代碼............274 9.4 編程實例2:嵌入式PDF 閱讀器............................276 9.4.1 在VC 對PDF 的可視化使用........................276 9.4.2 程序主界面........277 9.4.3 程序代碼............278 第 10 章界面嵌入式的拿來........280 10.1 屏幕式的嵌入..............280 10.1.1 圖形桌面..........281 10.1.2 實現界面嵌入式要考慮的問題...................283 10.1.3 實現像素級操作主要涉及的API................286 10.1.4 實現桌面級操作主要涉及的API................288 10.1.5 屏幕的截取.......293 10.2 內容式的嵌入..............297 10.2.1 通過IE 調用訪問網絡地址.........................297 10.2.2 通過嵌入頁面方式訪問網絡地址...............297 10.2.3 通過資源管理器方式訪問本地文件系統....298 10.2.4 CHhtmlView 的API.......299 10.3 編程實例1:將程序界面自己程序的一部分進行嵌入....................301 10.3.1 程序主界面.......302 10.3.2 程序代碼..........303 XII 獨辟蹊徑的編程思維——“拿來主義”編程 10.4 編程實例2:嵌入整個Web 頁面和資源管理器...306 10.4.1 程序主界面.......307 10.4.2 程序代碼..........307 第 5 部分中間嗅探型的拿來技術 第 11 章程序調用時的數據過濾 .............................310 11.1 DLL 文件的意義和用法...........310 11.1.1 DLL 文件的意義........... 311 11.1.2 與DLL 調用相關的函數.............................312 11.1.3 DLL 文件的調用步驟....315 11.2 從EXE 或DLL 文件中找到函數...........................316 11.2.1 Depends 的使用方式.....316 11.2.2 從ICMP.DLL 中抽取函數...........................317 11.2.3 ICMP.DLL 中各函數的用法........................318 11.3 重載DLL 文件............321 11.3.1 DLL 文件重載的原理....321 11.3.2 DLL 文件重載的意義....322 11.4 具有重載特性的DLL 文件創建步驟.....................322 11.4.1 普通DLL 文件的創建步驟.........................323 11.4.2 重載DLL 文件的創建步驟.........................324 11.5 編程實例1:通過ICMP.DLL 制作tracert 命令....325 11.5.1 程序主界面.......326 11.5.2 程序代碼..........327 11.6 編程實例2:重載ICMP.DLL 以記錄ICMP 協議操作....................330 11.6.1 程序主界面.......330 11.6.2 程序代碼..........331 第 12 章網絡通信時的數據監聽.............................335 12.1 網絡通信簡介..............336 12.1.1 網絡嗅探技術...336 12.1.2 網絡協議分析和行為分析...........................336 12.1.3 黑客級別的分析............339 12.2 數據流的截獲..............344 12.2.1 單機數據流的獲取........344 12.2.2 網絡數據流的獲取........346 12.3 Socket 編程接口..........348 12.3.1 幾個重要的概念............349 12.3.2 Windows Socket 結構....350 12.3.3 Windows socket 轉換類函數........................353 12.3.4 Windows socket 通信類函數返回值............357 12.3.5 Windows socket 通信類函數........................359 目錄XIII 12.4 編程實例:RAW Socket 嗅探器............................368 12.4.1 程序主界面.......368 12.4.2 程序代碼..........369 第 13 章串口通信時的數據監控.............................377 13.1 串口的通信與監聽......377 13.1.1 串口簡介..........377 13.1.2 串口通信中的“拿來”技術.......................379 13.2 基于VSPE 的串口開發技術....380 13.2.1 VSPE 簡介........381 13.2.2 VSPE 的術語....381 13.2.3 VSPE 的串口嗅探功能..386 13.2.4 VSPE 的使用與開發......388 13.2.5 VSPE 的API ....388 13.3 編程實例:串口嗅探器...........392 13.3.1 程序主界面.......393 13.3.2 程序代碼..........394 第 6 部分控制交互型的拿來技術 第 14 章從運行的程序中拿來 ...402 14.1 Windows 內存模式......402 14.1.1 Windows 的對內存讀寫的限制...................403 14.1.2 Windows 的內存管理....404 14.1.3 調試程序簡介...407 14.2 基于WinIO 的內存讀取編程...408 14.2.1 WinIO 的API ...408 14.2.2 WinIO 的編程...412 14.3 基于API 的程序調試函數.......412 14.3.1 Windows 調試程序的結構...........................413 14.3.2 Windows 調試程序的API ...........................422 14.3.3 Windows 的進程API.....428 14.3.4 Windows 的動態內存API ...........................429 14.3.5 Windows 調試程序的編寫方式...................433 14.4 編程實例:讀正在執行程序的數據......................434 14.4.1 程序主界面.......435 14.4.2 程序代碼..........435 第 15 章 Hook 控制式的拿來.....440 15.1 Hook 簡介...................440 15.1.1 什么是Hook.....441 15.1.2 Hook 的運行機制..........442 15.1.3 怎么使用Hook.443 XIV 獨辟蹊徑的編程思維——“拿來主義”編程 15.2 Hook 函數...................443 15.2.1 SetWindowsHookEx 函數............................444 15.2.2 UnhookWindowsHookEx 函數.....................446 15.2.3 CallNextHookEx 函數....446 15.2.4 回調函數..........447 15.3 Hook 的類型................447 15.3.1 WH_CALLWNDPROC..447 15.3.2 WH_CBT..........448 15.3.3 WM_QUEUESYNC.......452 15.3.4 WH_DEBUG ....452 15.3.5 WH_FOREGROUNDIDLE.......................... 453 15.3.6 WH_GETMESSAGE .....453 15.3.7 WH_HARDWARE.........453 15.3.8 WH_JOURNALRECORD............................453 15.3.9 WH_JOURNALPLAYBACK.......................454 15.3.10 WH_KEYBOARD .......455 15.3.11 WH_MOUSE ..455 15.3.12 WH_MSGFILTER........455 15.3.13 WH_SHELL....456 15.3.14 WH_SYSMSGFILTER.456 15.4 編程實例1:線程Hook 程序編寫........................456 15.4.1 程序主界面.......456 15.4.2 程序代碼..........457 15.5 編程實例2:全局Hook 程序編寫........................459 15.5.1 程序主界面.......459 15.5.2 DLL 程序代碼..460 15.5.3 調用程序代碼...462 附錄A 本書容易混淆概念解析..464 A.1 同名不同義概念...........464 A.2 同義不同名概念...........464 A.3 易混概念......................466 附錄B 詳解ASCII 碼.......468 附錄C HTTP 錯誤返回碼...........474 參考文獻....479 后記.............481 |
序: |