SOFTICE是一个非常经典的用于调试软件的工具。我经常用它来调试跟踪程序,SoftICE(系统级调试工具)目前公认最好的系统级调试工具!win7肯定不能用SoftICE,这东西早就断代了(自从混蛋微软打垮Compuware公司之后)。如果一定要用,下一个vmware虚拟机在虚拟xp上运行吧!
SoftICE是Compuware NuMega公司的产品,是目前公认最好的系统级调试工具!兼容性和稳定性极好,可在源代码级调试各种应用程序和设备驱动程序,也可使用TCP/IP连接进行远程调试。
ICE的含义:
ICE(In Circuit Emulator)即实体电路模拟器,是用来跟踪软件执行动作细节的一个模拟CPU的电子设备。当然这种设备价格昂贵,不是常人所能拥有的。NuMega公司推出的Soft "ICE",意思是靠软件实现ICE的功能。
SoftICE系列:
1、通过因特网进行远程调试
2、提供单机的、源程序级的调试能力
3、支持Windows NT、Windows 95、 Windows 98和Windows 2000,给那些正在为任何视窗平台编制设备驱动程序和系统部件的公司提供强大可靠的调试手段
4、是一种功能强大的调试软件。为了让你最大限度的认识到你的程序的运行情况,能一直调试到视窗系统的内核。
初级使用:
由于某些原因,需要用到SoftICE调试工具,期间经历了不少痛苦的历程.打算写出来,也算做个记录吧.
我下载的Driver Studio 3.2.如果蓝屏或者你的鼠标会动不了,键盘卡住不动,请下载补丁.还有一种情况比较特殊我遇到的:键盘是PS/2 接口,而鼠标是USB接口,这时候似乎没其他的办法,只有花钱让接口统一了.
SoftICE第一次调试程序
当初第一次调试程序时,网上查了无数的资料,还是不得其解. 后来还是看USING SOFTICE.PDF看来的.
1.先打开softice,后打开symbol loader 软件.默认路径如下:
[开始]->[所有程序]->[compuware DriverStudio]->[debug]->[start softice]
[开始]->[所有程序]->[compuware DriverStudio]->[debug]->[symbol loader]
2.在Symbol loader中 [FILE]->[OPEN].打开生成的文件.一般是.exe或者.dll吧.
3.然后[Module]->[Translate]这步是为了把.pdb软件转换成.nms文件..nms文件是
SoftICE特有的调试文件.
4.最后[Module]->[Load]把.nms加载.
这时候SoftICE会自动拦截到main入口点.
那如何确定你确实加载了symbol呢?用File指令.如下:
File *
然后SoftICE会列出已经加载的符号表.如果没加载.请重复Symbol loader[2-4]操作.
这时候你是不是很开心了呢?哈哈,别高兴太早了.
你在SoftICE命令窗口中输入
bpx ntdll!ZwRaiseException
会出现
(Symbol not defined ).
是不是崩溃 了?如果不能下内核API,我用SoftICE干什么!OD多好使啊.虽然OD用得不多.
不过喜欢OD可以边听歌,边干活.
其实解决办法很简单.
在C:\WINDOWS\system32\drivers目录下修改Winice.dat.(即去掉分号).
修改后文件如下:
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
(下面的分号全去了,;代表注释)
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 目录里面有一个与 SI softice.dll 同名的文件,在提取时出了错而导致 loader32.exe 异常。现在这个 SI432 Lite 是 100% 提取自 DS321 的了。