SOFTICE是一個(gè)非常經(jīng)典的用于調(diào)試軟件的工具。我經(jīng)常用它來調(diào)試跟蹤程序,SoftICE(系統(tǒng)級(jí)調(diào)試工具)目前公認(rèn)最好的系統(tǒng)級(jí)調(diào)試工具!win7肯定不能用SoftICE,這東西早就斷代了(自從混蛋微軟打垮Compuware公司之后)。如果一定要用,下一個(gè)vmware虛擬機(jī)在虛擬xp上運(yùn)行吧!
SoftICE是Compuware NuMega公司的產(chǎn)品,是目前公認(rèn)最好的系統(tǒng)級(jí)調(diào)試工具!兼容性和穩(wěn)定性極好,可在源代碼級(jí)調(diào)試各種應(yīng)用程序和設(shè)備驅(qū)動(dòng)程序,也可使用TCP/IP連接進(jìn)行遠(yuǎn)程調(diào)試。
ICE的含義:
ICE(In Circuit Emulator)即實(shí)體電路模擬器,是用來跟蹤軟件執(zhí)行動(dòng)作細(xì)節(jié)的一個(gè)模擬CPU的電子設(shè)備。當(dāng)然這種設(shè)備價(jià)格昂貴,不是常人所能擁有的。NuMega公司推出的Soft "ICE",意思是靠軟件實(shí)現(xiàn)ICE的功能。
SoftICE系列:
1、通過因特網(wǎng)進(jìn)行遠(yuǎn)程調(diào)試
2、提供單機(jī)的、源程序級(jí)的調(diào)試能力
3、支持Windows NT、Windows 95、 Windows 98和Windows 2000,給那些正在為任何視窗平臺(tái)編制設(shè)備驅(qū)動(dòng)程序和系統(tǒng)部件的公司提供強(qiáng)大可靠的調(diào)試手段
4、是一種功能強(qiáng)大的調(diào)試軟件。為了讓你最大限度的認(rèn)識(shí)到你的程序的運(yùn)行情況,能一直調(diào)試到視窗系統(tǒng)的內(nèi)核。
初級(jí)使用:
由于某些原因,需要用到SoftICE調(diào)試工具,期間經(jīng)歷了不少痛苦的歷程.打算寫出來,也算做個(gè)記錄吧.
我下載的Driver Studio 3.2.如果藍(lán)屏或者你的鼠標(biāo)會(huì)動(dòng)不了,鍵盤卡住不動(dòng),請(qǐng)下載補(bǔ)丁.還有一種情況比較特殊我遇到的:鍵盤是PS/2 接口,而鼠標(biāo)是USB接口,這時(shí)候似乎沒其他的辦法,只有花錢讓接口統(tǒng)一了.
SoftICE第一次調(diào)試程序
當(dāng)初第一次調(diào)試程序時(shí),網(wǎng)上查了無數(shù)的資料,還是不得其解. 后來還是看USING SOFTICE.PDF看來的.
1.先打開softice,后打開symbol loader 軟件.默認(rèn)路徑如下:
[開始]->[所有程序]->[compuware DriverStudio]->[debug]->[start softice]
[開始]->[所有程序]->[compuware DriverStudio]->[debug]->[symbol loader]
2.在Symbol loader中 [FILE]->[OPEN].打開生成的文件.一般是.exe或者.dll吧.
3.然后[Module]->[Translate]這步是為了把.pdb軟件轉(zhuǎn)換成.nms文件..nms文件是
SoftICE特有的調(diào)試文件.
4.最后[Module]->[Load]把.nms加載.
這時(shí)候SoftICE會(huì)自動(dòng)攔截到main入口點(diǎn).
那如何確定你確實(shí)加載了symbol呢?用File指令.如下:
File *
然后SoftICE會(huì)列出已經(jīng)加載的符號(hào)表.如果沒加載.請(qǐng)重復(fù)Symbol loader[2-4]操作.
這時(shí)候你是不是很開心了呢?哈哈,別高興太早了.
你在SoftICE命令窗口中輸入
bpx ntdll!ZwRaiseException
會(huì)出現(xiàn)
(Symbol not defined ).
是不是崩潰 了?如果不能下內(nèi)核API,我用SoftICE干什么!OD多好使啊.雖然OD用得不多.
不過喜歡OD可以邊聽歌,邊干活.
其實(shí)解決辦法很簡單.
在C:\WINDOWS\system32\drivers目錄下修改Winice.dat.(即去掉分號(hào)).
修改后文件如下:
NMI=ON
VERBOSE=ON
HST=10240
DRAWSIZE=10240
INIT="X; width 160;lines 70;set font 2;wl;wt;wd;ws;"
SYM=512
DISASSEMBLYHINTS=ON
LOWERCASE=OFF
CODEMODE=OFF
SELECTORS=ON
CHECKSTRINGS=ON
AUTOCONNECT=OFF
NETSUPPORT=OFF
HOSTNAME=MICROSOF-47742B
F1="h;"
F2="^wr;"
F3="^src;"
F4="^rs;"
F5="^x;"
F6="^ec;"
F7="^here;"
F8="^t;"
F9="^bpx;"
F10="^p;"
F11="^G *SS:ESP;"
F12="^p ret;"
SF3="^format;"
AF1="^wr;"
AF2="^wd;"
AF3="^wc;"
AF4="^ww;"
AF5="CLS;"
AF11="^dd dataaddr->0;"
AF12="^dd dataaddr->4;"
CF1="altscr off; lines 60; wc 32; wd 8;"
CF2="^wr;^wd;^wc;"
MACROS=32
MOUSE=ON
ECHOKEYS=OFF
NOLEDS=OFF
NOPAGE=OFF
PENTIUM=ON
THREADP=ON
SIWVIDRANGE=ON
MENU=Copy , NMPD_COPY ,0
MENU=Paste , NMPD_PASTE ,0
MENU=Copy&Paste , NMPD_COPYANDPASTE ,0
MENU=Display , NMPD_DISPLAY ,0
MENU=Un-Assemble , NMPD_UNASSEMBLE ,0
MENU=What , NMPD_WHAT ,0
MENU=Prev , NMPD_PREV ,0
MENU=Reip , r eip %cp% ,0
MENU=Add Watch , watch %cp% ,0
MENU=Break On Text, bpx %cp% ,0
MENU=Name , name %cp% ,4
; WINICE.DAT
; (SystemRoot\System32\Drivers\WINICE.DAT)
; for use with SoftICE for Windows NT (versions 3.0 and greater)
;
; ***** Examples of export symbols that can be included *****
; Change the path to the appropriate drive and directory
(下面的分號(hào)全去了,;代表注釋)
EXP=C:\WINDOWS\System32\hal.dll
EXP=C:\WINDOWS\System32\ntoskrnl.exe
EXP=C:\WINDOWS\System32\ntdll.dll
EXP=C:\WINDOWS\System32\kernel32.dll
EXP=C:\WINDOWS\System32\user32.dll
EXP=C:\WINDOWS\System32\csrsrv.dll
EXP=C:\WINDOWS\System32\basesrv.dll
EXP=C:\WINDOWS\System32\winsrv.dll
更新說明:
1、SI432 的原配 cws3xw32.dll (3.4.12.0) *已修改*
2、SI432 中 cws3xw32.dll 需要的 softkey.dll *添加*
3、去掉了多余的 Vsetup.ini 文件。
*備注:解決了之前的 softkey.dll 不能定位的問題。因在 WINDOWS 目錄里面有一個(gè)與 SI softice.dll 同名的文件,在提取時(shí)出了錯(cuò)而導(dǎo)致 loader32.exe 異!,F(xiàn)在這個(gè) SI432 Lite 是 100% 提取自 DS321 的了。