通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 安全技术 >> 软件破解 >> 破解实例 >> 文章正文
SoftICE命令中文解说 上
责任编辑:admin   更新日期:2005-8-6
  SoftICE for Win95是由NUMEGA公司出品的程序调试工具,它出色的性能深得用户的喜爱.但由于SoftICE的中文命令解释很少能够见得完全,所以我早有此想法,将其翻译成中文.把它纯粹当做一个好的DEBUGGER来看待,而不是一种秘密武器.

命令: .
作用: 在代码窗口中定位当前指令
语法: .
用法: 当代码窗口可见时, .命令(点命令)使得当前的CS:EIP所指向的指令可见, 并且高亮显示. 另外,此命令也把SoftICE 从其他内存区域中切回原先弹出的内存区域.详见后面的ADDR命令.

点评:
当你在代码窗口中上下浏览时,有可能走得很远, 那么这时一个"." 命令会让你在下一瞬间回到SOFTICE当前所在的CS:EIP处,再也用不着按PGUP,PGDOWN很多次了!


命令: ?
作用: 计算一个表达式的值
语法: ? 表达式
用法: 计算一个表达式的值.并以十六进制,十进制,带符号的十进制(<0时有)和ASCII值多种形式显示计算结果.

点评:
一个非常高级的计算器, 诸如46578*1999+ESI 之类的计算不会再让你烦恼,另外由于可以显示ASCII,所以可以很方便地在各种数制之间察看.


命令: A
作用: 写入汇编代码
语法: A [地址]
用法: 用SICE内置的汇编器在内存中写入汇编代码.汇编器支持标准的80x86指令集.包括386,Pentium-Pro,486,Pentium,MMX,协处理器,新版的SICE还支持AMD的3D Now!,PII,PIII的特有指令集.汇编将在A后的地址处开始.如果在A后没有加地址, 那么汇编将在你上次汇编结束处开始.如果你是第一次键入A命令,且没有追加地址那么汇编将在当前CS:EIP处开始.另外,键入A命令后, 在单独一行指令栏中键入USE16或USE32,将告诉汇编器是采用16位还是32位指令,默认是和当前的CS寄存器的模式一致.

点评:
这是和DOS下DEBUG.EXE的用法一样的命令.一般改程序时,用A命令写入,再用CODE ON(见稍后)命令看代码,记录原来的代码和改过的代码后再用工具软件如PCTOOLSHACKVIEW之类查找修改.


命令: ADDR
作用: 在SoftICE中显示或是切换内存区域
语法: ADDR [内存区域句柄|过程名]
用法: 用来察看某一个任务的私有内存区域, 或是加参数[内存区域句柄|过程名]在SoftICE中切换某一任务的私有内存区域为当前可寻址的内存区域.

一些参数的显示:
.HANDLE 内存区域控制块的地址
.PGTPTR 每个任务私有页表的起址
.TABLES 每个私有页表中的表项数目
.MINADDR 每个任务的线性地址的起址
.MAXADDR 每个任务的线性地址的终址
.MUTEX VMM用于页表管理的句柄
.OWNER 使用这块内存区域的实例的名字

如果有多个相同名字的实例运行, ADDR带OWNER名字切换的话,切到表中的第一个有此NAME的实例所占的内存区域.所以带HANDLE切换的话比较精确. 当用ADDR加参数后,可以用上面提到过的"."命令来回到SoftICE弹出时所属的任务内存区域.

点评:
这个牵涉到CPU的保护模式寻址方式和WINDOWS 的内存管理,由分段机构产生的32位线性地址要经过分页机构再转化为物理地址,这要牵涉到两个表的寻址.WINDOWS每次切换都将每个任务的私有页表拷贝到CR3寄存器所指的当前页表中.而ADDR所作的和WINDOWS所作的一样.所以当你在一个任务中弹出时,可以通过ADDR可以来看别的任务的私有内存区域.


命令: ALTKEY
作用: 改变用来呼叫SoftICE的热键
语法: ALTKEY [ALT 字母 | CTRL 字母]
用法: SoftICE默认的热键为CTRL+D, 用此命令可以将热键改变,如果每次启动机器都要改, 则可以把这条命令放入WINICE.DAT中.这条命令是为了防止某些程序和SoftICE的热键相冲突而设的.如:ALTKEY CTRL S 将热键改为CTRL+S

点评: 无.

命令: ALTSCR
作用: 切换SoftICE的视屏输出.
语法: ALTSCR [ON|OFF]
用法: 如果你有双显示器, 则这条命令将使SoftICE的窗口显示在另一台单显上.注意,是老式的单显,不是VGA单显.实际上在启动WINICE时可用参数/M强迫SoftICE用单显来显示.也可在WINICE.DAT中加入初始化串.在WIN95中用SoftICE自带的VIDEOSETUP可以很方便地设定.
例:ALTSCR ON 将使输出改变到单显上.

点评: 这条命令将使SoftICE同一些老显卡兼容, 也使调试变得方便,试想一台显示器显示正常的图像, 另一台来显示跟踪屏幕,免去了按F4看原画面的步骤, 在某些场合还是用得上的. 以前的WDEB386调试器就非要双监视器才能工作.而SoftICE只要一台显示器就行了,这是个很大的进步,但为了和老传统兼容, 它也提供了这个命令方便用户.


命令: ANSWER
作用: 自动监控通讯端口及将输出转移到MODEM
语法: ANSWER [on [com-port] [baud-rate] [i=init] | off]
用法: 此命令可以使SoftICE监控通讯端口, 并将输出改变到一台远程的PC机上, 此远程PC机必须运行 SERIAL.EXE(或SERIAL32.EXE).当SoftICE检测到远程PC上SERIAL.EXE发来的特定信息, 就弹出, 告诉你现在将连上远程PC,然后再退出窗口,联接完成.

一些参数:
.COM-PORT 串行通讯口,默认为COM1
.BAUD-RATE 1200, 2400, 4800, 9600,19200,23040,28800,38400,57000,115000
其中38400为默认波特率.
.I=INIT MODEM的初始化字符串.

命令: BC
作用: 清除一个或多个断点
语法: BC list | *
用法: 清除断点后,用BL命令就看不到断点列表, 且被清除的断点不再起作用.
参数:
list: 可以是将要清除的一系列断点,中间用空格或逗
号隔开.
* : 清除所有的断点.

点评: BC==Breakpoint Clearing

命令: BD
作用: 使一个或多个断点失效
语法: BD list | *
用法: 使某个断点失效不同与 BC 命令的清除,暂时失效的断点可以用 BE 命令来恢复.而 BC命令是彻底清除.
参数:
list: 可以是单个,也可以是一系列断点, 中间用空格
或逗号隔开.
* : 禁止所有的断点.

点评: BD==Breakpoint Disablling

命令: BE
作用: 使一个或多个断点恢复有效
语法: BE list | *
用法:
用来恢复前次用 BD 命令使之失效的断点. (每当新定
义断点或编辑断点时,系统自动将其置为有效)
参数:
list: 可以是单个,也可以是一系列断点, 中间用空格或逗号隔开.
* : 恢复所有的断点.

点评: BE==Breakpoint enablling

命令: BH
作用: 在SoftICE历史数据库中显示或是选择曾经设过的断点
语法: BH
用法: 用BH命令后,SoftICE将显示一个表,每一行是一个断点,都是以前使用者曾经下过的断点, 这时可以用上下光标键来定位,用INSERT键选择,再用ENTER键来确定. 用ESC键取消.SoftICE只记录最近的32个断点. 而且只在WIN95正常退出后记录(记录到WINICE.BRK中), 这样就有一个问题.如果你在MSDOS.SYS配置中是BootGUI=1的话(即最正常的启动方式),当你SHUT DOWN机器时,控制并不回到SoftICE手中,就无法记录刚才的断点.这时只有改为BootGUI=0.

点评:
注意:SoftICE只在SHUT DOWN时记录,如果你用"重新启动并切换...",那是不行的.至少在我的V3.20是不行的.而且,如果你"重新启动并切换...", 再用EXIT命令想退回到WIN95,很容易出现VxD联接错.因为这样 WINICE并没有完全退出内存,用 MEM.EXE可以看到这点.所以,SoftICE的使用者最好在MSDOS.SYS中将上面所说的Boo-tGUI置为0.如果怕这样用多重配置的话还要每次开机敲一个WIN,可以在AUTOEXEC.BAT中改动,加入WIN.COM.(可不要在WINICE.EXE后再加WIN.COM!画蛇添足!)若用SoftICE次数不多的话, 可以每次启动WINDOWS后,再重新启动并切换到MS-DOS方式,再打WINICE.EXE, 这样也可以的. BH的好处是,可以省去纸笔, 下次重调试这个程序时,不用再挖空心思想断点了.


命令: BL
作用: 显示当前所设的断点
语法: BL
用法: BL 命令显示当前所有断点的序号 (这个序号被BC BEBD 等命令所用),类型,是否被禁止等信息.如果是被禁止的断点,会在序号后跟一个"*"号.比如用上面提到的BD 命令会产生这种效果)

点评: BL==Breakpoint listing

命令: BMSG
作用: 在WIN95的消息上下断点
语法: BMSG window-handle [L] [begin-msg [end-msg ]][IF expression][DO "command1;command2;..."]
用法:
window-handle: 消息发向的窗口句柄
begin-msg : 消息标识字的范围,如果没有end-ms,那么只在begin-msg上下断点, 否则
在区域内所有消息都会被下断点
end-msg : 见上.
IF-expression: 表达式的值为真时,SoftICE才弹出.
DO "command1;command2;...":
当到达断点时,执行的一系列SoftICE
命令.
L : 表示不弹出SoftICE,而是在命令窗口
中记录WIN95消息.

上面只有窗口句柄是必需的,其他都是可选项. 如果没有指定在哪个MSG上下断点, 那么所有发向该窗口的消息都会被拦截.窗口句柄可以用HWND命令来观看,MSG标识符可以用 WMSG 命令来察看,可以是16进制的数, 也可以用习惯的书写方式,如:WM_CREATE.SoftICE弹出后,会停在处理该消息的过程的第一句代码上.

点评:
BMSG=(set)Breakpoint on MeSsaGeWINDOWS本身是由消息驱动的, 所以跟踪一个消息会得
到相当底层的答案,我主页上一篇"修改RICHWIN4.3"的文章就是一个例子.


命令: BPE
作用: 编辑一个已存在的断点.
语法: BPE index_number
用法:
index_number: 断点的序号,用 BL 命令可以看到.用BPE命令可以很方便地修改一个已经存在的断点, 但要注意一点: BPE 在执行时,会先将你所要修改的断点清除,然后再将改过的使能,如果你在修改时按ESC键退出修改,那么原先的断点也就不存在了, 修改错误的结果也是一样的.原先的断点消失.

点评: 参见后面的 BPT 命令.


命令: BPINT
作用: 在某个中断向量上下断点
语法: BPINT int-number [IF expression][DO "command1;command2;..."]
用法:
int-number : 中断向量号,从0到FFH
IF expression: 条件表达式,只有条件为"真"时,Sof-
tICE才在断点处弹出
Do command : 当SICE弹出时,自动执行的一些命令.
当在硬中断和CPU异常出错的向量上下断点时,SoftICE会在处理这个中断的过程的第一条语句时弹出.而软件中断则停在INT XX处.注意:BPINT只对由中断描述符表中的中断起作用(WIN95).如果在一个DOS虚拟机(DOS窗口)中下此种断点, 控制是由保护模式转到虚拟机的中断向量表中去.这时如果说停在INT XXH 处, 你用F8跟下去,是一下子看不到对这个中断的实模式处理过程的,要走很远,这时可用:G @ $ 0:int-number*4 来一下子走到实模式处的处理过程.

点评:
注意! SoftICE30的命令手册(英文版

[1] [2] [3] [4] [5] [6] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程