精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● 软件使用>>★软件课堂★>>Soft-ice使用手册>>Soft-ice使用手册 五章三回15

主题:Soft-ice使用手册 五章三回15
发信人: sanvador()
整理人: webfan(2000-08-08 20:52:26), 站内信件

  将命令窗口的历史缓存保存到文件
SoftICE的历史缓存包含命令窗口所显示的所有信息。将SoftICE的历史缓存保存
到文件中去有以下用处:
  清空大量数据或寄存器值
  分解代码
  用BPLOG表达式列出断点日志
  显示由BMSG命令记录的Windows消息
  在用户程序中调用OutputDebugString或核心模式程序中调用KdPrint以保存调
试中的消息。
参考后面"历史缓存大小"一节以改变SoftICE历史缓存的大小。
要将SoftICE的历史缓存保存到文件由以下步骤:
1.确定你要保存的信息在命令窗口中显示过,只有这些是保存在历史缓存中的。

例如,在倾卸数据前,关闭数据窗口以使数据显示在命令窗口中。
2.打开Symbol Loader
3.在文件菜单下选择SAVE SOFTICE HISTORY AS...或单击SAVE SOFTICE HISTOR
Y按纽。
4. 在Save SoftICE History对话框中输入文件名和路径。

  相关命令
下面的命令与命令窗口有关。参考SoftICE命令参考手册以得到更多信息。
命令 功能
SET [set variable][ON|OFF][value] 显示或设置用户配置

使用代码窗口
代码窗口显示源码、反汇编码或两种都有(混合码)。它也允许你设置断点。(
参考第七章)

  控制代码窗口
使用下面的命令来控制代码窗口:
命令 动作
WC 开关代码窗口
WC [num lines] 调整代码窗口的大小
Alt+C 将光标移入或移出代码窗口
------------------------------------------------- -

滚动代码窗口
要滚动代码窗口,使用滚动箭头或下面的按键(光标在代码窗口内时有效)。
功能 按键
前页 PageUP
后页 PageDown
上一行 UpArrow
下一行 DownArrow
跳到源文件开始 Ctrl+Home
跳到源文件末尾 Ctrl+End
左移一个字符 Ctrl+LeftArrow
右移一个字符 Ctrl+RightArrow
---------------------------------------- -
当光标在命令窗口时你也可以滚动代码窗口,如下:
功能 按键
前页 Ctrl+PageUP
后页 Ctrl+PageDown
上一行 Ctrl+UpArrow
下一行 Ctrl+DownArrow
跳到源文件开始 Ctrl+Home
跳到源文件末尾 Ctrl+End
左移一个字符 Ctrl+LeftArrow
右移一个字符 Ctrl+RightArrow
---------------------------------------- -

  读信息
代码窗口提供三种方式来显示源码、反汇编码或混合码。下表定义了这些方式:

编码方式 介绍
源码 如果有源代码,源码文件显示在代码窗口

混合码 在混合模式,源代码行和反汇编指令都显示在代码窗口。每一行源程序后
都跟着它的汇编指令

代码 在代码模式,仅反汇编指令显示在代码窗口
---------------------------------------- -
转换代码窗口模式,使用SRC命令(F3)。

使用混合模式和代码模式
在混合模式和代码模式中每一条反汇编指令都包含以下部分:
区域 介绍
位置 指令的十六进制地址。如果在这个位置有一个公有的代码符号,它显示在本
指令行的上面

代码字节 指令的实际十六进制字节。缺省是压缩了(即不显示)代码字节区域。
因为一般而言它没有什么用处。使用SET CODE ON命令来显示代码字节

指令 以现代汇编语言指令将内存中的指令进行反汇编。如果指令中有地址引用了
某个符号,它显示符号而不是十六进制的地址。用SET SYMBOLS OFF来显示十六进
制地址

注释 来自于反汇编器的有用注释
----------------------------------------- -
例子:下面的输出显示了一条反汇编指令
00FD:00001DA1 56  PUSH ESI
还有就是SoftICE的反汇编器自动提供了以下的注释:
  注释核心例程中的INT 2E调用以及它的参数个数。如果你载入了NTOSKRNL的符
号和符号表,你将看到OS例程的名字而不是一个地址。
  如果指令使用的立即数和Windows NT状态码一致,状态码的名字作为注释显示

  INT 21H调用将注释它们的DOS功能名
  INT 31H调用将注释它们的DPMI功能名
  VxD服务名在合适的地方显示为一个代码标签

看附加信息
作为源码和反汇编码的补充,代码窗口显示下面的信息:
当SoftICE弹出时  位于当前EIP中的指令以粗体突出显示。如果这条指令与跳转
有关,反汇编器的注释域包含了JUMP或NO JUMP字符串,指示跳转是否发生。如果
是JUMP,有一个向上或向下的箭头标明将向那里跳转:向后(JUMP ↑)或向前(
JUMP↓)。利用箭头判断向哪个方向滚动代码窗口来看跳转的目标。
  JUMP指令的目标总是以一个突出显示的箭头(=>)指示,而不是地址。
  如果指令引用了内存地址,有效的地址和地址中的值显示在代码行的末尾。如
果寄存器窗口可见,地址及值显示在标志位之下。
  在代码窗口中如果某一行指令上设置了断点,相应的行以粗体显示。
  代码窗口的上方和下方显示了关于代码更多的信息。显示于代码窗口之上的信
息包括:
    符号名+偏移量
    如果源文件可见,包含源文件名
下面段类型之一:
    V86 实模式 segment:offset 代码地址
    PROT16 16位保护模式 selector:offset 代码地址
    PROT32 32位保护模式 selector:offset 代码地址
  显示于代码窗口之下的信息包括:
如果是Windows 32位模块,显示Windows模块名、区域名(section name)和OFF
SET(偏移量)。例如:KERNEL32! .Text + 002f
如果是Windwos 16位模块,显示Windows模块名和段数(置于括号内)。例如:

Display (01)
如果是V86模式,显示代码段拥有者的名字,例如:DOS.

  在代码窗口键入命令
当光标位于代码窗口中时你仍然可以输入命令。在你敲入命令的第一个字母后光
标移到命令窗口。你按下Enter键并执行完命令,光标又回到代码窗口。在代码窗
口你也可以使用命令的功能键。参考前面的"使用命令窗口"。
下面的命令特别有用:
命令 功能
.(点) 看当前EIP中的指令
A address 将汇编指令直接输入到内存中
BPX(F9) 设置触发断点
FILE file-name 选择要看的源文件。Filename可以是全名的一部分。如果你不知
道文件名,可以输入FILE *来显示载入符号表中的所有源文件。
HERE (F7) 设置执行一次的断点
SET 显示或设置用户配置
SRC 转换代码窗口模式:源码、混合或代码
SS string 显示指定字符串的下一个位置
TABS tab-setting 为源文件的显示设置Tab键
U address 反汇编任何地址的代码。如果你在地址参数中指定一个函数名,Soft
ICE滚动代码窗口到你指定的函数位置
---------------------------------------- -
参考SoftICE命令参考手册

使用本地窗口
本地窗口显示当前堆栈。你可以通过展开堆栈来看结构体、数组和字符串中的内
容。

  控制本地窗口
使用下面的命令来控制本地窗口:
命令 动作
WL 开关本地窗口
WL [num lines] 调整本地窗口大小
Alt+L 将光标移入或移出本地窗口

滚动本地窗口
要滚动本地窗口,使用滚动箭头或用Alt+L将光标移到本地窗口,然后使用下面的
按键:
功能 按键
前页 PageUP
后页 PageDown
上一行 UpArrow
下一行 DownArrow
跳到源文件开始 Home
跳到源文件末尾 End
左移一个字符 LeftArrow
右移一个字符 RightArrow
---------------------------------------- -

  展开和层叠堆栈
你可以展开结构体、数组和字符串以显示它们的内容。这些项目以一个加号(+)
来表示,表明你可以展开它们。要展开或层叠堆栈,如下:
  仅奔腾PC机--双击一个项目
  所有PC机--使用Alt+L进入本地窗口,滚动到项目上,按Enter键

  相关命令
下面的命令与本地窗口相关。参考SoftICE命令参考手册以得到更多信息。
命令 功能
LOCALS 从当前堆栈结构中列出本地变量
TYPES [type-name] 列出当前内容中的所有变量或者由type-name指定的所有类型
信息

使用观察窗口
观察窗口使你可以查看你在WATCH命令中设置的表达式的值。参考SoftICE命令参
考手册以得到关于WATCH命令的更多信息。

  控制观察窗口
使用下面的命令来控制观察窗口:
命令 动作
WW 开关代码窗口
WW [num lines] 调整代码窗口的大小
Alt+W 将光标移入或移出代码窗口
------------------------------------------------- -

滚动观察窗口
要滚动观察窗口,使用滚动箭头或按Alt+W将光标移入到观察窗口,然后使用下面
的按键:
功能 按键
前页 PageUP
后页 PageDown
上一行 UpArrow
下一行 DownArrow
跳到源文件开始 Home
跳到源文件末尾 End
左移一个字符 LeftArrow
右移一个字符 RightArrow
---------------------------------------- -

  设定观察表达式
使用WATCH命令设置要观察的表达式。表达式可以使用全局和本地符号、寄存器以
及地址。
注意:要观察一个本地(局部)变量,必须在变量的有效范围内(作用域)。
下面的例子介绍了如何使用WATCH命令:
例子:查看DS:ESI的值:
WATCH DS:ESI
例子:查看DS:ESI指向的值:
WATCH *DS:ESI

删除查看设置
你可以使用键盘或鼠标来删除查看设置。使用鼠标,在查看设置上单击,然后按
Delete键。使用键盘,用Alt+W进入观察窗口,使用箭头键选择查看设置,然后按
Delete键。

  读信息
观察窗口包含下列区域(按显示顺序):
观察行区域 介绍
表达式 在WATCH命令中键入的实际表达式。每次观察窗口显示的时候都重新计算
表达式。
类型信息 表达式定义的类型
值 被观察的表达式的当前值

  扩展和分解键入的表达式
你可以展开表达式以显示它们的内容。键入的表达式以一个加号(+)来表明它可
以被展开。要展开或层叠一个表达式,有以下步骤:
  仅奔腾PC机--双击一个项目
  所有PC机--使用Alt+L进入本地窗口,滚动到项目上,按Enter键

  相关命令
下面的命令与观察窗口有关,参考SoftICE命令参考手册以得到更多信息:
命令 功能
WATCH expression 增加一个观察表达式

-----------------------------------------------
-----------------------------------------------
因为时间有限,所以翻译完毕以后也没有校验。随着内容的加深和展开,前后大
概有不一样的部分。这些纰漏和错误还请大家原谅。在全部译完之后我再做一个
完整的手册。
还有就是一些比较深入的东西,如NT的内核模式等,我本身不是很明白,自己也
没有做实验,所以如果翻译的某些部分难于理解或者含义模糊,还请一定指出。
在此先谢过了!
希望有使用SoftICE的人给我更多的指教!谢谢!
Sanvador.KT

--
无意苦争春
一任群芳妒
零落成泥碾作尘
依旧香如故

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 61.137.191.225]

[关闭][返回]