欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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

程序员文章站 2022-04-27 10:37:54
SoftICE for WIN95中文命令解说(七) Copyright (c) 1999 http://coobe.cs.hn.cninfo.net/~tianwei 命令: H 作用: 显示帮助信息 语法: H [command] 用法: 键入 H 命令不带任何... 08-10-08...
softice for win95中文命令解说(七) copyright (c) 1999 http://coobe.cs.hn.cninfo.net/~tianwei 命令: h 作用: 显示帮助信息 语法: h [command] 用法: 键入 h 命令不带任何参数将显示所有命令的帮助. 要获得详细的帮助,在 h 后加命令名就可.详细的帮助将包括命令的描述,命令的语法,和例子. 点评: h 命令可以很方便地帮助使用者查询softice的命令.实际上在命令窗口的底部有一个状态条,它提供的实时帮助也是很有用的. 命令: hboot 作用: 系统重新启动 语法: hboot 用法: hboot 将重新启动计算机.等同于按 ctrl alt del 组合键.hboot 一般都能成功,只有特殊情况下(某些插卡需要重加电)才用机器上的reset或power键. 点评: hboot 让我想到两件事:1,以前学微机时,老师老是盯着我们,唯恐我们乱启动机器.想起来真是不寒而栗, 好象是我们的过错一样.可机器明明死了嘛,不重新启动怎么行?2,有大部分品牌机上没有reset键, 死机就按power键,按得老板倒抽凉气.:) 命令: heap 作用: 显示windows全局堆 语法: heap -l [free | module-name | selector] 用法: -l : 只显示含局部堆的全局堆入口module-name: 模块名.selector : ldt 选择符heap free 将显示空闲的全局堆.heap 跟模块名将只显示由指定的模块拥有的全局堆入口. heap 跟ldt 选择符将只显示与此选择符相应的全局堆入口. heap 不带参数将显示整个全局堆的情况.输出:selector or handle: 选择符符或句柄.address : 32位虚拟地址size : 堆的大小(字节)module name : 模块名 -------------------------------- type : 全局堆的类型 code : 不可丢弃的代码段 code d : 可丢弃的代码段 data : 数据段 moduledb : 模块数据基础段 taskdb : 任务数据基础段 burgerm : "三明治"(就是堆本身) alloc : 被动态分配的内存 resource : windows 资源 -------------------------------- 额外信息: 如果某全局堆的入口是代码段或数据 段,则会显示该段在.exe中的段号.如 果某全局堆的入口是windows资源,则 会附加显示如下资源类型: -------------------------------- userdef(用户自定义);icon(图标); string(字符串); accel(快捷键); icongrp(图标组);cursor(光标); menu(菜单);fontgrp(字体组); errtable(错误表);nametabl(名字表); bitmap(位图);dialog(对话框); font(字体);cursgrp(光标组) -------------------------------- 点评: pdf 手册中称堆本身为burger-->"三明治"(碎肉夹饼)很贴切,堆本来就是乱七八遭. 命令: heap32 作用: 显示windows全局堆 语法: heap32 [hheap32 | task-name] 用法: hheap32 : 由heapcreate()返回的堆句柄.task-name: 32位任务的名字.heap32 不带参数显示32位进程的堆的情况:.kernel32 缺省系统堆..进程用heapcreate()申请的私有堆..两个由vmm产生的ring-0级的堆.第一个是换页锁定的 堆,第二个是可换页的堆..一个属于所有虚拟机的ring-0堆. 如果加上进程名,softice将显示所有该进程的缺省堆,且地址内容也切换到该进程中.如果加上堆的基地址而不是进程名,softice将显示该进程的非缺省堆.windows 95的调试版还提供了额外的调试信息,想要用softice看到这些信息,必须:.对于kernel32 ring-0堆,必须安装有sdk除错版..对于vmm ring-0堆,必须安装vmm的ddk除错版输出信息(heap32):heapbase : 堆的基址maxsize : 堆可增长的最大范围, 在此范围内堆无需 再创建一个新段.committed: 以千字节为单位当前存在于物理内存中的 被保证的内存大小segments : 堆中段的数量. 当堆增长超出段所能容纳 的范围,就建立一个新段type : 堆的类型: -------------------------------- private: 由应用程序建立的ring-3堆 system : kernel32建立的ring-3堆 ring0 : vmm建立的ring-0堆 vmm## : 由vmm建立的为特定虚拟机 存储数据的堆. -------------------------------- 输出信息(heap32 带参数):address: 堆元素的地址.size : 以字节为单位堆元素的长度.free : 如果堆元素是空闲的块,则会显示"free",否 则不显示. 点评: 在softicev3.20实际操作上和手册说的中有些许不同. 命令: here 作用: 运行到当前光标所在行 语法: here 用法: here 命令让程序一直走到光标所在行再停下来.注意:只有当光标在代码窗口中时才有效.如果代码窗口不可见或光标不在代码窗口中,则请用 g 命令代替.也可用 ec 命令将光标移到代码窗口中去,再用 here.here 命令有个快捷键 f7.将光标定位到你想让程序暂停的指令处,按下f7 ,程序将在此处设一个一次性断点.程序中其他非一次性的断点照样起作用. 无论是谁先弹出,都将清除 here 所下的一次性断点.和g命令一样,here 命令尽量采用除错寄存器drx, 只有用完时才用int 3 点评: 无. 命令: hwnd 作用: 显示窗口句柄的信息 语法: hwnd [-x][hwnd | [[level][process-name]] 用法: level : 窗口等级号码.0 是*.1 其次,等 等.窗口等级代表了父窗口和子窗口的 关系.-x : 显示窗口的冗余信息.hwnd : 窗口句柄.process-name: 任何当前进程名如果指定了窗口句柄,就无需指定等级, 进程名等其他参数,softice将显示所指定窗口句柄的信息.输出:class name : 此窗口所属类的名称或类的原子.window procedure: 窗口函数. 点评: 窗口句柄很有用的.(废话!) 命令: i 作用: 从输入/输出(i/o)端口读入数据 语法: i[size] port 用法: size: b 字节(默认);w 字;d 双字port: 端口地址.i 命令在大多数情况下是作一个i/o输入指令, 获取真实的硬件端口的数据. 在虚拟端口的情况下,取得真实值和应用程序所见到的虚拟值可能不同. 对于 21h 和a1h 端口,softice是例外,它不进行读取,而是返回so-ftice弹出时的值. 点评: 参见 o 命令.