精华区 [关闭][返回]

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

主题:Soft-ice使用手册 五章二回14
发信人: sanvador()
整理人: webfan(2000-08-08 20:51:50), 站内信件

  拷贝和粘贴数据
如果你又鼠标,你可以在窗口中拷贝和粘贴数据。这在将地址和数据拷贝到表达
式中时非常有用。拷贝和粘贴数据有以下步骤:
1.选择要拷贝的数据
2.点右键出现命令列表
3.点左键执行命令。下面是命令列表:
命令 描述
Copy 将所选项目送到拷贝缓存区
Copy and Paste 拷贝所选项目并将其粘贴到光标所在位置
Paste 将拷贝缓存区内的内容贴到光标所在位置

  用鼠标输入命令
鼠标提供了输入D、U、WHAT命令的快捷方式。(参考SoftICE命令参考手册)
使用鼠标来输入这些命令以下步骤:
1. 选择命令所需要的数据。
例如,选择要处理的表达式。
2. 点鼠标右键显示命令列表
3. 在要使用的命令上点左键。下面是命令列表:
鼠标命令 相等的SoftICE命令 描述
Display D 在指定地址显示内存内容
UnAssemble U 在指定地址显示反汇编码或源码
What WHAT 判定名字或表达式是否是已知类型
Previous 无 取消上一步的命令
-------------------------------------- -

  得到帮助
SoftICE提供了两种方式使你在调试模块的时候可以得到帮助:帮助行和H命令。

使用帮助行
屏幕底部的一行始终是帮助行。这一行随着你在命令行中键入的字符而变化。帮
助行提供几种不同类型的信息,如下:
  当你输入的字符不是一个完整命令的时候,帮助行显示以你键入的字符开头的
所有有效的命令。
  当你输入的字符是一个命令的时候,帮助行显示这条命令的简介。
  如果命令之后你输入了空格,帮助行显示本命令的语法。
  如果你在寄存器或数据窗口进行编辑,帮助行包含关于窗口的有效的编辑键。

使用H命令
H命令可以提供所有关于SoftICE命令的一般帮助或者指定命令的细节。要显示So
ftICE所有命令的简要介绍,键入H命令,不带任何参数。
要显示指定命令的细节,输入H命令,指定你要得到帮助的命令作为参数。SoftI
CE显示关于命令的介绍和命令语法以及例子。
下面的例子显示了关于BPINT命令的帮助:
:H BPINT
Breakpint on interrupt
BPINT interrupt-number {IF expression} [DO bp-action]
Ex:BPINT 50

使用命令窗口
命令窗口让你输入命令并显示调试信息。命令窗口中的内容是保存在SoftICE历史
缓存中的。
命令窗口总是打开的,并且至少右两行宽。虽然你不能明确的调整命令窗口的大
小,不过其它窗口大小的改变会自动影响命令窗口。

  滚动窗口
要滚动窗口,使用滚动箭头或下面的按键:
功能  键
前页 PageUP
后页 PageDown
上一行 UpArrow
下一行 DownArrow
------------------------------------------- -

  键入命令
当光标在命令窗口或者代码窗口时你可以输入命令。
要输入命令,键入命令然后按Enter键执行它。
提示:当你敲入字符时,帮助行显示以你敲入的开头的有效命令列表。当只有一
个命令显示时,你按空格键自动输入完整的命令。SoftICE填充这个命令的剩余字
符并在末尾加了一个空格。
当你在命令窗口输入了很多命令,相关信息会自动显示在命令之下。如果显示信
息位于窗口的最后一行,就会滚动窗口。如果显示不下所有信息,如下提醒会出
现在帮助行:
Any Key To Continue, ESC To Cancel
要取消这个提醒,使用下面的命令:
SET PAUSE OFF

命令语法
SoftICE命令具有以下的语法规则:
  所有命令都是1~6个字符长,不区分大小写。
  所有参数都是ASCII字符串或表达式
  所有地址都是selector:offset、segment:offset或就是一个偏移量
  SoftICE中的表达式由以下部分组成:
     符号组
     十六进制或十进制数
     地址
     行数
     文本字符串
     符号
     操作符
     内置函数
     寄存器
例如:(1+2)*3 是一个表达式
任何可接受数字或地址的命令都可接受任意复杂的表达式。使用?命令显示表达
式的值。还有,条件断点是基于表达式的计算结果的。也就是说,仅当表达式的
值为"非零"(TRUE)(真)时断点才会被触发。

使用功能键
SoftICE指定了一些功能键以节约输入命令的时间。下面列出了这些指定的功能键

------------------------------------------- -
功能键 命令 功能
F1 H 显示帮助
F2 WR 开关寄存器窗口
F3 SRC 在源码、混合码、反汇编码之间转换
F4 RS 显示程序屏幕
F5 X 执行
F6 EC 在代码窗口之间移动鼠标
F7 HERE 执行到光标处
F8 T 单步
F9 BPX 在当前行设置一个执行断点
F10 P 跳过
F11 G @SS:EIP 执行到
F12 P RET 从过程调用中返回
Shift+F3 FORMAT 改变数据窗口的格式
Alt+F1 WR 开关寄存器窗口
Alt+F2 WD 开关数据窗口
Alt+F3 WC 开关代码窗口
Alt+F4 WW 开关观察窗口
Alt+F5 CLS 清空命令窗口
Alt+F11 dd dataaddr->0 绕到数据窗口第一个DWORD值
Alt+F12 dd dataaddr->4 饶到数据窗口第二个DWORD值
------------------------------------------------------------ -
你可以修改指定到这些按键中的命令。参考"修改键盘映射"

编辑命令
使用下面的按键来编辑命令行:
编辑功能 按键
将光标移动到0行 Home
移动光标到最后一个字符上 End
打开插入模式 Insert
删除光标位置的字符 Delete
删除前一个字符 Backspace
取消命令 Esc
水平左右移动光标 箭头键
----------------------------------------------------------- -
(呵呵...这些功能键我想大家都很熟悉了吧,上面原文讲解的非常详细,好象是
介绍给从未接触过键盘的人的。我偷个懒,略过了。呵呵,有谁不明白?别怪我
用烂番茄扔你!)

  重呼命令
SoftICE可以记忆你在命令窗口输入的最后32个命令。你可以在命令或代码窗口重
呼它们。
使用下面的按键在命令窗口重呼一个命令
功能 按键
从历史缓存中取得上一个命令 UpArrow
从历史缓存中取得下一个命令 DownArrow
注意:支持前缀。例如,如果你敲入字母A,按向上的箭头键(UpArrow)会在以
字母A开头的命令中循环显示。

使用下面的按键在代码窗口重呼一个命令
使用下面的按键在命令窗口重呼一个命令
功能 按键
从历史缓存中取得上一个命令 Shift+UpArrow
从历史缓存中取得下一个命令 Shift+DownArrow

  使用运行时宏
宏是用户定义的命令,可以用和内置命令一样的方式使用。一个宏的定义,或叫
本体,由一系列的命令调用组成。可用的命令集合包括其它用户定义的宏和命令
行参数。
建立宏有两种方式。运行时宏在重启SoftICE之前存在,永久宏被保存并在SoftI
CE启动时自动加载。本章介绍如何使用运行时宏。关于永久宏将在后面章节介绍

下表展示了如何建立、删除、编辑和列出运行时宏:
动作 命令
建立或修改宏 MACRO macro-name = "command1;command2;..."
删除宏 MACRO macro-name *
删除所有宏 MACRO *
编辑宏 MACRO macro-name
列出所有宏 MACRO 
-------------------------------------------- -
提示:你可以用MACRO命令在运行时临时修改一个永久宏。当你重载SoftICE时,
你的永久宏恢复原始状态。
宏的本体是由分号分隔的一系列的SoftICE命令和其它宏。你不必在最后一个命令
后加分号以结束宏。宏的命令行参数可在宏中任何位置引用,以语法 %<paramet
er#>表示。parameter#是1~8的数字。
例子:命令 MACRO asm = "a %1"定义了A(汇编)命令的假名。%1由跟着asm宏之
后的第一个参数替换,没有参数时就删除它。
如果你需要在宏的本体中包含文本的引号(")或百分号(%),在字符之前加一
个反斜杠(\).要指定反斜杠,使用两个反斜杠(\\)。
注意:虽然宏可以循环调用它本身,但它没有实际用处。因为没有程序化方式来
终止这个宏。如果宏在其本体中的最后命令中调用它自己(尾调用),宏一直执
行到你用ESC键终止它。如果递归调用不是最后的命令,宏执行32次(嵌套限制)

下表展示了一些关于宏的例子:
运行时宏 例子
MACRO Qexp = "addr explorer; Query %1"  Qexp
Qexp 140000
MACRO 1shot = "bpx %1 do \" bc bpindex\""  1shot eip
1shot @esp
MACRO ddt = "dd thread"  ddt
MACRO ddp = "dd process"  ddp
MACRO thr = "thread %1 tid"  thr
thr -x
MACRO dmyfile =
"macro myfile = \" TABLE %1;file \%1\"" dmyfile mytable
myfile myfile.c
----------------------------------------------- -
[email protected]
Sanvador.yeah.net

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

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

[关闭][返回]