《深入浅出MFC》2/e
可以建立㆒個「系統除錯器」,把所有執行起來的程式統統視為我的除錯對象?如果這 個問題有肯定答案,global DBWIN 就有希望了。 有,VMM 提供了㆒個 INT 41h 介面。此介面作用起來的條件是,必須有㆒個「系統除 錯器」存在。而「系統除錯器」存在的條件是:當 VMM 以 int41h/AX=DS_DebLoaded 發 出訊息時,必須有程式以 AX=DS_DebPresent 回覆之。 可是 OutputDebugString 最終會牽動 VMM 的 Exec_PM_Int41h service。如果我們能 第五篇 附錄 938 夠寫㆒個程式,與 Exec_PM_Int41h 掛勾(hooking),使 Exec_PM_Int41h 能夠先來呼 叫我自己的函式,我就可以悠游自在㆞在其㆗處理 TRACE 的除錯字串了。 這個技術最大的難點在於,要與 VMM 打交道,我們得寫 ring0 程式。在 VxD)。VxD 的架構其實不太難,DOS/Windows 虛 虛 虛 虛 擬機器作業環境 擬機器作業環境 擬機器作業環境 擬機器作業環境(侯俊傑 / 旗標,1993)曾經有過詳細的探討。問題在於 VMM 的許 多 services 常常要合著用,尤其是面對㆗斷模擬、事件處理、與 ring3 通訊過程、乃至 於 hooking 的處理等等,而這方面的資料與範例相當稀少。此外,ring0 和 ring30 码力 | 1009 页 | 11.08 MB | 1 年前3
共 1 条
- 1