青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

aurain
技術文摘
posts - 137,  comments - 268,  trackbacks - 0

    我這里將一步一步的介紹,是從新手的角度來講的,所以對高手來說,可能有些啰嗦。如果你看完這篇文章還不知道如何設置,那么原因可能有兩個:1. 我沒講好;2. 你需要稍微認真看下并實踐下,并實現對相關基本概念要有所了解。

本文參考了以下的blog及文章,在此對作者的辛勤勞動表示感謝!

1. http://hi.baidu.com/1ian9yu

2. http://m.shnenglu.com/fwxjj/archive/2008/01/17/41349.html

 

一、環境的搭建

       首先介紹如何使用WinDbgVMware來搭建調試內核驅動的環境。這里先把我用到的軟件版本說明下:

WinDbg 6.10 X86http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx#a

Windows符號表,當然也是XP版本的, http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx#d

VMware WorkStation 6.0(這個網上搜,我是公司內部網下的,應該有更新的版本了,這個能用,所以就先用著,主要是公司大家統一安裝這個)

虛擬機安裝的操作系統是Windows XP SP2,真實的(我自己用的)操作系統也是Windows XP SP2。在這里,先統一稱呼,虛擬機操作系統叫GuestOS,實際的叫HostOS

 

下面是詳細的步驟:

1. 下載VMware并安裝好

2. 下載Windows符號表并安裝好,按默認設置即可(C:\Windows\Symbols\,這個路徑稍后要用到)

3. 下載WinDbg并安裝,也是默認即可

4. 接下來在虛擬機VMware里安裝操作系統(XP),安裝好后啟動進入GuestOS 修改boot.ini文件(找不到?在C盤根目錄下,要設置系統文件可顯示,如何設置就不說了,自己Google)。在文件中添加一行(添在文件最后即可,也即operating systems]節中加入一行),內容如下:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /fastdetect /debug /debugport=com1 /baudrate=115200

上面可以完全copy過去

5. 隨后關閉系統。配制虛擬機的硬件,點擊 "Edit virtual machine settings",添加一個Serial Port,選擇"Output to named pipe",然后下一步,第一框里保持默認的 \\.\pipe\com_1, 第二框里選"This end is the server." 第三框里選"The other end is an application." 選中 "Connect at power on"選項,點擊完成,再在settings主界面的I/O mode選中”Yield CPU on poll”選項。

好,以上是在虛擬機要做的全部事情,下面我們要在真實系統中做一些設置了。

 

6. 在真實系統中,我們要在設備管理器中。找到通訊端口Com1口,然后再屬性頁中修改他的速率(每秒位數)為115200

7. 為使用方便,我們在桌面新建一快捷方式(桌面右鍵-新建-快捷方式),快捷方式的命令行為

"C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe" -y C:\Windows\Symbols\ -b -k com:pipe,port=\\.\pipe\com_1

上面可以完全copy過去,當然引號內的路徑是需要修改的,就是你安裝的WinDbg路徑了。

這里面-y后面的路徑就是我們前面安裝符號表的路徑。

名稱我設置為WinDbg

好,到此為止,所有設置完畢,現在開始運行了。

8. 再此啟動GuestOS,這個時候可以看到操作系統選擇屏幕了(類似你安裝了雙操作系統),我們選擇那個帶有Debug的。

9. 雙擊第7步創建的那個快捷方式WinDbg,它會去自動連接GuestOS,這是在WinDbg里會顯示一些信息。

至此,環境設置完畢

附加說明:

原理就是VMwareGuestOS虛擬一個COM口,并在HostOS創建了一個管道,這個管道的一端連接GuestOSCOM口,另一端則是WinDbg,所以HostOSWinDBG)和GuestOS的所有數據交換都是通過這個管道來流通轉發的。

1.我的電腦沒有COM口,所以不能搭建調試環境?

不是的,你的電腦有沒有COM口與這個調試環境沒有任何關系,整個過程根本沒有使用到你電腦的物理COM口。VMware只是在GuestOS虛擬了一個COM口而已。

2.在創建串口(COM口屬于串口的一種)的過程中,看到指定的管道為“\\.\pipe\com_1”,我可以指定為其他嗎?

可以的。這只是指定一個管道名字而已,VMware用這個名字來創建一個命名管道。我們完全可以改成“\\.\pipe\liangyu”“\\.\pipe\aaa”等等,但記得要把WinDbg的快捷方式處的管道名字更改為一樣。

3.我可以在GuestOSboot.ini文件更改那個COM口嗎?比如把COM1改為COM2

不可以的,VMware會把虛擬出的這個COM口總是定義為com1GuestOS的其他COM口都得讓位。

4.看到很多教程都說到要勾選“I/O mode” 一定要勾選嗎?

這個勾選不勾選都可以,我沒發現有什么大的區別。

5.在更改GuestOSboot.ini文件的時候,增加有“/debugport=com1 /baudrate=115200”這些內容,含義是?

使用的調試端口是com1,波特率是115200。這是在告訴GuestOS現在要調試內核(操作系統),把調試信息往COM1口輸出,使用的波特率是115200
我在試驗的時候發現,這個波特率其實也不一定要設為115200,完全可以修改為112233445566等等其他數據。可能是因為WinDBG自動調節波特率來適配管道或COM口,所以波特率在這里沒有實際意義。

6.WinDbg的快捷方式那里添加了“-b -k com:pipe,port=\\.\pipe\com_1,resets=0”這些內容,含義是?

大概意思就是使用管道“\\.\pipe\com_1”來進行內核調試。各個參數的說明在WinDbg的參考文檔里面有,這里粘貼一下:

-b

(Kernel mode only) This option has two effects:

1. The debugger will break into the target computer immediately upon connection.

2. After a reboot, the debugger will break into the target computer once the kernel is initialized. See Crashing and Rebooting the Target Computer for details and for other methods of changing this status.

-k [ConnectType]

(Kernel mode only) Starts a kernel debugging session. For details, see Choosing Kernel Debugging Settings. If -k is used without any ConnectType options following it, it must be the final entry on the command line.

resets=0

Specifies that an unlimited number of reset packets can be sent to the target when the host and target are synchronizing. Use the resets=0 parameter for Microsoft Virtual PC and other virtual machines whose pipes drop excess bytes. Do not use this parameter for VMware or other virtual machines whose pipes do not drop all excess bytes.

7.一定要這樣創建一個WinDbg的快捷方式才能進行調試嗎?

不是的,我們完全可以先正常運行WinDbg,然后選擇菜單“File”--->“Kernel Debug...”,然后在彈出的對話框中進行設置,這樣也是可以進行調試的。

8.上面第8、第9步有先后順序嗎?看到很多資料都很強調這個先后順序。

這個是沒有先后順序的。你可以先執行第8,再到第9步,或者先執行第9,再到第8步都是沒有關系的。

選擇Debug模式后,即使進入系統操作了很久,運行了很多東西,但只要你運行WinDbg,照樣能夠連上去調試。所以說這里是沒有先后順序的。

 

 

 

下面介紹第二部分,驅動調試

 

二、驅動調試

       編寫完驅動后,我們當然要進行調試(除非你是蓄意想讓用戶不斷藍屏,當然牛人除外),這不可能在HostOS(本機)里調試,否則BOSD就麻煩了,而且支持本機調試的調試器比較流行的只有softice,這個東西早就停止更新了,而且對目前的操作系統的支持更是非常不好。所以使用WinDbgVMware調試驅動程序絕對是我們最佳的選擇。

       在這里,我就以微軟自帶的Passthru(其實什么驅動都是一樣的)為例。

好了,開始。

1. 按照之前的說明搭好調試環境后,先用WinDbg連上VMware,如果GuestOS阻塞了,則在WinDBG輸入命令“g”,然后回車,直到讓GuestOS跑起來。我們把編譯好的驅動文件(*.sys)放到GuestOS里,回到WinDbg,按“Ctrl+Break”WinDbg會讓GuestOS暫停下來,我們也可以在WinDbg的命令欄輸入命令了,在這里輸入“bu drivername!driverentry”(本例是bu passthru!driverentry,大小寫不限)可以在驅動的DriverEntry函數的入口點下一個延遲斷點,其實BU的意思就是Set Unresolved BreakpointWinDbg會記住這個斷點,當這個驅動被加載了并且執行到這個地方,WinDbg會暫停GuestOS讓你進行調試操作。drivername是你的驅動名字,比如我在這里的驅動名字是passthru,那我在這里輸入的命令如下:bu passthru!driverentry

2. 回車后即下好斷點了。現在打開源文件,源文件在HostOS呢。“Ctrl+O”找到驅動的源文件打開,我們打開passthru.c

3. 還要設置符號路徑。“Ctrl+S”打開設置窗體,符號路徑一般有兩個(可以有多個),一個是你設置保存系統符號文件的路徑,另一個是你驅動的PDB的路徑,以分號隔開。如下:

C:\Windows\Symbols\;E:\Passthru\driver\objchk_wxp_x86\i386

4. 記得勾選“Reload”OK后稍等片刻,等WinDbg把這些東西加載完畢后再操作。加載完后我們輸入“g”,回車,讓GuestOS跑起來。在GuestOS里運行驅動加載/卸載工具把我們的驅動加載起來。可以看到,已經斷下來了,我們可以源碼調試驅動了。

 

注:打開源文件和設置符號路徑可以在一開始的時候就做,這是沒有嚴格先后順序的。

 

 

posted on 2009-01-04 16:36 閱讀(5839) 評論(4)  編輯 收藏 引用 所屬分類: windows驅動

FeedBack:
# re: 使用WinDbg和VMware調試NDIS中間層驅動程序
2009-01-12 11:42 | daisy
好久沒有觀注,支持一下。。。  回復  更多評論
  
# re: 使用WinDbg和VMware調試NDIS中間層驅動程序
2009-01-12 15:34 |
@daisy
...  回復  更多評論
  
# re: 使用WinDbg和VMware調試NDIS中間層驅動程序
2009-01-15 18:57 | tangxinfa
謝謝,真是好文章啊,我現在也可以單步調試驅動了。  回復  更多評論
  
# re: 使用WinDbg和VMware調試NDIS中間層驅動程序
2009-03-13 16:06 | zhang
.load ndiskd可以加載ndis模塊。
通過!miniports可以查看所有微端口的信息。
通過!miniport "微端口地址" 可以查看某個微端口的信息。  回復  更多評論
  

<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

常用鏈接

留言簿(17)

隨筆分類(138)

隨筆檔案(137)

網絡開發

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 501927
  • 排名 - 37

最新隨筆

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲小说区图片区| 国内免费精品永久在线视频| 亚洲国产成人porn| 亚洲一区二区三区在线观看视频| 最新国产成人av网站网址麻豆| 午夜免费日韩视频| 亚洲网站在线播放| 亚洲国产精品黑人久久久| 国产日韩综合| 国产精品日韩久久久| 国产乱码精品一区二区三区五月婷 | 欧美黄色成人网| 久久久综合激的五月天| 久久综合色88| 国产精品视频一二三| 国产三级精品三级| 有码中文亚洲精品| 在线免费日韩片| 一区二区三区久久久| 亚洲影院免费| 久久综合导航| 亚洲第一视频网站| 欧美激情精品久久久| 亚洲激情欧美激情| 久久综合久久美利坚合众国| 欧美一区二区视频免费观看| 欧美成人免费在线视频| 亚洲黄色在线观看| 亚洲欧美国产另类| 久久五月激情| 国产精品入口麻豆原神| 在线观看一区欧美| 在线播放日韩专区| 亚洲综合色视频| 久久全球大尺度高清视频| 亚洲精选中文字幕| 亚洲欧美一区二区精品久久久| 裸体女人亚洲精品一区| 国产精品大全| 国产欧美精品va在线观看| 亚洲精品国产精品国产自| 亚洲无亚洲人成网站77777| 另类激情亚洲| 一区二区高清视频在线观看| 欧美成人一区二免费视频软件| 国产精品国产三级国产普通话三级 | 99国产成+人+综合+亚洲欧美| 久久gogo国模啪啪人体图| 亚洲国产精品第一区二区| 欧美在线免费观看| 欧美日韩在线第一页| 国产精品99免费看 | 久久久久久久久蜜桃| 欧美日韩一区三区四区| 亚洲日本乱码在线观看| 久久国产精品72免费观看| 亚洲视频一区| 亚洲高清视频一区| 午夜精品久久久久久| 欧美va天堂在线| 欧美精品一区二区三区久久久竹菊| 国产精品久久久久久久久久免费看| 伊人成人在线| 久久精品国产欧美激情| 欧美影视一区| 国产精品网站在线播放| 国产精品私房写真福利视频| 亚洲欧洲日产国产综合网| 中文国产亚洲喷潮| 99热这里只有精品8| 免费在线观看精品| 亚洲免费福利视频| 亚洲激情国产精品| 国产精品久久久亚洲一区 | 蜜臀久久99精品久久久画质超高清 | 欧美成人国产va精品日本一级| 亚洲一区国产| 国产精品一区二区在线观看| 国产精品视频| 久久久噜噜噜久久中文字免| 亚洲一区3d动漫同人无遮挡| 国产一区二区主播在线| 久久成人在线| 欧美wwwwww| 99riav国产精品| 亚洲天堂男人| 国产女人精品视频| 欧美激情精品久久久久久久变态 | 欧美激情精品久久久久| 国产精品日韩精品欧美在线| 狠狠色2019综合网| 久久综合亚洲社区| 久久亚洲风情| 亚洲福利视频一区| 欧美激情精品久久久久久大尺度 | 91久久精品一区二区别| 久久综合导航| 老牛国产精品一区的观看方式| 亚洲视频欧美在线| 亚洲欧美国产制服动漫| 亚洲精品国产精品国自产观看浪潮| 亚洲欧洲精品一区二区| 亚洲综合成人婷婷小说| 国产精品私拍pans大尺度在线 | 快播亚洲色图| 国产精品久久久久9999| 国产精品99久久久久久久vr| 久久高清福利视频| 日韩一区二区精品视频| 亚洲一区二区三区精品在线| 国产专区综合网| 91久久午夜| 国产精品你懂的在线欣赏| 久久久久久尹人网香蕉| 亚洲三级观看| 国产精品一页| 亚洲第一网站| 欧美大胆a视频| 亚洲嫩草精品久久| 久久人人九九| 亚洲黄色在线视频| 亚洲欧美日韩在线观看a三区| 国产欧美在线视频| 亚洲东热激情| 国产精品欧美一区二区三区奶水 | 亚洲激情欧美激情| 欧美一区二区免费| 宅男精品视频| 免费观看成人www动漫视频| 久久夜色精品| 国产精品剧情在线亚洲| 亚洲桃花岛网站| 亚洲精选久久| 欧美日韩大陆在线| 欧美 亚欧 日韩视频在线| 影音先锋亚洲电影| 欧美一区二区精品在线| 久久三级福利| 欧美精品乱码久久久久久按摩| 亚洲第一精品电影| 国产精品国产a级| 亚洲深夜福利视频| 国产欧美日韩另类一区| 日韩性生活视频| 亚洲精品偷拍| 亚洲欧美国产制服动漫| 久久爱另类一区二区小说| 欧美日韩在线一二三| 亚洲视频在线观看视频| 亚洲午夜黄色| 国产拍揄自揄精品视频麻豆| 亚洲视频电影在线| 久久久久久免费| 国产一区二区丝袜高跟鞋图片| 久久久久国色av免费观看性色| 久久精品女人| 国产亚洲aⅴaaaaaa毛片| 午夜精品区一区二区三| 欧美一区二区三区在线| 久久久精品一区| 久久亚洲综合网| 亚洲电影在线免费观看| 欧美1区2区视频| 免播放器亚洲| 亚洲国产天堂久久综合| 欧美福利视频在线| 亚洲精品欧美日韩| 久久国产精品黑丝| 怡红院精品视频在线观看极品| 欧美福利专区| 亚洲免费观看高清完整版在线观看熊| 欧美亚洲一区| 狠狠色综合色区| 国产精品magnet| 欧美一区在线直播| 夜夜嗨av一区二区三区| 日韩亚洲精品视频| 国产亚洲一区二区在线观看| 91久久一区二区| 久久久水蜜桃| 欧美大片第1页| 99re在线精品| 国产日产精品一区二区三区四区的观看方式 | 午夜精品福利一区二区蜜股av| 亚洲丝袜av一区| 一区国产精品| 亚洲女同精品视频| 免费成人你懂的| 中文国产成人精品久久一| 久久久亚洲综合| 亚洲手机在线| 欧美成人午夜免费视在线看片| 欧美在线二区| 亚洲精品欧美日韩专区| 激情久久综合| 久久综合国产精品| 午夜精品久久久久99热蜜桃导演| 亚洲天堂久久| 91久久久久久国产精品| 国产精品扒开腿做爽爽爽软件 |