友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
富士康小说网 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

深入浅出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 


………………………………………………………………………用户上传之内容结束……………………………………………………………………………………

返回目录 上一页 回到顶部 9 10
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!