SOFTICE安装及使用

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 --- 反组译或显示原程式码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值