SOFT-ICE命令详解⑵
F-0
命令:F
作用填充某一块内存区域
语法 Faddress I lengthdata-l ist
用法length:字节长度data-l ist:所要填的数据.可以是用单引号或双引号括起來的字符串执行F命令将向所指定的内存区域填充length长度的数据如果数据不够长度将重复数据直到达到长度为止.
点评:无
命令:FA U LTS
作用打开或关闭错误跟踪功能
语法:FA U LTS[o n | off]
用法
FAULTS命令将打开或关闭SoftICE的错误跟踪功能.不加参数将显示当前的开关状态.
点评
由于SoftICE做为一个DEBUGGERS ULTS默认为ON,所以一旦CPU有非法指令,SoftlCE就会不停地弹出让你知道错在哪里实际在工作中这样的情况如果太频繁地发生,最好将其置为OFF.我一般将其置为ON,当发生非法指令时再手工置为OFF.你也可以在WINICE.DAT中一开始就置其为OFF.初学者一般不知道有这个命令一旦发生非法指令,除了按R键只有傻站着. ・
命令:FILE
作用显示或切换当前源文件
#语法:FILE [fi le-name]
用法
FILE命令常用来辅助在源文件川没有符号表的地方下断点.用FILE命令将所需的源文件显示在代码窗口中用SS命令查找一下再用BPX或F9来下断点.如果加文件名参数则所选的文件变成当前文件并被显示在代码窗口中.如果没有文件名参数,则显示当前的源文件如果当前有的话
•如果加* 则列岀当前符号表中所有源文件.在WIN95中用FILE加文件名同时也切换内存地址内容.
点评
- •般用于高级编程工具的辅助调试如C语言等.不过这些编程工具已经内置DEBUGGER,所以就看个人习惯了.
命令:FKEY
作用显示或修改当前快捷键定义
语法 FKE Y[function-keystring]
用法function-k ey:快捷键
F1-F12:
SF1-SF12:Shift键加Fl -F12
CF l-CF12:Ctrl键加Fl -Fl 2
AF1-AF12:Alt键加F1-F12string:一个或多个SoftICE的命令.
命令前加八表示在按快捷键时不显示相应的命令内容.命令后加;代表冋车.FKEY后只跟function-key不跟string,将取消该快捷定义.除了用F KEY命令可以定义快捷键外用SoftICE的L OADER也能做到这一点默认快捷键清单
Fl=h; F2=Awr;
F3=Asrc; F4=Ars;
F5=Ax; F6=Aec;
F7=Ahere;F8=At;
F9=Ab px; F10=Ap;
F 11=AG@SS:ES P; F12=Ap re t;
SF3=Aforma t;CF8=AXT;
C F9=TRACE OFF;CF10=AXP;
CF11=SHOWB;CF12=TRACEB;
AFl=Awr;AF 2=Awd;
AF3=Aw c;AF4=Aww;
A F5=CLS;AF8=AXT R;
AFl l=Adddataaddr->0;
AF12=Adddataaddr->4;
CFl=altscroff; l ines 60;wc32;wd 8;
CF2=Awr;Aw d;Awc;
点评:无
命令:F LA S H
作用:在P和T命令执行过程中刷新Windows屏幕
语法:FLASH[on | off]
用法
如果将FLASH置为ON则在执行T或P命令吋,SoftICE将刷新一下Windows屏幕这在调试一个直接对显存操作的程序时特别有用.在一般情况下当用P命令跨过一个CALL时而此CALL 又调用显示驱动程序时,So f-tICE才重新刷新屏幕.FLASH命令不带参数将显示当前状态.默认FLASH OFF.
点评:无
命令:FORMAT
作用改变数据窗口的显示格式
语法:FORM AT
用法
FORMAT命令用來改变数据窗口的显示格式.SoftICE冇快捷键Shift-F3來代替FORMAT.显示格式将按字节字双字短实型,长实型,10字节实型循环.
点评参见D,DATA命令.
命令:G
作用执行到某一地址
语法G[=start-addre ss] [break-a ddress]
用法
=s tart-address :开始地址break-address :中断地址
G命令不带参数将从Soft ICE屮返回.如果带参数break-ad dress,则Softl CE将在所指定的地址处下一个一次性断点如果带=start-addre ss,SoftlCE将从指定的地址处开始执行否则从当前CS:EIP 处执行.程序中其他的断点非G命令下的断点照样起作用.无论是谁先弹115,都将清除G命令所下的一次性断点.
G命令不带参数类似于X命令.G命令在Windows95中使用除错寄存器如果除错寄存器用完则用I NT 3.
点评由于G命令缺省用DRx,所以有吋可以对付一些在INT 3上作手脚的程序.
命令:GDT
作用显示全局描述符表
语法:GDT[selector]
用法selector:指定GDT选择器
GDT命令将显示全局描述符表的内容.如果加选择符参数则只显示此选择符所指的描述符.输出:GDT的线性基址和长度将显示在输出数据的顶行.
输出数据的每一行内容的说明value:最低两位即描述符特权级type:描述符类型如下
Codel6:16位代码描述符
Datal6:16位数据描述符
Code32:32位代码描述符
Data32:32位数据描述符
LDT:局部描述符表描述符
TSS32:32位任务状态段描述符
TSS16: 16位任务状态段描述符
Cal lG32:32位调用门描述符
Cal lG16: 16位调用门描述符
TaskG 32:32位任务门描述符
TaskG16:16位任务门描述符
TrapG 32:32位陷腓门描述符
TrapG16: 16位陷月井门描述符lntG32:32位中断门描述符lntG16: 16位中断门描述符
Reserved:保留的描述符base:描述符中的段基址l imit:描述符中的段界限
DPL:描述符特权级0123present bit:P或NP表示该段是否在内存中segme ntattributes:段特性
RW:数据段可读
R0:数据段只读
RE:代码段可读可执行
E0:代码段只可执行
B:TSS 任务状态段忙置位
ED:数据扩展方式
参见LDT.
点评
这段翻译并不完全用PD F手册上的.如“selector11原指选择符器 用来指向描述符表屮的描述符而PDF-Ptype的说明全用到selector说的意思虽是一样但和别的文献矛盾故认为不妥将其翻译成descriptor即描述符.实际上可以看出,一个选择符指向一个描述符两者是一致的•描述符类型实际上也就是指向它的选择
符类型.
命令:GENINT
作用强行产生一个中断
语法GENI NT[nmi I intl | int3 | interrupt-number]
用法inte rrupt-number:对Windows95来说,0・5fh
GENINT强行产生一个中断用于SoftICE和别的DEBUGGER协作的时侯如:GENINTnmi将使SoftICE将控制返还给CodeView ForDos. 对其他DEBUGGER,请尝试O,1,2,3GE NINT还用于测试中断例程.但SoftICE不检测一个中断是否有效它只是摹拟中断的产生,所以当用此命令时要注意相应的中断例程是否存在.
点评:无
命令:H
作用显示帮助信息
语法:H[command]
用法
键入H命令不带任何参数将显示所有命令的帮助.要获得详细的帮助在H后加命令名就可.详细的帮助将包括命令的描述命令的语法和例子.
点评
H命令可以很方便地帮助使用者查询SoftICE的命令.实际上在命令窗口的底部有一个状态条,它提供的实吋帮助也是很有用的.
命令:HBOOT
作用:系统重新启动
语法:H BOOT
用法
HBOOT将重新启动计算机.等同于按Ctrl+Alt+Del组合键.HBOOT—般都能成功只有特殊情况下某些插卡需要重加电才用机器上的RES ET或POWER键.
点评
HBOOT让我想到两件事
1,以前学微机时老师老是盯着我们唯恐我们乱启动机器•想起来真是不寒而栗好象是我们的过错一样.可机器明明死了嘛不重新启动怎么行
2 有大部分品牌机上没有R ESET键死机就按POWER键按得老板倒抽凉气. :
命令:HEAP
作用显示Win dows全局堆
语法 H EAP-L[free |module-na me | selecto r]
用法
-L :只显示含局部堆的全局堆入口module-name:模块名.selector: LDT选择符
HEAPFREE将显示空闲的全局堆.
HEAP跟模块名将只显示由指定的模块拥有的全局堆入口. HEAP跟LDT选择符将只显示与此选择符相应的全局堆入口. HEAP不带参数将显示整个全局堆的情况.
输出selectororhandle:选择符符或句柄.a ddress :32位虚拟地址size :堆的大小字节modulename :模块名type :全局堆的类型code:不可丢弃的代码段code D:可丢弃的代码段
Data :数据段
ModuleDB :模块数据基础段
TaskDB :任务数据基础段
BurgerM: ”三明治”僦是堆本身Al loc:被动态分配的内存
Resource:Windows资源
额外信息
如果某全局堆的入口是代码段或数据段则会显示该段在.EXE中的段号.如果某全局堆的入口是Wind ows资源则会附加显示如下资源类型
UserDef 用八自定义 ;lcon 图标 String字符串 ;Accel 快捷键 lconGrp 图标组 ;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缺省系统堆.
.进程用H eapCreate ^请的私有堆.
.两个由VM M产生的Ring-0级的堆.第一个是换页锁定的堆,第二个是可换页的堆. •一个属于所有虚拟机的Ri ng-0堆.
如果加上进程名,SoftlCE将显示所有该进程的缺省堆且地址内容也切换到该进程中.如果加上堆的基地址而不是进程名,SoftlCE将显示该进程的非缺省堆.
W IN DOWS95的调试版还提供了额外的调试信息想要用SoftICE看到这些信息必须.对于KERNEL32Ring-0堆必须安装有SDK除错版.
.对于VMM Ring-0堆必须安装VMM的DDK除错版.
输出信息HEAP32 :
HeapBase:堆的基址
MaxSize :堆可增长的最大范围在此范围内堆无需再创建一个新段.
Committe d:以下字节为单位当前存在于物理内存中的被保证的内存大小
Segments :堆中段的数量.当堆增长超出段所能容纳的范圉就建立一个新段
Ty pe :堆的类型
Privat e:由应用程序建立的R ing-3堆System:KERNEL32建立的Ring-3堆
RingO:VMM建立的Ring-0堆
VMM##: Ft]VMM建立的为特定虚拟机存储数据的堆.
输出信息H EAP32带参数
A ddress:堆元素的地址.
Size:以字节为单位堆元素的长度.
F ree :如果堆元素是空闲的块则会显示“FR EE舄否则不显示.
点评:在SoftlCEv3.20实际操作上和手册说的屮有些许不同.
命令:HERE
作用:运行到当前光标所在行
语法:HERE
用法
HERE命令让程序一直走到光标所在行再停下来.注意
只有当光标在代码窗口中吋才有效.如果代码窗口不可见或光标不在代码窗口中则请用G命令代替•也可用EC命令将光标移到代码窗口中去再用HERE •
HERE命令有个快捷键F7.将光标定位到你想让程序暂停的指令处按下F7 程序将在此处设一个一次性断点.程序屮其他非一次性的断点照样起作用.无论是谁先弹出都将清除HERE所下的一次性断点.和G命令一样,HERE命令尽量釆用除错寄存器DRx,只有用完时才用INT3
点评:无.
命令:HWND
作用显示窗口句柄的信息
语法:HWND[-x] [hwnd | [[level] [pro cess-name]]
用法level :窗口等级号码.0是最高级.1其次等等.窗口等级代表了父窗口和子窗口的关系.-x :显示窗口的兀余信息.hwnd :窗口句柄.process -name:任何当前进程名
如果指定了窗口句柄就无需指定等级进程名等其他参数,SoftIC E将显示所指定窗口句柄的信息.
输出
ClassName:此窗口所屈类的名称或类的原子.
Wi ndow Procedu re:窗口函数.
点评:窗口句柄很有用的• 废话!
命令: I
作用从输入/输出I/O端口读入数据
语法 I [size]port
用法size:B字节默认 ;W字;D双字p o rt:端口地址.
I命令在大多数情况下是作一个I/O输入指令获取真实的硬件端口的数据.在虚拟端口的情况下,取得真实值和应用程序所见到的虚拟值可能不同.对于21h和Alh端口,SoftlCE是例外,它不进行读取而是返冋So-ftICE弹出时的值.
点评:参见0命令.
命令 I1HERE
作用遇到内嵌的INT1指令时激活Softl CE
语法 I1HERE [on | off]
用法
I1HERE命令使SoftICE在遇到程序中内嵌的INT 1指令时弹出. I1HERE在调试程序时需在某处暂停吋特别有用.在SoftICE弹出之前,SoftICE会检查当前是否有一条IN T1指令在程序中.如果没有的话,SoftICE将不弹出.在程序要暂停的指令之前加一句INT 1就能做到这一点.Sof tICE弹出时,EIP 会停在INT1的下一条指令后.
I1HERE不带参数将显示当前I1HE RE的状态.缺省为OFF I1HERE在与如Bo undsChecker之类的调试工具分工协作时很有用因为Bounds Checker用到INT 3,为了防止冲突应使用INT 1.另外,V MM,Windows内存管理的VxD,在Wind ows出现某些严重错误时会在严重错误返回前执行一个INT 1指令•如果此时I1HERE为ON时你就能跟踪这类错误•如由VMM因换页错误而产生INT1时寄存
器的值如下
.EAX二错误地址.
• ESI指向一个ASCI I字符串信息 .
.EBP指向一个CRS 在DDK的VMM. INC中定义的客户寄存器结构
点评
基础信息: INT1实际上是单步屮断的处理例程.CPU在检测到TP标志为1时TP是由DEBUGGER 设的 就自动进行这一例程.DEBUGGER们挂接这个中断例程进行一些诸如显示当前寄存器值等操作并等待用户进一步的指令.在程序中直接用INT1指令也能达到效果.SoftICE不象DOS下的DEBUG.EXE,一碰到INT1就中断缺省是不屮断的,只有当I1HERE为ON时才屮断.命令 I3HERE
作用在遇到INT3指令时激活SoftICE
语法: I3HERE [on | off]
用法
I 3HERE0N将使SoftICE每碰到一个INT3时都弹出这在调试程序时需要在某处暂停特别有用.在你需要暂停的指令之前加一个INT3就行.如果你是编W IND0WS程序加个函数DebugBreak .这个函数也执行一个I NT3.
I3HERE不带参数将显示当前•状态.请参见I1HERE.
点评
基础信息 INT3是断点中断处理例程.也被DEBUGGER们挂接显示寄存器值给出一些信息,并等待用户下一步操作.DEBUGGER在下断点时将断点处的指令替换成INT3,把替换下的指令保存在执行完例程后再恢复原先保存的指令修改堆栈屮的断点地址使程序得以继续. DOS下的老DEBUG.EXE当遇到程序屮的INT3指令时会进行同样的操作也修改堆栈中的断点地址所以IP 又停在那条INT3上,如果你打入G,程序将一直停在此处这吋改一下IP就可以了.
命令: IDT
作用显示中断描述符表
语法: IDT[i nterrupt-num ber]
用法inter rupt-number:所要显示的中断号IDT命令读取中断描述符表寄存器的值获得表基址然后显示屮断描述符表的内容. IDT命令不带参数将显示所有屮断的情况如果带屮断号,则只显示相应
的入口.输出参数如下interrupt n umber:0-05f h的中断号.interr upt type:中断类型如下:
Cal lG32:32位调用门.
Cal lG 16:16位调用门. TaskG:任务门.
TrapG16:16位陷月井门.
TrapG32:32位陷腓门. lntG32:32位中断门. lntG16:16位中断门.add ress : 选择符:偏移量形式的地址.selector's DPL :选择符的描述符特权级,04,2,3present bit:P或NP,表示该描述符是否在内存屮.
Owne r+Offset:符号名或拥有者名,和在它们中的偏移.
点评:参见G DTZLDT.
命令:L DT
作用显示局部描述符表
语法:LDT[selector]
用法selector:指定LDT选择符LDT命令将显示局部描述符表的内容.SoftICE先读取局部描述符表寄存器的值再定位描述符表.如果局部描述符表不存在会显示一个错误信息•如果指定选择符则只显示该选择符所指向的描述符.如果指定的选择符是一个全局选择符则SoftIC E将自动显示该全局选择符所指的描述符.
输出:LDT的线性基址和长度将显示在输出数据的顶行输出数据的每一行内容的说明value:最低两位即描述符特权级type :描述符类型如下
Codel6: 16位代码描述符
Datal6:16位数据描述符
Co de32:32位代码描述符
Data32:32位数据描述符
Cal lG32:32位调用门描述符
Cal lG16: 16位调用门描述符
TaskG32:32位任务门描述符
TaskG16:16位任务门描述符
Trap G32:32位陷月井门描述符
TrapG16: 16位陷月井门描述符
IntG 32:32位中断门描述符lntG16: 16位中断门描述符
Rese rved:保留的描述符base:描述符中的段基址l imit:描述符中的段界限
DPL:描述符特权级,0,1,2,3
不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服务器。根据不同的机房,价格也是不一样的。大带宽、不限流量比较适合建站、数据备份、做下载、做流媒体、做CDN等多种业务。 官方网站:https://www.sharktech.net 付款方式:比特币、信用卡、PayPal、支付宝、西联汇款 以最贵的洛杉矶机器为例,配置表如...
最近我们是不是在讨论较多的是关于K12教育的问题,培训机构由于资本的介入确实让家长更为焦虑,对于这样的整改我们还是很支持的。实际上,在云服务器市场中,我们也看到内卷和资本的力量,各大云服务商竞争也是相当激烈,更不用说个人和小公司服务商日子确实不好过。今天有看到UCloud发布的夏季促销活动,直接提前和双十一保价挂钩。这就是说,人家直接在暑假的时候就上线双十一的活动。早年的双十一活动会提前一周到十天...
百驰云成立于2017年,是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。百驰云提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以及国际顶尖品牌硬件。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端...