【轉貼】將VMware與SoftICE基於網路的遠端除錯功能相結合 (8千字)

看雪資料發表於2003-03-23

作者:scz(小四)

2.0 將VMware與SoftICE基於網路的遠端除錯功能相結合

Q: 在VMware上安裝SoftICE,總是無法正確配置顯示卡驅動,選擇

  Universal Video Driver(SoftICE appears in a "window")

  測試失敗。因此無法在VMware中Ctrl-D呼叫出SoftICE的螢幕。能否對VMware機進
  行基於網路的遠端除錯。

A: 小四 <scz@nsfocus.com> 2003-03-20 09:04

經過四個小時測試、調整,答案是肯定的。我使用VMware Workstation 3.0,其上安
裝了英文版Windows XP SP1以及DriverStudio 2.7所攜帶的SoftICE,版本如下:

SoftICE (R) - DriverStudio (tm) 4.2.7 (Build 562)

VMWare外部機器也是英文版Windows XP SP1。下面未提與遠端除錯無關的SoftICE配
置。

--------------------------------------------------------------------------
1) 確認在VMware設定中只虛擬出一塊物理網路卡。在VMware中安裝XP,是否打SP1與遠
  程除錯無關。

  安裝作業系統完成後,系統屬性->硬體->裝置管理器,確認只有一塊物理網路卡,
  並且正常工作中(無黃色問號、無紅色叉號)。

  進入網路屬性,將與現有物理網路卡關聯的原有驅動程式刪除。禁用(不建議刪除)
  已安裝協議、客戶端軟體、服務方軟體,就是將前面核取方塊中的對號全部勾去不
  要。

  如果不是新裝XP,假設有與上述不相符的配置,比如已經虛擬出兩塊物理網路卡,
  已經進行過TCP/IP配置,最好能重新配置一下,刪除一塊物理網路卡、取消現有的
  TCP/IP配置。當然,你可以不改動原有配置,一般來說不會出什麼問題,真出了
  問題再按我說的做也來得及。

  對於真實的遠端主機,如果有兩塊物理網路卡,必須先從插槽拔下一塊來,只保留
  一塊物理網路卡在插槽中。

2) SoftICE在\Program Files\Compuware\DriverStudio\SoftICE\Network\下提供了
  三種網路卡驅動(3COM/3C90X、Intel/E100、Novell/NE2000),如果你的網路卡在這三
  種驅動支援範圍內,可以立即完裝或更新網路卡驅動,選擇從磁碟安裝,指定上述
  安裝目錄。安裝驅動安成後,可以配置TCP/IP協議等等。

  這個版本的VMware虛擬出來的網路卡是AMD PCNET Family PCI Ethernet Adapter。

  按照以前BBS流行說法,如果你的網路卡不在上述三種驅動支援範圍內,就無法進行
  基於網路的遠端除錯。總不能為了遠端除錯而專門換網路卡吧,某些便攜機的網路卡
  還不是那麼容易更換的。幸運的是有辦法讓幾乎所有型別的網路卡都支援基於網路
  的遠端除錯。執行:

  \Program Files\Compuware\DriverStudio\SoftICE\Network\UND\UNDSetup.exe

  在Available Device中可以看到當前物理網路卡,選中它,選擇收音機按鈕

  Use Universal Network Driver

  一路確定並重啟VMware中的OS。重啟之後,你會發現網路屬性裡沒有任何物理網
  卡了。事實上,無論你以前有多少塊物理網路卡、做過多少網路配置,都會"丟失"。
  不要慌,如果想恢復,再次執行:

  \Program Files\Compuware\DriverStudio\SoftICE\Network\UND\UNDSetup.exe

  在Available Device中可以看到"SoftICE network transport",選中它,選擇收
  音機按鈕

  None

  一路確定並重啟VMware中的OS。重啟之後,你以前設定就基本恢復了。前面我的
  建議部分出於完美主義傾向,可能不是必須的,現在你理解了麼。

3) 當網路屬性裡沒有任何物理網路卡的時候,已經可以進行基於網路的遠端除錯。與
  "Remote Access"設定無關,將那裡所有核取方塊中的對號全部勾掉。不要使用
  "Network Debugging"設定,據yuange說,這裡處理有問題,他修改了ntice.sys。
  我沒有修改ntice.sys,而是使用General->Initialization,內容如下:

  faults off;set font 3;lines 43;net start 192.168.7.153 mask=255.255.255.0 gateway=192.168.7.254;net allow 192.168.7.2 auto password=123456;X;

  VMware外部的機器IP為192.168.7.2,所以有如上設定。只設定了lines而沒有設
  置width,因為後者需要"Universal Video Driver"模式,否則不可調。

  雖然在VMware中Ctrl-D呼叫不出SoftICE螢幕,但實際上已經呼叫成功,可以盲打。
  因此,如果沒有做如上設定或基於其它原因需要動態修改、測試時,可以在盲打
  輸入:

  Ctrl-D
  net start 192.168.7.153 mask=255.255.255.0 gateway=192.168.7.254
  net allow any auto
  X

  其中192.168.7.153就是遠端SoftICE所使用的IP地址,"net allow any auto"表
  示對操作方無任何IP、口令限制,對於初次測試遠端除錯功能的人來說,最好使
  用這樣的設定,不需要重啟機器,即刻生效。

  留心盲打,碰上鍵盤、滑鼠無響應時,很可能是SoftICE被撥出來了,輸入X退出
  試試,不要急於按電源重啟。

4) 如果遠端設定是:

  net allow any auto

  在VMware外部機器上執行如下命令:

  \Program Files\Compuware\DriverStudio\SoftICE\siremote.exe 192.168.7.153

  成功的話就會看到你熟悉的SoftICE視窗。如果遠端設定了口令:

  net allow 192.168.7.2 auto password=123456

  在VMware外部機器上執行如下命令:

  \Program Files\Compuware\DriverStudio\SoftICE\siremote.exe 192.168.7.153 21321 123456

  這種遠端除錯使用了21321/UDP埠,123456是口令。siremote.exe有BUG,為了
  指定口令,必須指定目標埠,可我在文件中沒有找到相關說明,還好老夫是折
  磨Sniffer Pro出身,對"net allow any auto/siremote.exe 192.168.7.153"通
  信過程捕包一觀,才確定目標埠是21321/UDP。不過,我不敢確定你們那裡也使
  用同樣的埠,假設有問題,請立即捕包確定。

  net start、net allow這些命令不能在遠端視窗中使用,只能在本地視窗中使用,
  因此有時動態修改、測試時,需要在VMware中盲打。

  為了進行基於網路的遠端除錯,不要求操作方啟動SoftICE,siremote.exe只作為
  普通網路客戶端軟體出現。

5) 可以在VMware中設定如下注冊表項:

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTice

  NullVGA REG_DWORD 1(預設為0)

  其本意是,如果遠端呼叫SoftICE,在被除錯端看不到SoftICE視窗,否則可以看
  到。由於VMware中顯示卡驅動的緣故,有無這個設定都一樣效果,我還是設定上了。

6) 至第5步為止,結合VMware的遠端除錯已經搞定。可VMware中的XP也喪失了正常的
  網路通訊功能,我們需要遠端除錯SMB協議處理時,就完蛋了。此時有兩種選擇,
  第一種是透過新增新硬體安裝如下虛擬裝置:

  \Program Files\Compuware\DriverStudio\SoftICE\Network\UND\VNIC\sivnic.inf

  在重啟過程中如果因VNIC出現故障,當UND驅動提示時,可按ESC,這將禁止載入
  UND、VNIC。很可憐,我還沒等到重啟,只是在安裝過程中就出現BSOD了,連續試
  了幾次都如此,不清楚是使用VMware的緣故,還是sivnic.inf本身的緣故,我沒
  有試真實遠端主機的情形。

  理論上,如果此時安裝了VNIC,就可以看到一塊網路卡,然後可進行TCP/IP協議配
  置等等。但是網路效能很低,這與是否使用VMware無關,即便真實的遠端機器也
  如此。

  另一種辦法是真實新增一塊物理網路卡。對於VMware來說,需要關閉當前XP,關閉
  電源,回到初始介面,然後在配置中增加一塊物理網路卡。對於真實的遠端主機,
  就需要開啟機箱插入新網路卡了。注意,安裝UND時會導致以前所有配置"丟失",包
  括物理網路卡,因此一些操作順序尤其重要。VMware以前有兩塊物理網路卡,安裝UND
  後丟失,不太影響什麼,可以繼續增加物理網路卡。真實遠端主機就不同了,不大
  可能有第三個插槽給你插第三塊物理網路卡,現在明白步驟1中所說了吧。

  現在在網路屬性裡可以看到惟一一塊網路卡了,就是新增加上來的那塊,然後進行
  正常的TCP/IP協議配置,不要使用192.168.7.153,這是SoftICE使用的IP地址,
  比如可以使用192.168.7.152。有些網路設定是全域性設定,比如TCP/IP篩選,如果
  修改,可能會影響包括"那些丟失的網路卡"在內的所有網路卡,結果未知,所以不建
  議修改這些全域性設定。此外還有一處古怪,即使沒有選擇"自動獲得IP地址",而
  是配置靜態固定IP,重啟後在網路屬性裡看到的還是"自動獲得IP地址",不過這
  是假像,最好在CMD中執行"ipconfig /all"命令,可以看到:

  Dhcp Enabled. . . . . . . . . . . : No
  IP Address. . . . . . . . . . . . : 192.168.7.152
  Subnet Mask . . . . . . . . . . . : 255.255.255.0
  Default Gateway . . . . . . . . . : 192.168.7.254

  在登錄檔中也只看到一個網路介面,並且配置了靜態固定IP:

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

  雖然"自動獲得IP地址"是假像,但你要修改什麼的話,還是需要從頭走一遍,除
  非你直接去登錄檔中修改。無論如何,都需要重啟,而本來XP下修改這些東西不
  需要重啟的。

  現在我們的VMware即具有正常的未降低效能(與VNIC相比)的網路功能,又支援基
  於網路的遠端除錯功能,爽。

7) UND、VNIC的解除安裝順序很重要,一定要先透過刪除裝置解除安裝VNIC,再執行
  UNDSetup.exe解除安裝UND,和安裝順序正好相反,不要混了。

  如果安裝VNIC過程中出現BSOD,也去裝置管理器中檢視一下,刪除半安裝狀態的
  VNIC,以免影響UND。

  從上述文字看出,有兩塊物理網路卡的真實遠端主機無論如何都可以支援基於網路
  的遠端除錯。影響效能的方式只有一種,就是VNIC,其它兩種方式都不影響效能。
  不再侷限於3COM/3C90X、Intel/E100、Novell/NE2000。

  如果使用VMware,更方便。

8) 在裝置管理器中,System devices->SoftICE network transport,該裝置佔用了
  中斷請求15。我的測試環境中,Secondary IDE Channel也佔用中斷請求15,前者
  會搶佔成功,於是後者出現黃色問號,無法啟動。如果VMware的光碟機的接在
  IDE 1:0上,就無法使用光碟機,此時可以將光碟機換接在IDE 0:1上,即Primary IDE
  Channel的從盤,與主盤一起使用中斷請求14,光碟機恢復正常。
--------------------------------------------------------------------------

上述就是VMware+SoftICE完美解決方案的配置過程,中間省略了一些與遠端除錯無關
的配置步驟。

相關文章