《SoftICE命令中文解说.docx》由会员分享,可在线阅读,更多相关《SoftICE命令中文解说.docx(74页珍藏版)》请在课桌文档上搜索。
1、写在前面O-第一部分第二部分龈第四部分第五部分第六部分第七部分第八部分第九部分部分第11懿M12部分第13部分M14部分第15部分返回主页SoftICE命令中文解说之前笃Copyright(c)1999SoftICEforWin95是由NUMEGA公司出品的程序调试工具,它出色的性能深得用户的喜爱.但由于SoftICE的中文命令解释很少能够见得完全,所以我早有此想法,将其翻译成中文.把它纯粹当做一个好的DEBUGGER来看待,而不是一种秘密武器.最早是在武汉的JlNG1.EBBS上准备写一些有关SoftICE的文章,一个命令算做一封信,以换取YY,好买级别.很天真的想法!现在看起来,很好笑,最
2、后多亏CRACK区的蔡杰给了我很多很多YY,才让我那个极其幼稚的想法没有得到实现:)后来建立了个人网页,为了充实网页内容,旧话重提,一篇一篇写下来,到现在也算基本完成了.所有的命令均翻译自NUMEGA出品的SoftICECommandReferenceforSICE3.20,(PDF格式,NUMEGA网站有下载)少数地方增删.(不包括新版的SoftICE所添加的命令.)(共计,intoiceintoicef,16个文件,bg.gif,tri.gif,tr2.gif,3个图片)开头觉得好玩,写到一半的时侯变成一件苦差事了,好在有我亲爱的网友们给我的巨大的鼓励,让我没有放弃,在此一并感谢:蔡杰,文
3、岭,大兵,DingBoy,番外地,RuFeng吴朝相,SAC,梦晖,DBstar,dREAMtHEATER还有更多这里没有提到名字的朋友们!其实我这个网页也是说明一个道理,这个时代,没有什么不是自由的!(你要说是共享的也可以!)信息化的变革敲打着每家每户的门窗.人们的观念将随之产生翻天覆地的变化,那种小家气的作风,那种技术保守的时代,那种将教科书上的文章抄抄改头换面以换取稿费的日子将一去不复返.我们需要一个更明亮的未来,如果前辈没有给我们,那么就让我们自己来创造吧!末了,向所有的作者一样要加几句:由于本人水平有限,错误之处难免,恳请来信指正!我的邮箱:SPringwTiANWEi1999,9,
4、l安徽省淮南市mlookingforaJOB!1三前面第一部分-第二部分一部分第四部分第五部分第六部分第七部分第八部分第九部分第十部分MH部分M12部分第13部分M14部分M15部分返回主页SoftICEforWIN95中文命令解说(一)Copyright(c)1999E命令:田作在代码窗口中定位当前指令用:语法:用当代码窗口可见时,.命令(点命令)使得当前的CS:EIP法:所指向的指令可见,并且高亮显示.另外,此命令也把SoftICE从其他内存区域中切回原先弹出的内存区域.详见后面的ADDR命令.点当你在代码窗口中上下浏览时,有可能走得很远,那么评:这时一个.命令会让你在下一瞬间回到SOFT
5、lCE当前所在的CSiEIP处,再也用不着按PGUP,PGDOWN很多次了!O人命、令:田作计算一个表达式的值用:M.语?表达式用法:计算一个表达式的值.并以十六进制,十进制,带符号的十进制(0时有)和ASCII值多种形式显示计算结果.评.点一个非常高级的计算器,诸如46578*1999+ESI之类的计算不会再让你烦恼,另外由于可以显示ASCII,所以可以很方便地在各种数制之间察看.写入汇编代码语法:At用SICE内置的汇编器在内存中写入汇编代码.汇编器支持标准的80x86指令集.包括386,486,Pentium,Pentium-Pro,MMX,协处理器,新版的SICE还支持AMD的3DNo
6、w!,用PU,PIII的特有指令集.汇编将在A后的地址处开始.如法:果在A后没有加地址,那么汇编将在你上次汇编结束处开始.如果你是第一次键入A命令,且没有追加地址那么汇编将在当前CS:EIP处开始.另外,键入A命令后,在单独一行指令栏中键入USE16或USE32,将告诉汇编器是采用16位还是32位指令,默认是和当前的CS寄存器的模式一致.点评:O命令作用:语法:这是和DOS下DEBUG.EXE的用法一样的命令.一般改程序时,用A命令写入,再用CODEON(见稍后)命令看代码,记录原来的代码和改过的代码后再用工具软件如PCTOO1.SHACKVIEW之类查找修改.ADDR在SoftICE中显示或
7、是切换内存区域ADDR内存区域句柄I过程名用来察看某一个任务的私有内存区域,或是加参数内存区域句柄I过程名在SOftICE中切换某一任务的私有内存区域为当前可寻址的内存区域.一些参数的显示:.HAND1.E内存区域控制块的地址.PGTPTR每个任务私有页表的起址.TAB1.ES每个私有页表中的表项数目.MINADDR每个任务的线性地址的起址.MXDDR每个任务的线性地址的终址.MUTEXVMM用于页表管理的句柄.OWNER使用这块内存区域的实例的名字如果有多个相同名字的实例运行,ADDR带OWNER名字切换的话,切到表中的第一个有此NAME的实例所占的内存区域.所以带HAND1.E切换的话比较
8、精确.当用ADDR加参数后,可以用上面提到过的.命令来回到SoftICE弹出时所属的任务内存区域.这个牵涉到CPU的保护模式寻址方式和WINDOWS的内存管理,由分段机构产生的32位线性地址要经过分页机构评再转化为物理地址,这要牵涉到两个表的寻址.WINDOWS每次切换都将每个任务的私有页表拷贝到CR3寄存器所指的当前页表中.而ADDR所作的和WINDOWS所作的一样.所以当你在一个任务中弹出时,可以通过ADDR可以来看别的任务的私有内存区域.O命入PA1.TKEY令:作m改变用来呼叫SoftICE的热键用:语注A1.TKEYA1.T字母CTR1.字母SoftICE默认的热键为CTR1.+D,
9、用此命令可以将热键改法.用变,如果每次启动机器都要改,则可以把这条命令放入WINICE.DAT中.命令:作用:语法:这条命令是为了防止某些程序和SoftICE的热键相冲突而设的.如:A1.TKEYCTR1.S将热键改为CTR1.+SA1.TSCR切换SoftlCE的视屏输出.A1.TSCRONOF11如果你有双显示器,则这条命令将使SoftICE的窗口显用示在另一台单显上.注意,是老式的单显,不是VGA单显.法:实际上在启动WINICE时可用参数加强迫SoftICE用单显来显示.也可在WINICE.DAT中加入初始化串.在WIN95中用SoftICE自带的VIDEOSETUP可以很方便地设定.
10、例:A1.TSCRON将使输出改变到单显上.点这条命令将使SOftICE同一些老显卡兼容,也使调试变评:得方便,试想一台显示器显示正常的图像,另一台来显示跟踪屏幕,免去了按F4看原画面的步骤,在某些场合还是用得上的.以前的WDEB386调试器就非要双监视器才能工作.而SoftICE只要一台显示器就行了,这是个很大的进步,但为了和老传统兼容,它也提供了这个命令方便用户.O令:作用:语法:ANSWER自动监控通讯端口及将输出转移到MODEMANSWERoncom-portbaud-ratei=initoff此命令可以使SOftICE监控通讯端口,并将输出改变到一台远程的PC机上,此远程PC机必须运
11、行SERIA1.EXE(或SERIA1.32.EXE).当SoftlCE检测到远程PC上SERIA1.EXE发来的特定信息,就弹出,告诉你现在将连上远程用PC,然后再退出窗口,联接完成.一些参数:.COM-PORT串行通讯口,默认为COMl.BAUD-RATE1200,2400,4800,9600,19200,23040,28800,38400,57000,115000其中38400为默认波特率.I=INITMODEM的初始化字符串.占无,没有用过不知道:-(回到文章的开头1前面部分SoftICEforWIN95中文命令解说(二)Copyright(c)1999第二部分1部分第四部分命令:作用
12、:语法:BC清除一个或多个断点BClist*部分第六部分第七部分第八部分第九部分清除断点后,用B1.命令就看不到断点列表,且被清除的用断点不再起作用.法:参数:list:可以是将要清除的一系列断点,中间用空格或逗号隔开.* :清除所有的断点.亚,BC=BreakpointClearing第十部分MU部分M12部分第13部分M14部分第15邈返回主页命令:BD作用:使一个或多个断点失效语法:BDlist*使某个断点失效不同与BC命令的清除,暂时失效的断用点可以用BE命令来恢复.而BC命令是彻底清除.法:参数:list:可以是单个,也可以是一系列断点,中间用空格或逗号隔开.* :禁止所有的断点.点
13、、亚BD=BreakpointDisablling使一个或多个断点恢复有效BElistI*用来恢复前次用BD命令使之失效的断点.(每当新定用义断点或编辑断点时,系统自动将其置为有效)法:参数:list:可以是单个,也可以是一系列断点,中间用空格或逗号隔开.* :恢复所有的断点.点、正BE=Breakpointenablling在SoftICE历史数据库中显示或是选择曾经设过的断点用BH命令后,SoftICE将显示一个表,每一行是一个断点用,都是以前使用者曾经下过的断点,这时可以用上下光法:标键来定位,用INSERT键选择,再用ENTER键来确定.用ESC键取消.SoftICE只记录最近的32个
14、断点.而且只在WIN95正常退出后记录(记录到WINlCE.BRK中),这样就有一个问题.如果你在MSDOS.SYS配置中是BootGUI=I的话(即最正常的启动方式),当你SHUTDOWN机器时,控制并不回到SoftICE手中,就无法记录刚才的断点.这时只有改为BootGUI=O.注意:SoftlCE只在SHUTDOWN时记录,如果你用重新启动并切换.那是不行的.至少在我的V3.20是不行的.而且,如果你重新启动并切换.,再用EXlT命令想退回到WIN95,很容易出现VxD联接错.因为这样WINICE占并没有完全退出内存,用MEM.EXE可以看到这点.所以,SOftlCE的使用者最好在MSD
15、OS.SYS中将上面所说的Boo-tGUI置为0.如果怕这样用多重配置的话还要每次开机敲一个WIN,可以在AUTOEXEC.BAT中改动,加入WIN.COM.(可不要在WINICE.EXE后再加WIN.CoM!画蛇添足!)若用SoftICE次数不多的话,可以每次启动WINDOWS后,再重新启动并切换到MS-DOS方式,再打WINICE.EXE,这样也可以的.BH的好处是,可以省去纸笔,下次重调试这个程序时,不用再挖空心思想断点了.O显示当前所设的断点用B1.命令显示当前所有断点的序号(这个序号被BCBE法:BD等命令所用),类型,是否被禁止等信息.如果是被禁止的断点,会在序号后跟一个*号.比如
16、用上面提到的BD命令会产生这种效果)点、亚八、B1.=BreakpointlistingPTBO人命BMSG作m在WIN95的消息上下断点用:语BMSGwindow-handle1.begin-msgend-msg法:IFexpressionDOcommandl;command2;.window-handle:消息发向的窗口句柄begin-msg:消息标识字的范围,如果没有end-msg,那么只在begin-msg上下断点,否则在区域内所有消息都会被下断点end-msg:见上.IF-expression:表达式的值为真时,SoftICE才弹出.DOzzCommandl;command2当到达断
17、点时,执行的一系列SoftICE命令.1.:表示不弹出SOftlCE,而是在命令窗口中记录WIN95消息.上面只有窗口句柄是必需的,其他都是可选项.如果没有指定在哪个MSG上下断点,那么所有发向该窗口的消息都会被拦截.窗口句柄可以用HWND命令来观看,MSG标识符可以用WSG命令来察看,可以是16进制的数,也可以用习惯的书写方式,如:WMREATE.SoftICE弹出后,会停在处理该消息的过程的用一句代码上.点BMSG=(set)BreakpointonMeSsaGe评:WINDOWS本身是由消息驱动的,所以跟踪一个消息会得到相当底层的答案,我主页上一篇修改RICHWIN4.3的文章就是一个例
18、子.O编辑一个已存在的断点.BPEindexJWmberindex_number:断点的序号,用B1.命令可以看到.用用BPE命令可以很方便地修改一个已经存在的断点,但法:要注意一点:BPE在执行时,会先将你所要修改的断点清除,然后再将改过的使能,如果你在修改时按ESC键退出修改,那么原先的断点也就不存在了,修改错误的结果也是一样的.原先的断点消失.整前面第一部分第二部分第三部分,第四评.晶参见后面的BPT命令.回到文章的开头部分第五部分第六部分第七部分第八邈第九部分l_Jz部分M11部分第12部分M13部分第14部分M15部分返回主页用法:int-11umber:中断向量号,从O到FFHIF
19、expression:条件表达式,只有条件为真时,Sof-tICE才在断点处弹出Docommand:当SlCE弹出时,自动执行的一些命令.当在硬中断和CPU异常出错的向量上下断点时,SoftICE会在处理这个中断的过程的第一条语句时弹出.而软件中断则停在INTXX处.注意:BPlNT只对由中断描述符表中的中断起作用(WIN95).如果在一个DOS虚拟机(DOS窗口)中下此种断点,控制是由保护模式转到虚拟机的中断向量表中去.这时如果说停在INTXXH处,你用F8跟下去,是一下子看不到对这个中断的实模式处理过程的,要走很远,这时可用:G$0:int-number*4来一下子走到实模式处的处理过程.
20、注意!SoftICE30的命令手册(英文版PDF格式在此处写错了!把$写成&了!)($意思是告诉SoftICE后跟实模式占的段.以后有专门论及这些符号的文章.)如果你是在DOS窗口中用命令行调一个东西,这时G0:intno*4也可以,这时默认的SE1.ECTOR就是实模式,选择符存在.但如果在EXP1.ORER中直接双击一个程序,拿INT2IH来说,一开头是在KERNE1.中,就非得用$不行了!另外:由于有了IF子句,可以很方便地下各种INTXX断点,比如在文件打开中断功能上下断点bpInt21ifah=3dO田在输入输出端口上下断点用:语BPIO-hportverbIFexpression法
21、:DOcommandl;command2;.用法:port:端口号verb:进行什么样的操作时弹出,R为读;W为写;RW为读写IFexpression:条件表达式,只有条件为真时,Sof-tICE才在断点处弹出Docommand:当SICE弹出时,自动执行的一些命令.-h:用硬件除错寄存器在VXD中下断点,只在PENTlUM级的芯片上才行当SoftICE弹出时,CS:EIP停在执行I/O操作的下一条指令处.如果不带参数verb,默认为RW.注意:在WlN95中,若不带-h参数,则只能在RING3中下断,若要跟VXD和VMM的I/O操作,请加-h.WIN95本身用VXD挂了很多I/O操作,用TS
22、S可以看到可以参看后面要讲的TSS命令.IF在内存单元上下断点用:语BPMsizeaddressverbdebug-regIFexpression法:DOcommandl;command2;.size:内存单元大小,B为字节(默认);W为字;D为双字.verb:所进行的操作,R为读;W为写;RW为读写(默认);X为执行.debug-reg:除错寄存器,DRO,DRl,DR2,DR3.IFexpression:条件表达式,只有条件为真时,Sof-tICE才在断点处弹出.Docommand:当SlCE弹出时,自动执行的一些命令.用当verb为R,W,RW时,一旦弹出,SoftICE停在刚才发生法:
23、内存操作的后一条指令处.为X时,停在将要执行的指令处.一般没有必要,不要带debug-reg参数,SoftICE一开始是自动带DR3的,以后按顺序为2,1,0只有当你调试一个DEBUGGER时,而此DEBUGGER也用到了DRx,才需特别指定一个防止冲突.BPM断点如果下在(400000-7FFFFFFF)内,那么只有你下断点时当前的可寻址区域(见ADDR的点评)被激活才能发生中断.别的不行.但如果断点下在D1.1.中,这个D1.1.在多个地址区域内都存在,那么在这多个地址区域内都可能发生中断,简单的例子如KERNE1.32.D1.1.另外,size参数要紧跟BPM写,成BPMD,BPMW之类
24、.P点BPM用了DR3-DR0寄存器,所以最多只能设四个断点.在一个内存范围上下断点用:语BPRstart-addressend-addressverbIFexpression法:DOcommandl;COrnmand2;.”用法:start-address:起始地址end-address:终止地址verb:R读;W写;RW读写;T回溯跟踪指令;TW回溯跟踪内存写IFexpression:条件表达式,只有条件为真时,Sof-tICE才在断点处弹出Docommand:当SICE弹出时,自动执行的一些命令.BPR用来在一段内存区域上下断点它没有X参数,但可用R参数代替.T,TW是记录回溯跟踪的参数
25、,具体可见TRACE命令.BPR有时会极大地降低系统效能,因为所有对断点所在页的内存操作都会被SoftlCE截获分析.如果程序中用到频繁的内存操作,机器就会相当慢.当条件满足,SoftICE弹出时,CSiEIP停在发生内存操作的那条指令上BPR断点是下在当前被激活的页表上,如果你下的RANGE在物理4MB以下,断点就会在各虚拟机中,这样,BPR就对1.DT,GDT,IDTs,页表本身不起作用.另夕卜,VMM中0级堆栈和严重(?)内存区域(CritiCalareas)也不允许下BPR,很有可能死机.在95中,BPR只能用于RING3,所以对RING0的VXD无用.(v3.20)点BPR有时真的很
26、慢,机器就象死了一样,原因上面都说评:T.所以在知道内存单元的时侯最好用BPM,只有无路可走才用BPR的范围来试试.(当然也有非要用BPR不可的地方)O作用:语法:BPRW在某个WINDOWS程序或代码段所在的内存区域上下范围断点BPRWmodule-nameselectorverbIFexpressionDOcommandl;command2;.module-nameselectorverbWINDOWS程序的模块名选择符R读;W写;RW读写;T回溯跟踪指令JW回溯跟踪内存写用法:IFexpression:条件表达式,只有条件为真“时,Sof-tICE才在断点处弹出Docommand:当Sl
27、CE弹出时,自动执行的一些命令.BPRW是个在WIN程序的一个或多个可执行模块上下断点的比较便捷的方法实际上它就是BPR,不信你可以下一个,再用B1.看看.它只不过比BPR更有目的性.用HEAP命令可以帮助使用者看module-name和selector.BPRW不用你再费心找范围.BPRW在回溯跟踪时很有用.另外,BPRW也是不能用于RlNG0.而且在跟T参数或和CSIP命令配合使用时有可能会很慢.RW参数是缺省值BPRW有时侯很管用的,因为你有可能不知道某个程序在何时在内存中参与运行,用BPRW就可以在这个程序一运行时就弹出.而且可以分不同的代码段.O以前次的断点为模板.设定新的断点.BP
28、Tbreakpointjnde用breakpoint_index:断点序号.(用B1.可以看到)法:BPT是以前次的断点为蓝本,进行修改,成为新的断点.它为使用者定新的断点提供了方便.参见第二部分的BPE命令BPX在可执行语句上设定(或清除)断点BPXaddressIFexpressionDOcommand】;COmmand2;.”address:断点所在的线性地址IFexpression:条件表达式,只有条件为“真时,Sof-tICE才在断点处弹出.Docommand:当SICE弹出时,自动执行的一些命令.用法:BPX用来在指令处下断点,程序一旦执行到此,SoftICE就会弹出.当光标在代码
29、窗口中时,直接打入BPX就会在光标所在语句处设断点,再打BPX就取消.当光标不在代码窗口中时,BPX必须跟参数(地址).地址为标准的选择符:偏移,如果只输入偏移,当前的CS值默认为选择符.BPX实际上是在你下的断点处加一个INT3指令,到这条指令时就弹出来.这使得可以在一个程序中下多个断点,而不必要使用少得可怜的寄存器.但当你在ROM中设断点时,SoftICE自动用断点寄存器来设断.你也可以用BPM命令的X参数来强迫SoftICE用断点寄存器(DRX)来设断.BPX也可用16位代码的模块名来作地址参数,这样,模块中每个出口函数都被设了断点.BPX最多设256个断点.(V3.20)BPX有个快捷
30、键F9,当光标在代码窗口中时,按F9就是设定(取消).BPX可能是用得最多的断点了.有些ANTl-DEBUGGER的程序就利用INT3来作文章,看了上面的东西我想你可以闪过了吧!(不包括用DRx做文章的噢!)O命令:作用:语法:BSTAT显示某个断点的状态BSTATbreakpoint-indexbreakpoint-index:断点的序号,用B1.命令可以看到用BSTAT来显示某个断点的状态,各种统计参数.BP#:断点的序号.若前面有*,表示断点被禁止在TOtal栏目中:Hits:SoftICE每经过一次断点,计数+1Breaks:在IFexpression子句为真的情况下,SoftICE就
31、会产生动作,要么弹此要么记录在内存中,不管怎样,计数+1Popups:在Breaks中SoftICE弹出的次数1.ogged:在Breaks中SICE将情况记录到内存中的次数用法:Misses:在IFexpression子句为FaISe的情况下,SICE虽然经过这个断点但没有弹出行动的次数Errors:由于IF子句中内存变量的问题或其他原因产生的错误的次数.比如跟一个C写的程序,用变量mysymbol=l”来设断,而在断点处my-symbol这个变量所在的内存由于释放或其他操作而无法访问,就会产生Error.在Current栏目中:Hits:当前的在IF子句计算为TrUe的情况下,但由于BPC
32、OUNT宏所定的次数未到而记录下的累计数Misses:当前在IF子句计算为FaISe的情况下,且(或)BPCOUNT宏所定的次数未到而记录下的累计数在杂项(misc)栏目中:Status:SoftICE内部对最近一次断点进行计算的状态代码.(错误代码)如果为0的话,表示没有错.Scode:SoftlCE最近一个内部状态代码,如果为0的话表示没有Errors.Cond.:如果断点带有附加判断(即有IFeXPreSSiOn),则为Yes,否则为NoAction:如果断点带有附加的动作(即有Docommand),则为Yes,否则为No点评:无回到文章的开头SoftICEforWIN95中文命令解说(
33、四)Copyright(c)1999写在前面J=部分第二部分部分第四部别第五部分第六部分第七部分第八部分第九部分第十部分第11部分M12部分M13部分M14部分M15部分返回主页命令:作用:语法:用法:点评:命令:作用:语法:用法:C比较内存中两块区域的内容Cstart-addressIlengthstart-address-2start-addresslengthstart-address_2第一块内存区域的开始地址字节长度第二块内存区域的开始地址如果比较结果不同,将显示不同的部分和它们的地址C1.ASS显示WINDOWS的类的信息C1.ASS-xtask-nametask-name:当前的
34、正在机器中运行的16或32位任务名-X:显示C1.ASS(类)的完整结构.Windows95在一个16位的模块中维护着标准的WINDOWS类.而且,它为每个进程分别维护着除标准类以外的类.每当程序注册一个新的WINDOWS类时,信息被放入以下两个地方中的一个:1 .任务全局列表放该进程所有模块都可以存取的类(用CS_G1.OBA1.风格)2 .任务私有列表放只有申请该类的模块才能存取的类.当任何一个进程想做一个WINDOWS标准类的话,如1.IST-BOX,它会在任务特定的系统冗余列表中得到一个拷贝,这样就不会影响到WINDOWS本身.所以,当用C1.ASS命令时,可以看到以下3个分类:(用虚
35、线隔开).任务私有列表.任务全局列表.系统冗余列表输出的各项参数:ClassHandle:类句柄.ClassName:类的名字,如果注册时没有名字,OwnerWindowProcedureStyle那么显示原子名注册此类的模块处理该类的过程类的风格清除命令窗口中的字符C1.SC1.S清屏命令,将清除命令窗口中显示的数据,并定位光标到命令窗口的左上角.(如果光标原先就在命令窗口中的话)显示指令码CODEONIOFFCODEON将显示指令的机器码CODEOFF将不显示指令的机器码CODE不带参数将显示当前是ON还是OFF非常有用的,由于安装SoftICE时默认为CODEOFF,所以命令:作用:语法
36、:有必要打开,看到了机器码就可以记录下来,以便修改.CO1.OR显示或修改屏幕颜色CO1.ORnormalboldreversehelplinenormal:普通字符的前/背景颜色,默认为07h(灰/黑)bold:粗体字符的前/背景颜色,默认为0Fh(白/黑)reverse:反象显示的字符的前/背景颜色,默认为71h(蓝/灰)help:HE1.P命令提示条的前/背景颜色,默认为30h(黑/青)line:S;tICE各个窗口分界线的前/背景颜色,默认为02(绿/黑)这些参数采用CGA的标准格式,即0-3位为前景色,4-6位为背景色,这样就有16种前景色,8种背景色:0黑;1蓝;2绿;3青;4红;
37、5品红;6棕;7灰;8深灰;9浅蓝;A浅绿;B淡青;C浅红;D淡品红;E黄;F白默认的颜色已经很好了,不要改得乱七八糟噢!显示寄存器内容CPU-i用法:CPU命令显示所有的CPU寄存器的内容.(普通,控制,除错,段)占、亚.不用再装其他检测CPU的小软件了:)l)命CSIPQ6位程序才有用)X作田.作为所有断点设定一个界限(CS:日P在其内)(16位程序)u语CSIPoffInotstart-addressend-addressWindows-module-name用法:off:关闭CS:EIP的界限检查not:在所定义的模块之外的区域断start-addressend-addressWind
38、ow-modu1e-name点才有效窗存区域起始地址内存区域结束地址用WlNDOWS模块所在区域来代替地址界限.CSIP不带参数将显示当前状态.对于32位程序,这个命令没有用.请用带IF参数的断点命令代替.当然WIN95下也有一些老的16位程序(16位模块,这时CSlP就能派上用场.点评:O命令:作用:无D显示某内存区域的内容语法:DsizeaddressIlengthsize:B字节;W字;D双字;S短实型;1.长实型;TIob长实型D命令在所指定的内存区域开始显示指定长度的内存单元内容.格式将根据SiZe来变.对于双字类型,将分两种情况:用1.如果指定地址为32位的段,格式为32bytes
39、的16进制值(即8位16进制值)2.如果指定地址为16位的段,则格式为16:16指针的形式(即4:4位16进制值)如果没有指定地址,D命令将继上次命令后的地址开始显示.如果数据窗口可见,则结果在数据窗口中显示,否则显示在命令窗口中.但若用了参数1.和长度,则结果不论数据窗口可见还是不可见,都显示在命令窗口中.回到文章的开头9前面第一部分第二部分第三命令:作用:SoftICEforWIN95中文命令解说(五)Copyright(c)1999DATA显示另一个数据窗口部分第四部分第五部分,第六部分第七邈第八部分第九部分第十部分第11部分M12部分M13部分M14部分M15部分返回iS语法:DATA
40、window-number命令:作用:语法:命令:作用:语法:用法:window-number:所要选择的窗口号,0,1,2,3用SoftICE最多支持4个数据窗口.每一个窗口可以独立按法:自己的格式显示数据.但同一时刻只能显示一个窗口.如果用DATA窗口不带任何参数,将按0,1,2,3的次序显示各个窗口中的内容.在数据窗口的右上角的横线上有窗口序号的提示.M晶可以很方便地对多个目标的进行观察DEX在数据窗口中显示(或赋予)某个表达式DEXdata-window-numberexpressiondata-WindoW-number:即DATA命令中所讲的0,1,2,3号数据窗口DEX命令可以为
41、每一个数据窗口赋予一个表达式,每次SOftlCE弹出该表达式就被重新计算,并显示在相应的数据窗口中.这对某些指针非常有用.指针可以放在寄存器中或是在内存变量中,如下二例:用法:DEXoSS:ESP每次SOftICE弹出,就在0号数据窗口中显示堆栈的值DEX1pointervariable每次SoftlCE弹出,就在1号窗口中显示由pointervariable指针所指的内存单元的内容.(操作符后有论述).用DEX不带参数将显示当前在各个数据窗口中所赋予的表达式.用DEXdata-WindOW-number(不跟表达式)将取消前次赋予窗口的表达式.相当于自动化的D命令.DIA1.将控制台重定向到
42、MODEMDIA1.oncom-portbaud-ratei=init-stringp=numberoffCOM-PORT:串行通讯口,默认为COMlBAUD-RATE:1200,2400,4800,9600,19200,23040,28800,38400(默认),57000,115000I=INIT:MODEM的初始化字符串.p=number:电话号码DIA1.命令通过拨号与远程电脑取得联系,远程电脑必需正在运行SERIA1.EXE且在等待对方拨号.一旦联接完成SoftICE的的输入将来自远程计算机,输出也重定向到远程计算机.本地计算机除了激活的热键外不接收其他对SoftICE的输入.当远程
43、机结束调试后,用DIA1.OFF来挂断MODEM.评:前次的ANSWER命令是等远程机拨号过来,而DIA1.是拨过去.有机会试一下这两个命令就好了.O修改内存单元Esizeaddressdata-listsize:B字节;W字;D双字;S短实型;1.长实型;T10字节的实型data-list:要修改的值,(和SiZe类型一致)可用单引用号或双引号来输入字符串.法:如果键入没有data-list参数的E命令,光标将切换到数据窗口并定位到所指定的内存单元,等待使用者相应的操作.如果加跟data-list参数,则内存单元立刻被修改为所指定的值.数据窗口当前如果不可见,则键入E命令将使之可见.在修改中可以用TAB键在ASCII与十六进制方式之间切换.命令:作用:语法:点工EC进入或退出代码窗口EC用法:EC命令使得光标在代码窗口和命令窗口之间切换.如果代码窗口当前不可见,则键入EC命令后将自动可见当光标在代码窗口中时,使用者可以利用SOftlCE的几项快捷功能:1 .可以在光标处设断点,直接打BPX不跟地址,更方便的是按F9快捷键,再执行一遍将清除当前所在的断点2 .可以用HERE命令来设个临时断点,所谓临时断点好象DEBUG中的G命令,也可用F7快捷键来实现.3 .在代码窗口中时,也可用上下光标键,PageUp,PageDn来翻页,上下浏览.另外,当用户调试源文件时,可以用:Ctr