友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
深入浅出MFC第2版(PDF格式)-第124部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
叩氖恰 utputDebugString 最終會牽動 VMM 的 Exec_PM_Int41h service 。如果我們能
937
…………………………………………………………Page 1000……………………………………………………………
第五篇 附錄
Exec_PM_Int41h Exec PM Int41h
hooking _ _
夠寫個程式,與 掛勾( ),使 能夠先來呼
叫我自己的函式,我就可以悠游自在在其處理TRACE 的除錯字串了。
這個技術最大的難點在於,要與 VMM 打交道,我們得寫 ring0 程式。在 Windows 95
VxD NT VxD VxD DOS/Windows 虛虛
這意味著要寫 ( 不支援 )。 的架構其實不太難, 虛虛
擬機器作業環境擬機器作業環境 / 1993 VMM
擬機器作業環境擬機器作業環境 (侯俊傑 旗標, )曾經有過詳細的探討。問睿陟丁 〉脑S
多 services 常常要合著用,尤其是面對斷模擬、事件處理、與 ring3 通訊過程、乃至
於 hooking 的處理等等,而這方面的資料與範例相當稀少。此外,ring0 和 ring3 間的
同步(synchronous )處理,也很令頭痛。
process A
global DBWIN
。。。
TRACE(〃JJHOU n〃);
TRACE(〃MikeSon n〃);
TRACE(〃Matt n〃);
。。。
process B
。。。
TRACE(〃trace1 n〃);
TRACE(〃trace2 n〃);
TRACE(〃trace3 n〃);
。。。
process C
。。。
TRACE(〃Sue n〃);
TRACE(〃Stella n〃);
這個 DBWIN 可接收任何 ring3 程式的 Trace 字串。發出 Trace 字串
TRACE(〃Dennis n〃);
的程式不必和這個 DBWIN 有任何關連。
。。。
圖十 global DBWIN 的執行畫面。它是一個 Console 程式,在接受任何按
鍵之前,將一直存在。
不甘示弱
Paul DiLascia 看到百家爭鳴,大概是不甘示弱,在 Microsoft Systems Journal 1997。04 的
938
…………………………………………………………Page 1001……………………………………………………………
附錄D 以MFC 重建DBWIN
C/C++ Q/A 專欄又發表了篇文章。他說「理想TraceWin 應該無臭無味,如影隨形。
#include init 。。。
洠в小 。瑳'有 函式 」
於是他又想到種方法,此法只能在 MFC 動態聯結版身有效。幸叩氖谴蟛糠莩淌健
MFC DLL afxDump。m_pFile
都動態聯結到 。要點非常簡單:寫個 並在它被載入時設定
= new CFileTrace DLL
。然後讓每個程式載入此 。簡單!
不幸的是,洠в邢胂窈唵巍R尅 LL 能夠被每個程式載入,需要用到 Jeffrey Richter
於其名著 Advanced Windows 第 16 章的 Inject 技術,或是 Matt Pietrek 於其名著
Windows 95 System Programming SECRETS 10 Spy Paul DiLascia
第 章的 技術。或是, 所
採用的 system…wide hook 技術。
好吧,到此為止。我知道我們每個都已經頭皮發麻了。有興趣的,自己去找那些文
章和書籍來看。
榮譽
Matt Pietrek Paul
我真希望這些巧奪工的榮譽都屬於我,可惜都不是,它們分屬於 、
DiLascia Ton Plooy
、 。
我喜歡的本期刊雜誌與家電腦圖書出版公司的網址
Microsoft Systems Journal MSJ
( ) http://msj。/
Windows Developer's Journal WDJ
( ) http://wdj。/
Dr。 Dobb's Journal DDJ
( ) http://ddj。/
PC Magazine http://pcmag。/
R&D Books http://rdbooks。/
Microsoft Press http://microsoft。/mspress/
Addison Wesley http://aw。/devpress/
O!|reilly http://ora。/
939
………………………………………………………………………用户上传之内容结束……………………………………………………………………………………
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!