APP资源网_中文资源在线官网_А天堂中文官网_中文在线APP资源下载网

WIN95中文命令解说(二) WIN95中文命令解说(十三)

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

人气:0引自:中文在线APP资源下载网

  命令: I1HERE 作用: 遇到内嵌的INT 1指令时激活SoftICE 语法: I1HERE [on | off] 用法: I1HERE 命令使SoftICE在遇到程序中内嵌的INT 1指令 时弹出.I1HERE在调试程序时需在某处暂停时特别有用 .在SoftICE弹出之前, SoftICE会检查当前是否有一条 INT 1指令在程序中.如果没有的话,SoftICE将不弹出. 在程序要暂停的指令之前加一句INT 1就能做到这一 点.SoftICE弹出时,EIP 会停在INT 1的下一条指令后. I1HERE 不带参数将显示当前I1HERE的状态.缺省为OFF I1HERE 在与如BoundsChecker 之类的调试工具分工协 作时很有用,因为BoundsChecker用到 INT 3,为了防止 冲突应使用INT 1. 另外,VMM,Windows内存管理的VxD, 在Windows出现某些严重错误时会在严重错误返回前执 行一个INT 1指令.如果此时I1HERE 为ON时, 你就能跟 踪这类错误. 如由VMM因换页错误而产生INT 1 时寄存 器的值如下: .EAX = 错误地址. .ESI 指向一个ASCII字符串(信息). .EBP 指向一个CRS(在DDK的VMM.INC中定义的客户寄 存器结构) 点评: 基础信息: INT 1 实际上是单步中断的处理例程. CPU 在检测到 TP 标志为1时(TP是由DEBUGGER设的), 就自 动进行这一例程. DEBUGGER 们挂接这个中断例程进行 一些诸如显示当前寄存器值等操作,并等待用户进一步 的指令. 在程序中直接用 INT 1指令也能达到效果. SoftICE不象DOS下的DEBUG.EXE,一碰到 INT 1 就中断, 缺省是不中断的,只有当I1HERE 为 ON 时才中断. 命令: I3HERE 作用: 在遇到INT 3 指令时激活SoftICE 语法: I3HERE [on | off] 用法: I3HERE ON 将使SoftICE每碰到一个 INT 3 时都弹出, 这在调试程序时需要在某处暂停特别有用.在你需要暂 停的指令之前加一个INT 3 就行.如果你是编 WINDOWS 程序,加个函数DebugBreak(). 这个函数也执行一个 INT 3. I3HERE 不带参数将显示当前状态.请参见I1HERE. 点评: 基础信息: INT 3 是断点中断处理例程.也被DEBUGGER 们挂接,显示寄存器值,给出一些信息,并等待用户下一 步操作. DEBUGGER在下断点时,将断点处的指令替换成 INT 3,把替换下的指令保存,在执行完例程后再恢复原 先保存的指令,修改堆栈中的断点地址, 使程序得以继 续. DOS下的老DEBUG.EXE当遇到程序中的INT 3 指令时 会进行同样的操作,也修改堆栈中的断点地址,所以IP又 停在那条INT 3 上, 如果你打入 G ,程序将一直停在此 处,这时改一下IP就可以了. 命令: IDT 作用: 显示中断描述符表 语法: IDT [interrupt-number] 用法: interrupt-number: 所要显示的中断号 IDT 命令读取中断描述符表寄存器的值, 获得表基址, 然后显示中断描述符表的内容.IDT 命令不带参数将显 示所有中断的情况,如果带中断号, 则只显示相应的入 口.输出参数如下: interrupt number: 0-05fh的中断号. interrupt type: 中断类型如下: --------------------- CallG32: 32位调用门. CallG16: 16位调用门. TaskG: 任务门. TrapG16: 16位陷肼门. TrapG32: 32位陷肼门. IntG32:32位中断门. IntG16:16位中断门. --------------------- address : (选择符:偏移量)形式的地址. selector's DPL: 选择符的描述符特权级,0,1,2,3 present bit : P 或 NP, 表示该描述符是否在内 存中. Owner+Offset: 符号名或拥有者名,和在它们中的 偏移. 点评: 参见GDT,LDT. 命令: LDT 作用: 显示局部描述符表 语法: LDT [selector] 用法: selector: 指定LDT 选择符 LDT 命令将显示局部描述符表的内容. SoftICE先读取 局部描述符表寄存器的值,再定位描述符表. 如果局部 描述符表不存在,会显示一个错误信息. 如果指定选择 符,则只显示该选择符所指向的描述符. 如果指定的选 择符是一个全局选择符, 则SoftICE将自动显示该全局 选择符所指的描述符. 输出:LDT 的线性基址和长度将显示在输出数据的顶行 输出数据的每一行内容的说明: value: 最低两位即描述符特权级 type : 描述符类型,如下: --------------------------- Code16 : 16位代码描述符 Data16 : 16位数据描述符 Code32 : 32位代码描述符 Data32 : 32位数据描述符 CallG32: 32位调用门描述符 CallG16: 16位调用门描述符 TaskG32: 32位任务门描述符 TaskG16: 16位任务门描述符 TrapG32: 32位陷肼门描述符 TrapG16: 16位陷肼门描述符 IntG32 : 32位中断门描述符 IntG16 : 16位中断门描述符 Reserved: 保留的描述符 --------------------------- base : 描述符中的段基址 limit: 描述符中的段界限 DPL: 描述符特权级,0,1,2,3 present bit: P 或 NP 表示该段是否在内存中 segment attributes: 段特性: --------------------------- RW: 数据段可读写 RO: 数据段只读 RE: 代码段可读可执行 EO: 代码段只可执行 B : TSS(任务状态段)忙置位 --------------------------- 点评: 这段翻译并不完全用PDF手册上的.如"selector" 原指 选择符(器),用来指向描述符表中的描述符,而PDF手册 中type 的说明全用到 selector. 说的意思虽是一样, 但和别的文献矛盾,故认为不妥,将其翻译成descriptor 即描述符. 实际上可以看出,一个选择符指向一个描述 符,两者是一致的. 描述符类型实际上也就是指向它的 选择符类型. 命令: LHEAP 作用: 显示Windows 局部堆 语法: LHEAP [selector | module-name] 用法: selector : 局部描述符表数据选择符. module-name: 16位 模块名. LHEAP 显示Windows程序在全局堆中申请的数据信息. 如果不跟选择符参数,当前的DS 寄存器的内容(数据选 择符)被做为缺省值. 用前次说过的 HEAP 命令找标有 LH 的选择符来做为LHEAP的参数.如果用module-name 做参数,则SoftICE用此模块的缺省数据段进行堆遍历. 输出: offset: 16位的偏移量(相对于相应的选择符基址) size: 堆入口(每个组成部分)的字节大小. type: 类型如下: --------------------- FIX : 固定的. MOV : 可移动的. FREE: 空闲的. --------------------- handle: 相应的句柄.对固定的堆组成部分来说, 此值 和offset 相等,且是由 LocalAlloc()返回的. 对于可移动的组成部分来说,此值将会被做为 LocalLock()的参数. 点评: 无.(天气好热!翻译得好累!) 命令: LINES 作用: 改变SoftICE窗口的显示行数 语法: LINES [25 | 43 | 50 | 60] 用法: LINES 命令用来改变SoftICE窗口的显示行数. 默认为 25行.可以有: 25 行;43 行;50 行;60 行;43,50,60行只适用于VGA卡. LINES 不带参数将显示当前行数.如果用 ALTSCR 命令 切换显示器输出到单显,SoftICE自动转为25行,再转回 VGA卡时要手工用 LINES 命令来恢复原值. 点评: 实际上, 我的3.20用的是SoftICE自带的通用视频驱动 程序,行范围可以从25一直到128 !!(除非为SoftICE开 的显存不够) 命令: LOCALS 作用: 从当前栈中列出局部变量 语法: LOCALS 用法: 输出: Stack Offset : 栈偏移. Type definition: 类型定义. Value,Data,or structure symbol({...}) : 值,数据,或结构符号. SoftICE根据局部变量的类型来用不同的形式显示它们, 如果是指针,则显示所指向的数据.如果是结构,则显示 结构符号.如果既不是指针,又不是结构,则显示本身值. 点评: 无.

专题文集:破解文章 windows
引用标题:《WIN95中文命令解说(二) WIN95中文命令解说(十三)》
来源地址:https://www.xjanfang.cn/news/tpart-20883.html