老文章档案 · 2003 年

SoftICE for WIN95中文命令解说(九)

赢政天下 [WINZHENG.COM] · 网络学院 · 2003-06-15 · 作者:TiANWEi 人气: · 出处:嬴政天下整理收藏)

命令:

M

作用:

传送数据

语法:

M source-address l length dest-address

用法:

source-address: 源数据的起址;

length : 要传送的字节长度;

dest-address : 目的数据块的起址.

用 M 命令将数据块从源地址传送到目的地址.

如M ds:1000 l 2000 es:5000

将2000h个字节从DS:1000h传到ES:5000h处.

点评:

命令:

MACRO

作用:

定义一个宏命令,使之执行一系列SoftICE指令.

语法:

MACRO [ macro-name] | [*] | [= "macro body"]

用法:

macro-name: 3-8个字符的宏名,(不区分大小写);

macro-body: 用分号隔开的一系列SoftICE指令, 首末

加冒号;

* : 删除一个或所有的已定义的宏命令;

= : 定义(或重定义)一个宏命令.

MACRO 命令用于定义SoftICE指令的超集.macro-body

可以包含SoftICE的指令,也可包含宏定义,甚至是当前

的宏定义本身.(这当然会产生递归调用,如果编得不好

的话会产生错误,也没有什么大意思).在这一系列命令

之间用分号(;)隔开,最后一个命令后不用加分号.

macro-body中还可以带入命令行参数,和DOS命令的%1,

%2...一样,合法值在1-8之间.注意一点,macro-body首

尾是用冒号的.所以在宏定义体中如果要用到 \, ", %

时要在前加一 \,这跟C语言的写法是一致的.

macro_name参数用来代表宏名,可以是字母或数字或下

划线组成.可以是现有的宏名, 那样的话就会重定义这

个宏.宏名不可以和现有的SoftICE内部指令相同.会发

生错误.MACRO * 表示删除当前定义的所有(有名字的)

宏.(因为断点的DO 子句实际上也是宏, 不过是无名字

的,它们不能就这样被删除了!)

MACRO mnames * 删除当前名为 mnames 的宏.

MACRO mnames 将编辑名为 mnames 的宏, 在编辑过程

中可以用ESC键取消改动.一个很有用的例子:

:MACRO 1shot = "bpx %1 do \"bc bpindex\""

用这个宏可以设一个一次性断点,非常方便!

点评:

宏病毒!

命令:

MAP32

作用:

显示当前所有32位模块的内存映象(图).

语法:

MAP32 [module-name | module-handle |address]

用法:

module name : Windows模块名;

module handle: 模块的基址;

address : 落在可执行模块中的地址.

MAP32 不带参数将显示所有的32位模块的信息.加参数

将只显示指定模块的信息.

输出如下:

Owner : 模块名.

OBJ Name: 可执行文件的区段名.

Obj# : 可执行文件中的区段号.

Address : 选择符:偏移量 格式的区段地址.

Size : 区段的大小(字节)

Type : 区段类型:

--------------------

CODE 代码

IDATA 初始化的数据

UDATA 未初始化的数据

RO 只读

RW 读/写

SHARED 对象是共享的.

--------------------

点评:

无.

命令:

MAPV86

作用:

显示当前虚拟机的DOS内存映象

语法:

MAPV86 [address]

用法:

address : 段:偏移量格式的地址

MAPV86 不带参数将显示当前整个虚拟机的内存映象.

加参数将显示指定包含所指定地址的内存区域的信息.

有时侯DOS VM的页没有切进来,所以会有 "PAGE NOT

PRESENT"的出错信息,所以可以再弹出一次.

MAPV86 在配合SYMLOC命令时很有用,因为在Windows

启动前装载的程序,Windows不会自动将它们的符号信

息映射到V86内存,用MAPV86命令就可以取得它们的代

码段,将符号表与之对齐,就可以跟踪调试了.

输出如下:

VM ID : 虚拟机的ID.

VM handle : 32位虚拟机的句柄.

CRS pointer: 虚拟机的32位客户登记表的指针.(?)

VM address : 32位线性地址.

另外,如果SoftICE弹出时CS:IP指向一个MAPV86的入口

,那一行的内容将高亮显示.

点评:

无.

命令:

MOD

作用:

显示Windows模块列表.

语法:

MOD [partial-name]

用法:

partial-name: Windows模块名,(可以是开头的若干个

字母).

MOD 不带参数将显示所有的模块.若加 partial-name,

则符合要求的模块将被列出.输出如下:

module handle: 16位的句柄.

base : 线性基址.

pe-header : 选择符:偏移量格式的PE文件头.

module name : 模块名.(编程序时在.DEF中用NAME或

LIBRARY命名的.)

file name : 文件的路径(全名).

点评:

无.

命令:

O

作用:

向I/O端口输出数据.

语法:

O[size] port value

用法:

size : B 字节(缺省值);W 字;D 双字

port : 端口地址.

value: 要输出字节,字,或双字.

O 命令将立即输出到硬件端口(当然那两个21h和A1h要

等退出SoftICE窗口时才执行)(?)

点评:

关于21h和A1端口,二者是关系到中断的, PDF文档在这

写得不是很详细.实际操作情况是多种多样的.

命令:

P

作用:

单步执行程序.

语法:

P [ret]

用法:

P 命令将单步执行程序.在汇编模式中,当遇到 CALL,

INT,LOOP,REP指令时,P将不跟踪进去,直到这些指令执

行完毕,控制才返回SoftICE,换句话说,P命令是"跨"过

这些指令的.P 后加RET 参数,SoftICE将一直单步执行

直到它找到一条返回语句(RET,RETF).在源程序模式中

,P 命令将执行一个源程序表达式. 但也不跟踪到子例

程中去.P 命令实际上是利用了单步标志, 大多数情况

下是如此.但碰到CALL,INT,LOOP,REP指令时,就用INT 3

(一次性) 在这些指令的后面设一下.

P 命令有快捷键 F10; P RET 命令有快捷键 F12.

点评:

F10可能是按得最多的键了,好好保护你的键盘吧!

(出处:嬴政天下整理收藏)

相关文章:

相关软件:

→ 特别推荐

→ 热点TOP10

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史