(转载)SoftIce的安装、配置以及一些基本操作

SoftIce的安装、配置以及一些基本操作

From: http://www.77169.org/Article/Class1/Class14/200502/14899.html

SoftIce的安装

 1、SOFTICE目前最新版本是4.01,运行setup.exe开始安装,出现的第一对话框是“欢迎”并说明NuMega公司的版权。点下步出现输入姓名、公司、序列号对话框,此时按要求输入信息。接着出现选择安装目录,Windows 95/98用户必须注意长文件名的问题,为了减少不必要的麻烦最好是建一简单的目录如c:/softice;而WINDOWS NT没有这问题。

2、较为麻烦的一对话框是显卡配制('Select Display Adapter' )

SoftICE (version 4)现在支持相当多的显卡列表,如果你幸运的话,安装程序自动选择合适的显卡让你测试,选择TEST是必要的,以了解你的显卡状况,从而可以进入下一窗口。 我们推荐你设置显卡为Standard VGA,并把Universal Vidoe Driver这一项选上,这样SOFTICE 就会在一个窗口里弹出来,而不会切换到全屏(那样容易花屏,且当你调试时显示器不断地在字符和图形两种模式下来回转换,对显示器不利。)

3、如果你运行NT安装,下一对话框是:当你启动windows时如何启动SOFTICE,有Boot/System/Automatic or Manual选项。接着是鼠标的配制,按你的鼠标类型选择正确的选项。在Windows 95/98里还将询问你autoexec.bat修改,这里同NT安装一样,根据你的需要设置autoexec.bat,其默认是每次启动windows时通过自动批处理文件autoexec.bat启动SOFTICE,本人建议不要每次启动widnows时都装载SOFTICE,如果你不调试时,就很浪费资源还有可能造成系统不稳定,此时你可将autoexec.bat改名(如s.bat),需要用SOFTICE时,启动windows到纯DOS环境下,运行s.bat启动SOFTICE。

配制SOFTICE

1、 配制SOFTICE在Windows 95/98 & NT下方法不同。在NT下,配制SOFTICE是用SOFTICE Loader(从你的开始菜单选),选择Edit/SoftICE,一般的选项是初始化,这里你可参考手册了解不同的开关选项的详细描述。如:

CODE ON; FAULTS OFF; I3HERE OFF; WD 3; WF; X;

其它两个重要的选项是Symbols & Exports。如果你拥有自己系统的SDK(软件开发工具包),你可用SOFTICE装载并调试它。那些没有SDK应该用exports选项从%WINNT%/System32 目录下增加下面的DLL文件。

advapi32.dll, comctl32.dll, comdlg32.dll, gdi32.dll, kernel32.dll, msvbvm(50/60).dll (如果需要), msvcrt.dll (如果需要), ole32.dll, oleaut32.dll, shell32.dll, user32.dll, version.dll.

2、在Windows 9x下 SoftICE配制是通过文件winice.dat。Soft-ICE 在启动的时候通过它装入一些 DLL/EXE 的函数名信息 , 你可在SOFTICE安装目录下发现它,可用任何文本编辑软件打开它(如记事本)。如我的winice.dat(部分):


--------------------------------------------------------------------------------
;注意分号后是描述语言,不被执行。
PENTIUM=ON
NMI=ON
ECHOKEYS=OFF
NOLEDS=OFF
NOPAGE=OFF
SIWVIDRANGE=ON
THREADP=ON
LOWERCASE=OFF
WDMEXPORTS=OFF
MONITOR=0

PHYSMB=32
SYM=1024
HST=256
TRA=8
MACROS=32
DRAWSIZE=2048

INIT=" WD 2; WC 14; FAULTS OFF; IXHERE OFF; IYHERE OFF; set font 2;lines 40;x;" ;注意这一行

F1="h;"
F2="^wr;"
F3="PAGEIN B ProcDump32 - Dumper Server;";脱壳用
F4="^rs;"
F5="^x;"
F6="^ec;"
F7="^here;"
F8="^t;"
F9="^bpx;"
F10="^p;"
F11="^G @SS:ESP;"
F12="^p ret;"
SF3="^format;"
CF8="^XT;"
CF9="TRACE OFF;"
CF10="^XP;"
CF11="SHOW B;"
CF12="TRACE B;"
AF1="^wr;"
AF2="^wd;"
AF3="^S 0 L FFFFFFFF 8B,CA,F3,A6,74,01,9F,92,8D,5E,08;"; —————————————VB3        
AF4="^s 0 l ffffffff 56,57,8B,7C,24,10,8B,74,24,0C,8B,4C,24,14,33,C0,F3,66,A7;" ;--VB4
AF5="^s 0 l ffffffff FF,75,E0,E8,85,EF,FF,FF,DC,1D,28,10,40,00,DF,E0,9E,75,03;" ;--VB5
                             
AF8="^XT R;"
AF11="^dd dataaddr->0;"
AF12="^dd dataaddr->4;"
CF1="altscr off; lines 60; wc 32; wd 8;"
CF2="^wr;^wd;^wc;"

; ***** Examples of sym files that can be included if you have the SDK *****
; Change the path to the appropriate drive and directory
;LOAD=c:/windows/system/user.exe
;LOAD=c:/windows/system/gdi.exe
;LOAD=c:/windows/system/krnl386.exe
;LOAD=c:/windows/system/mmsystem.dll
;LOAD=c:/windows/system/win386.exe

; Exports - change the path to the appropriate drive and directory

EXP=c:/windows/system/advapi32.dll ;这四行前不要加分号,否则不被装载,SOFTICE可能什么也拦不到 :
EXP=c:/windows/system/kernel32.dll
EXP=c:/windows/system/user32.dll
exp=c:/windows/system/gdi32.dll
exp=c:/windows/system/comctl32.dll ;


; 如你要对付VB程序,下面的VB运行库将要装载,SOFTICE默认值是没有这几行,你需手动加上。

;EXP=c:/windows/system/msvbvm60.dll    ; Visual Basic 6 具体参考第十五课VB破解
EXP=c:/windows/system/msvbvm50.dll    ; Visual Basic 5 注意在这五个DLL中最好不要同时装载2个以上
; EXP=c:/windows/system/vb40032.dll     ; Visual Basic 4(32-bit)
; EXP=c:/windows/system/vb40016.dll    ; Visual Basic 4(16-bit)较少见
; EXP=c:/windows/system/vbrun300.dll    ;Visual Basic 3


;EXP=c:/windows/system/vga.drv;
;EXP=c:/windows/system/vga.3gr
;EXP=c:/windows/system/sound.drv
;EXP=c:/windows/system/mouse.drv
;EXP=c:/windows/system/netware.drv
;EXP=c:/windows/system/system.drv
;EXP=c:/windows/system/keyboard.drv
;EXP=c:/windows/system/toolhelp.dll
;EXP=c:/windows/system/shell.dll
;EXP=c:/windows/system/commdlg.dll
;EXP=c:/windows/system/olesvr.dll
;EXP=c:/windows/system/olecli.dll
;EXP=c:/windows/system/mmsystem.dll
;EXP=c:/windows/system/winoldap.mod
;EXP=c:/windows/progman.exe
;EXP=c:/windows/drwatson.exe
; ***** Examples of export symbols that can be included for Windows 95 *****
; Change the path to the appropriate drive and directory
EXP=c:/windows/system/kernel32.dll
EXP=c:/windows/system/user32.dll
EXP=c:/windows/system/gdi32.dll
EXP=c:/windows/system/comdlg32.dll
EXP=c:/windows/system/shell32.dll
EXP=c:/windows/system/advapi32.dll
EXP=c:/windows/system/shell232.dll
EXP=c:/windows/system/comctl32.dll
;EXP=c:/windows/system/crtdll.dll
;EXP=c:/windows/system/version.dll
EXP=c:/windows/system/netlib32.dll
;EXP=c:/windows/system/msshrui.dll
EXP=c:/windows/system/msnet32.dll
EXP=c:/windows/system/mspwl32.dll
;EXP=c:/windows/system/mpr.dll


 

  然后在纯DOS下用S.BAT(或直接在SOFTICE目录下运行winice.exe)启动windows,咦!怎么没反应,没调试画面!哈哈,别着急,按CTRL+D看看,再按一下回到windows下,或按F5也能回来。此时调试窗口象windows开的一窗口,如是象全屏DOS一样窗口,那就是安装显卡时,参数没选好,此时按上文修正即可。下面的命令是调整SOFTICE窗口状态:

  set font n(n=1,2,3)设置字体;本人建议set font 2(在800*600条件下)
  set origin x,y(x,y)锁定窗口;
  lines n n=(25-128)设置显示行数;本人建议lines 40
  Ctrl+Alt+光标键 移动窗口;
  Ctrl+Alt+home 重设窗口位置原点(0,0);
  Ctrl+L 刷新。

如你以默认winice.dat启动SOFTICE,有可能需用WD打开数据窗口;用SET FONT 3 设置字体等重复工作。你可在winice.dat文件内设置自动执行命令操作,方法是在INIT这一行,各命令用分号分开,如:

INIT=" WD 2; WC 14; FAULTS OFF; IXHERE OFF; IYHERE OFF; set font 2;lines 40;x;"这样配制后界面类似TRW2000。(这些是在800*600条件下的情况,如你不是此分辩率可调整set font n;lines n)

SOFTICE基本命令及操作

 

 在这里我把SOFTICE一些常用命令列出,详细解说参考下一课的SOFTICE手册。

熟悉SOFTICE

  1Soft-ICE 的所有动作都发生在一个可以随时叫出的视窗中。Soft-ICE 的所有 指令都可以显示在一个小视窗中,但这个视窗可以扩大到整个萤幕。

  2 叫出视窗
    载入 Soft-ICE 後,你可以随时叫出视窗。一开始你只要按 Ctrl - D 即可叫 出 Soft-ICE 。

  3 由视窗中返回
    使用 X 这个指令或你叫出 Soft-ICE 的热键均可以回到原先的画面。你在 Soft-ICE 中设定的所有中断点此时开始启动。

  4 改变视窗大小
    你可以改变 Soft-ICE 视窗的宽度和高度。在独立模式中显示程式码时,改变 视窗大小的功能特别有用。视窗的高度为 8 到 25 行。

  按 Alt - ↑ 使视窗变高
   Alt - ↓ 使视窗变短
  

   使用 WIN 的指令以改变视窗的宽度。直接输入 WIN 而不 加参数会在下面两种模式中切换:
   WIDE 模式 --- 占满整个萤幕
   NARROW 模式 --- 46 个字元宽
有些指令像 D 、E 、R 、U ,使用 WIDE 模式以显示更多讯息时较为方便。

  5 移动视窗

  Soft-ICE 的视窗是可以移动且可以定位在萤幕上的任何地方。这功能在 NARROW 模式下特别有用。在你需要时移动视窗以便观看萤幕上被视窗挡到的地方。你可以 用下列按键控制萤幕的移动 :
   Ctrl - ↑ 向上移一行
   Ctrl - ↓ 向下移一行
   Ctrl - → 向右移一列
   Ctrl - ← 向左移一列 .

6 行编辑按键

  Soft-ICE 容易使用的行编辑器让你可以叫回并编辑上一个指令。它的功能类似 那些有名的 CED 行编辑器。以下按键可以帮助你在命令窗中编辑指令:
   → --- 游标右移
   ← --- 游标左移
   Ins --- 切换插入模式
   Del --- 消除现在字元
   Home --- 把游标移到一行的开头
   End --- 把游标移到一行的结尾
  ↑ --- 显示上一个指令
  ↓ --- 显示下一个指令
   Shift - ↑ --- 显示向上卷一行
   Shift - ↓ --- 显示向下卷一行
   Page Up --- 显示向上卷一页
   Page Down --- 显示向下卷一页
   BackSpace --- 消除前一个字元
   Esc --- 取消目前命令

当游标在资料窗或程式码窗时,另有特殊的按键,这在後面将会讨论到。

7 动作状态行

  在萤幕底部的状态行提供指令语法的辅助。

8 指令语法

  Soft-ICE 是个由指令操控的除错工具。要令 Soft-ICE 有动作,你要下指令给 它。指令可以因不同参数而有改变。

  所有的指令都是 1 到 6 个字元的字串且不分大小写。所有的参数都是字串或 运算式。

  运算式是典型的数字,也可以是数字和运算子的结合。所有的数字均以 16 进 位表示。一个位元组 (byte) 参数有 2 位,字组 (word) 参数有 4 位。双字组 (double word) 是两个由 : 分隔的字组参数。以下是一些参数的例子:

 12 --- 位元组参数
 10FF --- 字组参数
 E000:0100 --- 双字组参数

  暂存器在运算式中可以拿来当位元组或字组参数用。例如: U CS:IP -10 的指 令会从现在指令指标所指位址向前 10 byte 开始反组译。以下的暂存器名称可以用 在运算式中:

   AL 、AH 、AX 、BL 、BH 、BX 、CL 、CH 、CX 、DL 、DH 、DX 、DI 、 SI 、BP 、SP 、IP 、CS 、DS 、ES 、SS 、FL

9 指定记忆体位址

  许多 Soft-ICE 的指令要求以记忆体位址当参数。一个记忆体位址是由两个 16 位元的字组中间以分号 (:) 分隔而组成的。第一个字组表示节段位址 (segment address) 而第二个字组表示差距位址 (offset segment) 。

  公用符号可以在所有 Soft-ICE 指令中用来取代位址。公用符号必需先由 Soft-ICE 的程式载入器 (LDR.EXE) 载入。参阅第七章以取得使用公用符号的完 整说明。

  Soft-ICE 运算式的运算器接受一些特殊字元和位址的使用。这些字元是:

  $ --- 现在 CS:IP 所指的位址
  @位址 --- 间接双字组
  .number --- 原始程式码行号

  当你要输入目前指令指标的位址时,可以用 $ 代替 CS:IP 。

  使用 @ 可以让你参考到位址所指处的双字组。你可以使用多层的 @ 。

  如果用 . 来代表位址,它是用来代表原程式码中的行号,而非实际的位址。 这只有在原始程式码有载入的情形下才能使用。这种情况下,位址是以 10 进位 表示。

  例如: U.1234 --- 从原始程式码第 1234 行开始反组译
     U $-10 --- 从目前指令指标所指处向前 10 byte 开始反组译
     G @SS:SP --- 假如你目前正在第一个中断程序,下这个指令会在堆叠的 返回位址设个暂时中断点并跳过此中断程序。

10 功能键

  功能键可以代替一串 Soft-ICE 中之指令。功能键可以由命令行设定或从 S-ICE.DAT 中定义。

  Soft-ICE 磁片上原来的 S-ICE.DAT 已经对 12 个功能键有设定。你可以在任 何时候改变任何一个设定。个键定义如下表所示。这样设计是为了方便微软的 CodeView 的使用者。

  F1 --- 显示一般辅助画面        ( H; )
  F2 --- 在暂存器窗中切换        ( ^WR; )
  F3 --- 改变目前原始码的模式      ( ^SRC; )
  F4 --- 回复视窗            ( ^RS; )
  F5 --- 回到原程式           ( ^X; )
  F6 --- 在命令窗中和程式码窗中切换   ( ^EC; )
  F7 --- 执行到游标所在那行       ( ^HERE; )
  F8 --- 单步执行            ( ^T; )
  F9 --- 在游标所在那行设中断点     ( ^BPX; )
  F10 --- 单步执行            ( ^P; )
  F11 --- 执行到返回位址         ( ^G @SS:SP; )
  F12 --- 显示 Soft-ICE 的版别     ( ^VER; )

指令前的 ^ 会让这个指令不显示出来。指令後的 ; 则代表按下 Enter 。输入 FKEY 的指令可以显示目前功能键所代表的意义。要使用功能键直接按下功能键即可 ,不需再键入指令。要自定功能键,参阅 §5.8 FKEY 指令的解说或第六章有关 在 S-ICE.DAT 设定功能键的部份。

11 辅助

  利用辅助的指令可以得到有关指令的简单解说、语法和使用例子。要得到辅助 的资讯,键入:

   ? 或 H --- 显示所有指令和运算子的简短解说
   ? 指令 或 H 指令 --- 显示关於指令语法和例子更详细的资讯
   ? 运算式 或 H 运算式 --- 把运算式的结果以 16 、10 进位及 ASCII 码 显示出来

如何使用中断点指令

1 序言 Soft-ICE

   具有以往只有硬体除错器才具有的中断点能力。因为 80386 晶片的 威力和弹性,使我们不需要额外的硬体设备就能有更强大的中断点能力。

  中断点的触发可以由记忆体某位址的读取、记忆体范围的读取、程式的执行及 埠的存取来达成。Soft-ICE 赋与每个中断点一个一位的 16 进位号码( 0 - F ) 。这个中断点号码是当你对中断点做删除、中止、启动、编辑等动作时使用。

  Soft-ICE 的所有中断点都是 "sticky" 。这个意思是这些中断点在启动後不会 自动消失。你必需以 BC 或 BD 指令来消除或关闭它。Soft-ICE 一次可以处理 16 个中断点。同种形态的中断点最多可以有 10 个。但记忆体位址的中断点 ( BPM ) 因 80386 处理器之暂存器的缘故,最多只能设 4 个。

  中断点可以设个计数参数。计数参数是中断点真正触发作用前被忽略的次数。

2 设置中断点

指令:

   BPM BPMB BPMW BPMD --- 在记忆体位址被存取或执行时引发中断
   BPR --- 对记忆体范围设置中断点
   BPIO --- 对 I/O 埠存取时触发中断
   BPINT --- 呼叫插断时触发中断
   BPX --- 设置 / 清除 执行中断点
   CSIP --- CS:IP 范围的检定判断
   BPAND --- 等待复合中断点的发生
   BPM BPMB BPMW BPMD --- 在记忆体位址被存取或执行时引发中断

3 处理中断点

Soft-ICE 提供许多指令来处理中断点。处理类的指令可以用来列出、修改、删 除、启动和中止中断点。中断点是以由 0h 到 Fh 的中断点号码来识别的。处理中 断点的指令有:

   BD --- 中止中断点
   BE --- 启动中断点
   BL --- 列出中断点
   BPE --- 编辑中断点
   BPT --- 把中断点当样板
   BC --- 清除中断点

使用其它指令

1 显示及编辑类指令

指令:

   U --- 反组译或显示原程式码 
   R --- 显示或更改暂存器
   MAP --- 显示系统记忆体分布图
   D --- 用最後一次指定的形式显示记忆体
   DB --- 以位元组的形式显示记忆体
   DW --- 以字组的形式显示记忆体
   DD --- 以双字组的形式显示记忆体
   E --- 用最後一次指定的形式编辑记忆体
   EB --- 以位元组的形式编辑记忆体
   EW --- 以字组的形式编辑记忆体
   ED --- 以双字组的形式编辑记忆体
   INT? --- 显示最後一次呼叫的插断号码
   ? 或 H --- 显示辅助讯息
   VER --- 显示 Soft-ICE 的版本号码
   U --- 反组译或显示原程式码

目录: 本手册的功能 读者对象 本手册的组织结构 排版风格 如何使用本手册 其它相关文件 (外国人就是罗嗦,为了求全,只好随他了。) 第一章 欢迎使用SoftICE 产品概况 介绍SoftICE 介绍Symbol Loader 如何得到客户服务 联系NuMega公司的技术支持中心 第二章 安装SoftICE 介绍 硬件和软件要求 SoftICE显示选择 安装之前 安装 安装之后 配置BOOT。INI以便在多处理器系统中支持单CPU 配置SoftICEWindows 95下正确载入 通过串行口连接第二台计算机 解决显卡问题 第三章 SoftICE教程 介绍 载入SoftICE 构造GDIDEMO样本程序 装入GDIDEMO样本程序 控制SoftICE屏幕 通过源码跟踪和逐步调试 读本地数据 设定断点和目标断点 设定一个断点 设定STICKY断点 (此处不知STICKY作何解释。待我读到此处时大概会明白) 使用SoftICE命令行信息 使用符号和符号表 设定条件断点 设置BPX断点 编辑断点 设定读写内存断点 第四章 将代码装入SoftICE 调试的概念 准备调试程序 准备调试设备驱动程序和VxDs(虚拟设备驱动程序) 手工装入SoftICE 装入SoftICE for Windows 95 装入SoftICE for Windows NT 构造带有调试信息的程序 使用Symbol Loader转换和载入文件 修改模块设定 修改通用设定 修改编译设定 修改调试设定 指定程序的源文件 删除符号表 在DOS命令行里使用Symbol Loader 使用Symbol Loader的命令行工具 NMSYM命令行的语法 使用NMSYM来转换符号信息 使用NMSYM来装入模块和符号信息 使用NMSYM来装入或导出符号表 使用NMSYM卸载符号信息 使用NMSYM来保存历史记录 关于NMSYM的信息 第五章 SoftICE导航 介绍 呼出SoftICE窗口 启动时禁用SoftICE 使用SoftICE窗口 调整窗口大小 控制窗口 拷贝和粘贴数据 用鼠标输入命令 得到帮助 使用命令窗口 滚动窗口 键入命令 重呼命令 使用运行时宏 将命令窗口的历史缓存保存到文件 相关命令 控制代码窗口 读信息 在代码窗口键入命令 使用本地窗口 控制本地窗口 扩展和分解堆栈 相关命令 使用观察窗口 控制观察窗口 设定观察表达式 读信息 扩展和分解类型表达式 相关命令 使用寄存器窗口 控制寄存器窗口 读信息 编辑寄存器和标志位 相关命令 使用数据窗口 控制数据窗口 读信息 改变内存地址和格式 编辑内存 辅助表达式 相关命令 第六章 使用SoftICE 在跟踪错误时调试多个程序 跟踪错误 Ring-3 32位保护模式(Win32程序) Ring-0 驱动代码(内核模式设备驱动程序) Ring-3 16位保护模式(16位Win程序) 地址内容 使用INT 0x41 .DOT命令 理解从R-3到R-0的转变 第七章 使用断点 第八章 ----------------------------------------------------------- (...很累人那!今天就这些了吧.因为我也是读一些翻译一些,所以有些"向前引用 "的名词术语不知道要如何解释其意义.应该读完再翻译比较好...不过那个时候我 又开学了...呜...一点时间也没有了!) 第七章 使用断点 介绍 SoftICE所支持的断点类型 断点选项 执行断点 内存断点 中断断点 I/O断点 窗口消息断点 理解断点的含义 虚断点 设置断点活动 条件断点 条件断点计数功能 在条件表达式中使用本地变量 在条件断点里引用堆栈 参考 多重断点 所用时间 断点统计 在表达式中引用断点 维护断点 使用内嵌断点 第八章 使用表达式 表达式 操作符 操作符优先级 形成表达式 表达式类型 定制类型 取得符号的数值 间接使用符号 第九章 装入系统组件符号 装入由DLL和EXE文件导出的符号表 使用未命名的入口点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值