由于某些原因,需要用到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
希望能给入门的一些帮助.也不枉我半夜写这篇文章.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课