## 2.3 調試事件
調試器在調試程序的時候會一直循環等待,直到檢測到一個調試事件的發生。當調試事 件發生的時候,就會調用一個與之對應的事件處理函數。
處理函數被調用的時候,調試器會暫停程序等待下一步的指示。以下的這些事件是一個 調試器必須能夠捕捉到的(也叫做陷入):
+ 斷點觸發
+ 內存違例(也叫做訪問違例或者段錯誤)
+ 程序異常
每個操作系統都使用不同的方法將這些事件傳遞給調試器,這些留到操作系統章節 詳細介紹 。部分的操作系統,能捕捉(陷入)更多的事件,比如在線程或者進程的創建以 及動態鏈接庫的加載的時候。
一個優秀的調試器必須是可定制腳本的,能夠自定義事件處理函數從而對程序進 行自動化調試。舉個例子,一個內存訪問違例產生的緩沖區溢出,對于黑客來說相當的有趣。 如果在平時正常的調試中你就必須和調試器交互,一步一步的收集信息。但是當你使用定制 好的腳本操作調試器的時候,它就能夠建立起相對應的事件處理函數,并自動化的收集所有 相關的信息。這不僅僅節省了時間,還讓我們更全面的控制整個調試過程。
- 序
- 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