# 6 HOOKING
Hooking 是一種強大的進程監控 (process-observation)技 術,通過改變進程的流程,以監視進程中數據的訪問和改變。 Hooking 常用于隱藏 rootkits,竊取按鍵信息,還有調試工作。在逆向調試中,通過構建簡單的 hook 檢索我們需要的信息,能夠節省很多手工操作的時間。hook,簡單而強大。
在 Windows 系統中,有非常多的方法實現 hook。我們主要介紹兩種:soft hook 和 hard hook。soft hook 就是在要附加的目標進程中,插入 INT3 中斷,接管進程的執行流程。這和 58 夜的“擴展斷點處理”很像。hard hook 則是在目標進程中硬編碼( hard-coding)一個跳轉 到 hook 代碼(用匯編代碼編寫)。Soft hook 在頻繁的函數調用中很有用。然而,為了對目標 進 程 產 生 最 小 的 影 響 就 必 須 用 到 hard hook 。 有 兩 種 主 要 的 hard hook , 分 別 是 heap-management routines 和 intensive file I/O operations。
我們在前面介紹的工具實現 hook。用 PyDbg 實現 soft hook 用于嗅探加密的網絡傳輸。 用 Immunity 實現 hard hook 做一些高效的 heap instrumentation。
- 序
- 1 搭建開發環境
- 1.1 操作系統準備
- 1.2 獲取和安裝 Python2.5
- 1.3 配置 Eclipse 和 PyDev
- 2 調試器設計
- 2.1 通用 CPU 寄存器
- 2.2 棧
- 2.3 調試事件
- 2.4 斷點
- 3 自己動手寫一個 windows 調試器
- 3.2 獲得 CPU 寄存器狀態
- 3.3 實現調試事件處理
- 3.4 全能的斷點
- 4 PyDBG---純 PYTHON 調試器
- 4.1 擴展斷點處理
- 4.2 處理訪問違例
- 4.3 進程快照
- 5 IMMUNITY----最好的調試器
- 5.1 安裝 Immunity 調試器
- 5.2 Immunity Debugger 101
- 5.3 Exploit 開發
- 5.4 搞定反調試機制
- 6 HOOKING
- 6.1 用 PyDbg 實現 Soft Hooking
- 6.2 Hard Hooking
- 7 Dll 和代碼注入
- 7.1 創建遠線程
- 7.2 邪惡的代碼
- 8 FUZZING
- 8.1 Bug 的分類
- 8.2 File Fuzzer
- 8.3 改進你的 Fuzzer
- 9 SULLEY
- 9.1 安裝 Sulley
- 9.2 Sulley primitives
- 9.3 獵殺 WarFTPD
- 10 Fuzzing Windows 驅動
- 10.1 驅動通信
- 10.2 用 Immunity fuzzing 驅動
- 10.4 構建 Driver Fuzzer
- 11 IDAPYTHON --- IDA 腳本
- 11.1 安裝 IDAPython
- 11.2 IDAPython 函數
- 11.3 腳本例子
- 12 PyEmu
- 12.1 安裝 PyEmu
- 12.2 PyEmu 一覽
- 12.3 IDAPyEmu