精华区 [关闭][返回]

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

主题:Soft-ice使用手册 五章四回16
发信人: sanvador()
整理人: CyberCowBoy(2000-08-08 20:52:49), 站内信件

使用寄存器窗口
寄存器窗口显示系统寄存器、标志位以及适当的有效地址的当前值。使用本窗口
来看那一个寄存器被程序调用所改变或者编辑寄存器和标志位。
控制寄存器窗口
使用下面的命令来控制寄存器窗口:
命令 动作
WR 开关寄存器窗口
Alt+R 将光标移入或移出寄存器窗口
------------------------------------------------- -
如果你不使用寄存器窗口,关闭它以腾出屏幕空间给其它窗口。

读信息
寄存器窗口的前三行显示下面的寄存器、标志位和和地址:
EAX,EBX,ECX,EDX,ESI
EDI,EBP,ESP,EIP, o d i s z a p c
CS,DS,SS,ES,FS,GS effective address = value
当你使用T(跟踪),P(跳过),G(执行到)命令时,SoftICE突出显示改变了
的寄存器。这个特性在看那一个寄存器被程序调用改变时很有用。
在寄存器窗口的第二行,CPU标志位定义如下:
标志位 介绍
o overflow(溢出)
d direction(方向)
i interrupt(中断)
s sign(符号)
z zero(零位)
a auxiliary carry(辅助进位)
p parity(奇偶)
c carry(进位)
(呵呵,这些寄存器不用我罗嗦了吧!找一些关于汇编的书读读。)
注意:没有突出显示的小写字符表示标志位的值是0,突出显示的大写字符表示标
志位的值是1,例如:o d I s Z a p c
如果当前指令引用了内存地址,有效的地址及其值显示在寄存器窗口的第三行。
你在可以在Eaddr和Evalue函数表达式中使用该地址及值。参考后面的"内置函数
"一节。

  编辑寄存器和标志位
你可以使用寄存器窗口来编辑寄存器和标志位。将鼠标移入寄存器窗口,然后在
相应的位置编辑寄存器和标志位。要把光标移入寄存器窗口,在寄存器窗口上单
击鼠标或按Alt+R。下面的按键是用于编辑寄存器窗口的:
编辑功能 按键
移动光标到下一个寄存器域的开头 Tab或Shift+RightArrow

移动光标到前一个寄存器域的开头 Shift+Tab或Shift+LeftArrow

接受改变并退出寄存器编辑模式 Enter

退出寄存器编辑模式。当前光标所在 Esc
的寄存器不作改变,但前面已经改过
的寄存器仍然有效
当光标位于标志位时开关标志位 Insert

在寄存器窗口上下左右移动光标 箭头键

  相关命令
下面的命令与寄存器窗口相关。参考SoftICE命令参考手册以得到更多信息。
命令 功能
CPU 显示CPU的寄存器信息
G [=start-addr][break-addr] 执行到一个地址位
P 执行一个程序步
T [=start-addr][count] 跟踪一条指令

使用数据窗口
数据窗口允许你读并编辑内存内容。你最多可以使用四个不同的数据窗口,用指
定格式来观察不同的内存位置。但是你一次只能看一个数据窗口。

  控制数据窗口
使用下面的命令来控制寄存器窗口:
命令 动作
WD 开关数据窗口
WD [num lines] 调整数据窗口大小
Alt+D 将光标移入或移出数据窗口
DATA 在数据窗口之间循环(就是循环选择数据窗口)
D [address] 在当前数据窗口中选择要看的地址
FORMAT(Shift+F3)在当前数据窗口中选择显示的格式

在数据窗口之间循环
要在数据窗口之间循环,键入DATA命令或在数据窗口顶端单击,数据窗口按从0~
3的顺序循环。

滚动数据窗口
要滚动数据窗口,使用滚动箭头或按Alt+D将光标移入到观察窗口,然后使用下面
的按键:
功能 按键
前页 PageUP
后页 PageDown
上一行 UpArrow
下一行 DownArrow
---------------------------------------- -

  读信息
数据窗口顶端一行按下面的顺序显示如下的四个域:
域 介绍
字符串 如果本窗口以DEX命令指定了一个表达式,表达式以ASCII码显示在这一行
上。否则,显示处理这个数据的最近的符号,它可能时下面之一的字符串:
符号名及其十六进制的地址,例如:MySYMBOL+00010
Windows模块名及其类型--如果数据段时Windows堆的一部分的话。例如:mouse.
moduleDB
如果数据段是DOS虚拟机的一部分的话,显示数据段的所有者名称
名字的Windows模块名、区域名和十六进制的地址,如:
            KERNEL32!.text+001F
如果此位置没有相关符号,此域空白

数据格式类型 显示为字节、字、双字、短整型、长整型、或十字节整型数之一。


段类型 显示为V86或PROT。V86表示数据来自于实模式segment:offset地址。PRO
T表示数据来自保护模式selector:offset地址。

窗口号 0~3之间的数据窗口号。一次仅显示一个数据窗口。
--------------------------------------------------- -
数据窗口以当前格式一行显示16个字节的数据,不管是数据是字节、字、双字、
短整型、长整型、或十字节整型数。如果当前格式是十字节整型数,每一行显示
20个字节的数据。如果当前格式是十六进制(字节、字、双字),在窗口的右面
也用ASCII码显示数据位。

  改变内存地址和格式
单击数据窗口顶端的格式名列表或使用FORMAT命令(Shift+F3)来改变当前数据
窗口的的格式。格式在字节、字、双字、短整型、长整型、或十字节整型数之间
循环。
要改变显示在当前数据窗口中的内存地址,输入D命令并指定一个地址。下面的例
子显示起始于地址ES:1000H的内存内容:
:D es:1000
提示:你也可以使用D命令来指定你想显示的地址的格式。

  编辑内存
要编辑内存,将光标移入到数据窗口,使用十六进制或ASCII码字符进行编辑。利
用下面的按键在数据窗口进行编辑:
编辑功能 按键
在数字和ASCII码之间转换 Tab

将光标放置在前一个数据域的开始 Shift+Tab

接受改变并退出编辑模式 Enter

退出寄存器编辑模式。当前光标所在 Esc
的寄存器不作改变,但前面已经改过
的寄存器仍然有效
--------------------------------------------- -
提示:你也可以使用E命令来编辑数据

  分配表达式
使用DEX命令将表达式指定到任何一个数据窗口中。当SoftICE弹出,计算表达式
并将结果显示在它们指定的数据窗口中。设置一个窗口始终显示堆栈的内容很有
用。例如,下面的命令在数据窗口0中显示堆栈的当前内容:
DEX 0 SS:ESP

  相关命令
下面的命令与数据窗口相关。参考SoftICE命令参考手册以得到更多信息。
命令 功能
D 显示内存
DEX [data-window-number [expression]] 在数据窗口中显示或指定表达式
E [size][addr [data-list]] 编辑内存
S [-cu][addr L length data list] 在内存中搜索数据、

使用FPU堆栈窗口
FPU堆栈窗口显示浮点单元(FPU)堆栈的当前状态和MMX寄存器。
使用WF命令开关FPU堆栈窗口

读信息
如果FPU寄存器的值显示为问号(?),FPU被禁用或是不存在。Windows NT在执
行一条与FPU相关的指令后将使用FPU作为一条线程。
Inter体系结构在FPU堆栈上命名了64位MMX寄存器。要在FPU堆栈窗口中显示寄存
器,选择下面之一的数据格式:
数据格式 介绍 使用
WF F 浮点 仅浮点
WF B 字节* 仅MMX
WF W 字* 仅MMX
WF D 双字* 仅MMX
(* 原文是Byte packed、Word packed、Dword packed。本人才疏学浅,不知道
这个packed作何解释。有BCD码是packed格式的,作压缩解。还有Interl数字协处
理器中的8个80位浮点寄存器将所有数字格式转化为一种temporary real格式。不
知道是不是与此类似。还请高手指教!)
当它们作为浮点来看时,寄存器标号为ST0~ST7,当它们作为packed来看时,如字
节、字、双字,寄存器标号为MM0~MM7。(参看SoftICE命令参考手册)
提示:使用WF -D命令显示寄存器的内容、状态和命令窗口的控制字。
--------------------------------------------------------

哎呀,很多东西我也不懂了。我尽量想做的明白一些,所以要动手实践了!文章
中的错误和讹漏还请一定指出!!有什么做不出来或者明显不正确的地方,请来
信给我。谢谢!我也是SoftICE的初学者啊。

[email protected]

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

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

[关闭][返回]