使用SoftICE调试程序入门

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
SoftICE是Numega公司出品的强大的程序调试工具,它可以运行dos,win3.1,win9x,winme,winnt,win2k等多种操作系统,是跟踪调试程序的有力的工具。这篇文章是我在自己使用SoftICE的过程中总结的关于SoftICE软件的安装、使用的方法与心得。 
  注意:以下讲述的是SoftICE version 4.05 for win2k,其他版本和它大同小异,如果你的SoftICE与我的不一样,请查阅SoftICE的在线帮助。 
1. SoftICE安装及设置 
  SoftICE的安装并没有什么特殊的地方,与一般的软件一样,运行setup进行安装。安装过程中会出现几个配置SoftICE的对话框,它们都可以在以后通过开始菜单中相应的程序重新配置,所以后面只说明通过程序配置的步骤,其实与安装时的配置对话框是一样的。 SoftICE安装好后将在"开始"菜单中建立一个"Softice"菜单(图一),中间有许多的程序,下面简要介绍他们的功能。 

『一』Display Adapter Setup 显卡配置(图二) 
   SoftICE现在支持许多的显卡,如果你好运的话,安装程序将会自动选择合适的显卡让你测试,选择TEST是必要的,以了解你现在选择的显卡驱程是否与你的显卡匹配,如果冒失地选择一个与你的显卡并不匹配的驱动程序,当你进入SoftICE调试状态时将会花屏。我推荐把Universal Vidoe Driver这一项选上,就象下图所示,这样SOFTICE 就会在一个窗口里弹出来,而不会切换到全屏(那样容易花屏,而且当你调试时显示器不断地在字符和图形两种模式下来回转换,对显示器不好。) 

『二』Mouse Setup 鼠标配置(图三) 
   鼠标配置也相当重要,SoftICE支持在它的调试窗口中使用鼠标,这对已经习惯于鼠标的我们来说当然相当方便。如图所示,有串行鼠标接口与PS/2鼠标接口等选择。 

『三』Startup Mode Setup SoftICE启动模式设置(图四) 
    SoftICE启动模式设置是选择SoftICE在什么时候启动,其中有四个选项: 

Boot: 在Windows启动之前加载SoftICE,这个选项非常强大,甚至可以让你跟踪Windows启动的代码,主要是用于跟踪调试等级与Windows核心一样的驱动程序,当然也可以调试所有的应用级程序。 
   System: 与Windows一起启动,适用于跟踪调试Windows应用程序。 
   Automatic: 自动启动,与Windows一起启动,适用于跟踪调试Windows应用程序。 
   Manual: 手工启动,运行开始->SoftICE->Start SoftICE才启动SoftICE,当然它不能调试内核驱动程序。 
   注意:一旦加载了SoftICE,只有重新启动计算机才可以"卸载"SoftICE。我建议如果你不是要调试内核驱动程序的话,最好选择Manual,如果你选择每次启动Widnows时都加载SoftICE,在你不调试时,就很浪费资源还有可能造成系统不稳定。 
   『四』Symbol Loader 符号加载器 
在你调试程序前必须要运行符号加载器。它的功能是通知SoftICE加载将要调试的程序,然后转换程序的调试符号表,使SoftICE能够在源码级上进行调试(这当然要求你编译的程序是调试编译即Debug Build的)。它的界面如(图五)所示。 

它主要有以下的操作命令: 
Open: 打开需要调试的程序,一般说有以下几种:用户级程序有*.exe , *.dll, *.ocx, *.vbx; 内核级程序有*.sys (win 2K/nt) , *.vxd, *.386, *.drv (win Me/9x)。 
Load: 将所打开的程序加载。 
Translate: 将源码转换为SoftICE识别的NMS符号文件。如果你在编译或汇编时指定了Debug Build(即调试编译),那么可执行程序中将包括函数输入输出符号表和源码路径等调试需要的信息,所以你不需要特意指定你的源码路径,SoftICE能够找到它。 
Load Exports: 加载32位的输出动态文件,它包括驱动程序、win32应用程序、dll程序等。Load Exports在调试没有调试信息的dll时格外有用。 
SoftICE Initialization Setting: 初始化SoftICE设置。你可以在这里修改一些SoftICE预设的设置,象快捷键等。 
你可以使用快捷键在SoftICE中代替一些常用命令,以下为预设的快捷键: 
  F1 --- 显示帮助 
  F2 --- 打开/关闭寄存器窗口 
  F3 --- 切换当前源码的模式 
  F4 --- 回到Windows 
  F5 --- 执行 
  F6 --- 在命令窗口和源码窗口切换 
  F7 --- 执行到光标所在行 
  F8 --- 单步执行,如果调用过程,则跟踪进入进程 
  F9 --- 在光标所在行设中断点 
  F10 --- 单步执行,如果调用过程,则跳过过程 
  F11 --- 执行到SS:EIP 
  F12 --- 从当前的过程中返回 
   Shift-F3 --- 改变数据窗口内的数据的格式 
   Alt-F1 --- 打开或关闭寄存器窗口 
   Alt-F2 --- 打开或关闭数据窗口 
   Alt-F3 --- 打开或关闭代码窗口 
   Alt-F4 --- 打开或关闭监视窗口 
   Alt-F5 --- 清除命令窗口 
2. 使用softice调试程序 

下面是调试程序的一般步骤: 
   首先我们要确认是否根据需要调试的程序(应用程序还是内核程序)而设置好了SoftICE的正确的启动模式。如果不是则需要运行SoftICE->StartUp Mode Setup重新设置。具体的方法见前。 
   使用Ctrl+D组合键调出SoftICE窗口,确认已经加载了SoftICE后,我们可以进行需要调试程序的加载。 
a 打开Soft-ICE->Symbol Loader工具。 
b 用"File" 菜单中的"Open Module ..."菜单项打开需要调试的可执行文件。 
c 用"Module"菜单中的"Load"菜单项装载调试符号文件。如果目的文件并没有调试信息的话,Symbol Loader会警告你,只能够进行汇编级调试,而不可以进行源码级调试。 
d 用"Module"菜单中的"Translate"菜单项将需要调试的文件转换成Soft-ICE的 NMS调试符号文件。 
e 现在调试文件的加载工作已经完成,可以按Ctrl+D组合键激活SoftICE,加入断点,进行调试了。 
f 窗口一开始是有点小,所以我们可以先调整窗口,使用 
lines X 命令可以将调试窗口设置为X行 
width X 命令可以将调试窗口设置为X列 
g 使用file命令显示目前符号表中的源码文件,进而使用file xxx.c在源码窗口中打开xxx.c源码文件。 
h 使用bpx xxx来设置断点。xxx为xxx.c文件中存在的函数。 
i F5退出SoftICE窗口,执行需要调试的程序,程序执行到我们设置的断点处将自动进入SoftICE窗口,进行跟踪操作,这时我们就可以使用SoftICE中的各种命令来跟踪程序的流程。 
   在这里我将对SoftICE一些常用命令进行说明。由于SoftICE中有在线的参数提示,所以我在这里就没有提及各命令的参数。 
   (一)窗口控制命令 
如果你能够使用鼠标的话,很方便就可以改变窗口的大小。 
LINES 改变SoftICE窗口的显示行数 
WIDTH 改变SoftICE窗口的显示列数 
WL 打开或关闭局部变量窗口;设置局部变量窗口的大小 
WR 打开或关闭寄存器窗口 
WW 打开或关闭监视窗口;或改变监视窗口的大小 
WD 打开或关闭数据窗口;或改变数据窗口大小 
WC 打开或关闭代码窗口;或改变代码窗口大小 
CLS 清除命令窗口中的字符 
DATA 显示另一个数据窗口 
   (二)数据/代码监视命令 
以下的命令是用来监视目前程序中的数据或变量的。 
formAT 改变数据窗口的显示格式 
DEX 在数据窗口中显示(或赋予)某个表达式 
WATCH 加入一个变量到监视窗口中 
LOCALS 从当前栈中列出局部变量 
STACK 显示某个调用栈 
   (三)Windows系统信息命令 
在调试程序的时候当然不能脱离调试的环境,所以就有了以下极其有用的命令用来显示目前Windows系统的内部状态。这可是我所见过的最为详细的Windows系统信息。 
GDT 显示全局描述符表 
CLASS 显示WINDOWS的类的信息 
CPU 显示寄存器内容 
HEAP 显示Windows全局堆 
HWND 显示窗口句柄的信息 
IDT 显示中断描述符表 
LDT 显示局部描述符表 
LHEAP 显示Windows 局部堆 
MOD 显示Windows模块列表. 
PAGE 显示页表信息 
PCI 显示系统中每个PCI设备的情况. 
PROC 显示系统中所有进程的简要信息 
QUERY 显示某个进程的虚拟地址映象 
TASK 显示Windows任务列表 
THREAD 显示线程信息 
PHYS 显示某个物理地址对应的所有虚拟地址. 
   (四)跟踪调试控制命令 
这里的大部分命令都是原大名鼎鼎的Debug也有的,当然SoftICE中已经将他们的功能大大加强了。 
G 执行到某一地址 
X 从SoftICE窗口中退出 
HERE 运行到当前光标所在行 
P 单步执行程序. 在汇编模式中,当遇到 CALL,INT,LOOP,REP指令时,P将不跟踪进去,直到这些指令执行完毕,控制才返回SoftICE 
T 单步跟踪 
R 显示或更改寄存器的内容 
S 在内存中搜寻特定数据 
A 写入汇编代码 
C 比较内存中两块区域的内容 
D 用最后一次指定的形式显示内存 
   DB 以字节的形式显示内存 
   DW 以字的形式显示内存 
   DD 以双字的形式显示内存 
E 用最后一次指定的形式编辑内存 
   EB 以字节的形式编辑内存 
   EW 以字的形式编辑内存 
   ED 以双字的形式编辑内存 
F 填充某一块内存区域 
U 显示反汇编后的汇编码 
   (五)断点命令 
  中断是SoftICE中重要的功能。中断点的触发可以由内存某地址的读取、内存范围的存取、程序的执行及端口的存取来达成。SoftICE 赋与每个中断点一个一位的 16 进制号码( 0 - F ) 。这个中断点号码是当你对中断点做启动、删除、中止、编辑等动作时使用。SoftICE 的所有中断点在启动后不会自动消失。你必需以 BC 或 BD 命令来消除或关闭它。SoftICE 一次最多可以处理 16 个中断点。同种类型的中断点最多可以有 10 个。但内存地址的中断点 ( BPM ) 因 80386 处理器之寄存器的缘故,最多只能设 4 个。设置中断点时可以设个计数参数。计数参数是中断点真正触发作用前被忽略的次数。 
具体指令: 
   BPM BPMB BPMW BPMD --- 在内存地址被存取或执行时触发中断 
   BPR --- 对内存地址范围设置中断点 
   BPIO --- 对 I/O 端口存取时触发中断 
   BPINT --- 呼叫中断时触发中断 
BMSG 在WIN95的消息上设置断点 
  BPX --- 设置 / 清除 执行中断点 
CSIP (16位程序才有用) 为所有断点设定一个界限(CS:EIP在其内)(16位程序) 
   BPAND --- 等待复合中断点的发生 
   BD --- 中止中断点 
   BE --- 启动中断点 
   BL --- 列出中断点 
   BPE --- 编辑中断点 
   BPT --- 把中断点当样板 
   BC --- 清除中断点 
   (六)内存/端口存取命令 
SoftICE甚至提供了在Windows下直接存取物理内存的能力,当然武器在你手里,你得知道应该怎么用,否则就是号称永不死机的Windows 2000也会轻松崩溃。 
I 从输入/输出(I/O)端口读入数据 
O 向I/O端口输出数据. 
PEEK 从物理内存中读数据 
POKE 向物理内存写数据. 
ADDR 在SoftICE中显示或是切换内存区域 
符号/源码命令 
以下命令是对SoftICE中的源码及符号表进行操作的。SoftICE可以一次将多个符号表装入内存。SoftICE支持16,32位WINDOWS程序,DLLs,VxDs,Sys内核驱动程序.但每一时刻只能从一个符号表中取得符号,你若是要用某个符号表中的符号,必须先用TABLE命令选中。FILE则是用来选择当前显示的源文件。源文件可以有三种不同的格式显示:源程序、反汇编代码及两者混和。使用SRC可以使它在这三种不同格式中切换。 
FILE 显示或切换当前源文件 
TABLE 显示或切换当前符号表 
SRC 在源程序,反汇编代码,两者混和 之间切换显示. 
SS 在源程序文件中查找字符串 
EXP 显示DLL中的出口函数 
SYM 显示或设置符号 
SYMLOC 重定位符号基址 
   (六)其他操作命令 
? 计算一个表达式的值.并以十六进制,十进制,带符号的十进制显示结果 
. 当代码窗口可见时, 此命令使得当前的CS:EIP所指向的指令可见, 并且高亮显示 
EXIT 强行退出DOS程序或WINDOWS程序

[ Last edited by 小草大树 on 2004-10-14 at 11:00 AM ]


 

发表评论] [转寄该文] [关闭窗口]  [上一主题]  [下一主题
此文章相关评论:
该文章有13个相关评论如下:(点这儿论坛方式查看)

小草大树 发表于:2004/10/12 23:55

[引用该文]


最近刚装了SoftICE v4.27,确实是个好东西,我装的是精简版,是从SoftICE Driver Suite v2.7 提取出来的,安装好以后只有不到6M的空间。

4.27的安装配置界面和以往版本的区别比较大,这个帖子的图片也失效了,所以我再抓个图贴出来,感兴趣的朋友可以自己装一个试试。


下图对应上面的『三』

[ Last edited by 小草大树 on 2004-10-12 at 11:56 PM ]

其他附件列表:

 

 


 
 ↑顶部
小草大树 发表于:2004/10/12 23:58

[引用该文]


远程访问设置

其他附件列表:

 

 


 
 ↑顶部
小草大树 发表于:2004/10/13 00:07

[引用该文]


一般设置,

initialization-----初始化命令字符串,先用默认吧
video momery size是显卡显存,单位KB,我的是64M,所以添65536
Display diagnostic messages-------显示诊断信息
Trap NMI-----------支持非屏蔽中断
Lowercase disassembly-----小写反汇编(关闭)

其他附件列表:

 

 


 
 ↑顶部
小草大树 发表于:2004/10/13 00:11

[引用该文]


exports选项,配置SoftICE加载的动态链接库

Add---添加需要加载的Dll文件
remove--删除已经加载的DLL

其他附件列表:

 

 


 
 ↑顶部
小草大树 发表于:2004/10/13 00:19

[引用该文]


Serial Debugging---使用串口进行远程连接的设置
Network Debugging

Keyboard Mapping----可以修改和恢复SoftICE的预定义功能组合键的作用

其他附件列表:

 

 


 
 ↑顶部
小草大树 发表于:2004/10/13 00:27

[引用该文]


Macro Definitions-----宏定义,可以指定宏命令的最大数目,32-256

troubleshooting-----故障诊断(处理?)

=================================

Mouse------鼠标配置,现在常见的PS/2或USB滚轮鼠标就选第三项,而且Enhanced  Mouse选中。

其他附件列表:

 

 


 
 ↑顶部
小草大树 发表于:2004/10/13 00:33

[引用该文]


Video---------显卡配置,精简版比较简单,没的选,默认的standard VGA就可以了。最上面的选Universal Video Driver,这样SoftICE弹出后是窗口,否则选了弹出的是全屏DOS窗口,操作不方便,兼容性也不好。

设置好了后,点一下TEST按钮

其他附件列表:

 

 


 
 ↑顶部
小草大树 发表于:2004/10/13 00:34

[引用该文]


出现这个画面说明显卡测试正常,点“确定”

最后点ok按钮

其他附件列表:

 

 


 
 ↑顶部
小草大树 发表于:2004/10/13 00:40

[引用该文]


另外要注意的是:
    英文和中文的windows 2000操作系统打了sp4以后,Driver Studio 2.7在启动siwvid的时候机器就会蓝屏。DS v2.7对 Win2K SP4有个安装补丁,因为我们只装了SoftICE,所以没必要打全部补丁,只要打一个补丁就可以了,把这个补丁(官方的)拷贝到system32/drivers 目录,覆盖原文件即可

其他附件列表:

附件内容
名称:numega官方补丁.rar类别:rar
大小:27.89KB日期:2004/10/13 00:40
立即下载  [62次]

 

 


 
 ↑顶部
小草大树 发表于:2004/10/13 00:48

[引用该文]


最后,Numega 公司为windows2000 下的 SoftICE 设计了一个驱动程序:SoftICE Symbol Drive (SIWSYM),当 SoftICE 启动时为其提供文件映像表地址, SoftICE 根据这个表寻找所需的启动文件,从而能使其正常加载到系统中。驱动程序 SIWSYM 被放置在 ICEPACK.EXE 文件中,运行这个程序就可以自动完成必要的配置工作。

要注意的是:每次改变 SoftICE 的配置(直接编辑 WINICE.DAT 或通过 LOADER32 改变配置)后都要重新运行 ICEPACK.EXE ,这样才能保证新的修改起作用!


Using ICEPACK.EXE

The files are added to the SIWSYM driver by a command line 
utility called ICEPACK.EXE.  This utility will automatically load 
several files that SoftICE, as well as WINICE.DAT and any files 
that are referenced by WINICE.DAT (in LOAD= and EXP= lines).  
Be careful in how much space your symbols files require as that
much space (in RAM) is allocated to the INIT segment of the 
SIWSYM driver.  If your symbol files take up too much space, 
the SIWSYM driver will not load and your symbols and sources 
will not be available.

DON'T FORGET TO RUN ICEPACK.EXE!

Remember that any time you change one of the files referenced by 
WINICE.DAT, you need to re-run ICEPACK.EXE to update the 
SIWSYM.SYS file.  The same holds true if you modify WINICE.DAT 
itself (either manually, or via LOADER32).  If you forget to 
rerun ICEPACK.EXE, you will be debugging with out-of-date 
settings, symbols and sources!
51单片机的SoftICE调试 SST公司51单片机的SoftICE调试 阅读详情

相关推荐

Win32程序调试利器:SoftIce V4.32

SoftIce,作为软件行业中的资深动态调试器之一,自20世纪90年代初期问世以来,一直是软件调试领域的重要工具。从最初的DOS版本,到后来支持Windows和UNIX系统,SoftIce经历了多个版本的迭代与优化。每个版本都带来了新的特性和改进,如更稳定的性能、更丰富的调试选项、以及更好的用户交互体验。随着技术的进步,SoftIce也逐步整合了更强大的符号分析和反汇编技术,为用户提供前所未有的调试能力。调试器与编译器在软件开发的生命周期中扮演着不可或缺的角色。

weixin_33608403的博客 818

SOFTICE教程及使用手册

SoftICE命令中文解说之一 命令: . 作用: 在代码窗口中定位当前指令 语法: . 用法: 当代码窗口可见时, .命令(点命令)使得当前的CS:EIP 所指向的指令可见, 并且高亮显示. 另外,此命令也把 SoftICE 从其他内存区域中切回原先弹出的内存区域. 详见后面的ADDR命令. 点评: 当你在代码窗口中上下浏览时,有可能走得很远, 那么 这时一个"." 命令会让你在下一瞬间回到SOFTICE当前 所在的CS:EIP处,再也用不着按PGUP,PGDOWN很多次了! 命令: ? 作用: 计算一个表达式的值 语法: ? 表达式 用法: 计算一个表达式的值.并以十六进制,十进制,带符号的 十进制(<0时有)和ASCII值多种形式显示计算结果. 点评: 一个非常高级的计算器, 诸如46578*1999+ESI 之类的 计算不会再让你烦恼,另外由于可以显示ASCII,所以可 以很方便地在各种数制之间察看.

SOFTICE使用说明中文版

SOFTICE使用说明中文版,对wdm编程很有用。-SOFTICE use the Chinese version of `programming useful.

Softice入门

Softice的界面和操作都比较简单,只要熟悉一些基本的命令之后就可以开始利用它为我们服务了。有一点要提醒大家:SofticeWINDOWS启动之前装入系统中,然后将WINDOWS载入(因为要控制、拦截WINDOWS的动作),所以它工作于系统的0级(即特权级)。当在WINDOWS下用热键呼出Softice后,它就控制了整个系统,此时任何其它的程序(包括系统时钟)都将处于停止状态。  本文只是

我的程序世界 1万+

SOFTICE 使用说明 (断点)

作者:kill      第 四 章 如何使用中断点指令 §4.1 序言 Soft-ICE 具有以往只有硬体除错器才具有的中断点能力。因为 80386 晶片的 威力和弹性,使我们不需要额外的硬体设备就能有更强大的中断点能力。 中断点的触发可以由记忆体某位址的读取、记忆体范围的读取、程式的执行及 埠的存取来达成。Soft-ICE 赋与每个中断点一个一位的 16 进位号码( 0 - F ) 。这个中断

小虎的空间 906

SoftICE使用说明(六)

   §5.5 公用指令 指令: A --- 组译程式码 S --- 搜寻资料 F --- 将资料填入记忆体 M --- 搬移资料 C --- 比较两记忆区块 A --- 组译程式码 语法: A [address] 解说: Soft-ICE 的组译器允许你把程式码直接组译进记忆体中。这个组译器支援基 本的 8086 程式码及 80186 、80286 真实定址模式的扩充。但是运算辅助器及 8038

Keep Go…… 972

使用VMWare+SoftICE的方法总结

使用VMWare+SoftICE的方法总结: 1)安装VMWare和操作系统Windows2000 Professional。具体步骤省略... 2)在虚拟的操作系统Windows2000 Professional内安装SoftICE。我这里安装的是DriverStudio 2.7,  其中附带有SoftICE软件。 3)通过SoftICE的设置程序Setting对一些不合适的缺省设置进行修改。比

ljtt的专栏 3448

SOFTICE使用

由于某些原因,需要用到SoftICE调试工具,期间经历了不少痛苦的历程.打算写出来,也算做个记录吧.我下载的Driver Studio 3.2.如果蓝屏或者你的鼠标会动不了,键盘卡住不动,请下载补丁.还有一种情况比较特殊我遇到的:键盘是PS/2 接口,而鼠标是USB接口,这时候似乎没其他的办法,只有花钱让接口统一了.SoftICE第一次调试程序当初第一次调试程序时,网上查了无数的资料,还是不得其解

zhangmiaoping23的专栏 3291

怎样用softICE调试程序

前 言 ~~~~~~ 由於保护越来越强悍, 使得合法买软体的我们, 还要受到各种千奇百怪的折磨, 弟深深觉得受到侮辱。(您呢 ?) 所以小弟和朋友们不遗馀力的寻找各种好的破解工具, 并将之推荐给诸位。软体公司应当知道, 将盗版的成本转嫁给合法的使用者,

dot99的专栏 2406

softice2.8 dos下的调试利器

softice2.8 dos下的调试利器

softice 使用

softice所有人都希望能够熟练掌握的资源,,我们只有在日积月累中才能成为真真的高手

SoftICE V2.80 For Dos

SoftICE V2.80 For Dos

SoftICE使用

由于某些原因,需要用到SoftICE调试工具,期间经历了不少痛苦的历程.打算写出来,也算做个记录吧.我下载的Driver Studio 3.2.如果蓝屏或者你的鼠标会动不了,键盘卡住不动,请下载补丁.还有一种情况比较特殊我遇到的:键盘是PS/2 接口,而鼠标是USB接口,这时候似乎没其他的办法,只有花钱让接口统一了.SoftICE第一次调试程序当初第一次调试程序时,网上查了无数的资料,还是不得其解

zhuyonge的专栏 556

【驱动调试SoftICE 使用说明

【原创】SoftICE使用说明(图片)  软件:DriverStudio3.2SoftIce405     XP补丁 1、DriverStudio3.2安装完成,将SoftIce405里面的补丁 拷贝覆盖掉 windows/system32/drivers 下面的文件; 2、运行SoftICE:  菜单【开始】—【所有程序】—【Compuware DriverS

ding_net的专栏 837

SoftICE 如何下断点

zhangmiaoping23的专栏 757
上一篇: 覆盖地址HOOK API
下一篇: 出租司机给我上的MBA课
iiprogram
博客等级 码龄25年 1066粉丝 1515原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值