Softice使用指南(异域の蜗牛注:经典的调试工具,几乎能调试所有程序.感谢ddcrack让我看了这么好的文章.分享)

  softice是异域の蜗牛了解到的最好的调试工具,对于没有对它进行屏避的软件都能较好的调试.不过本人并没用它成功破解过软件,有兴趣的朋友先看看使用方法,自己钻研钻研,请看下面正题
Softice使用指南
作者 :ddcrack (2001/5/24)    主页:http://ddcrack.yeah.net
安装Softice     |
配置Softice     |
使用 Softice

  安装并配置好 Softice 后,我们就可以开始进入使用 Softice 的阶段了,如果你没有做好前面的工作,还是先返回去将 Softice 准备好,学软件要一边看一边学习效果才好。 Softice 的界面和操作都比较简单,只要熟悉一些基本的命令之后就可以开始利用它为我们服务了。有一点要提醒大家: Softice WINDOWS 启动之前装入系统中,然后将 WINDOWS 载入(因为要控制、拦截 WINDOWS 的动作),所以它工作于系统的 0 级(即特权级)。当在 WINDOWS 下用热键呼出 Softice 后,它就控制了整个系统,此时任何其它的程序(包括系统时钟)都将处于停止状态。
  本文只是介绍 Softice 的基本使用方法,有关 Softice 的详细使用方法请参阅随软件附带的命令手册和操作手册,本站 相关资料 中有 Softice 的中文使用说明。

如何呼出 / 退出 Softice —— WINDOWS 下可以随时用热键 CTRL+D 组合键呼出 内存中的 Softice ,按 F5 功能键退出 Softice

   FAQ 问题解答:
  用 CTRL+D 不能呼出 Softice 怎么办?
     —— 如果确保成功安装了 Softice ,对于 windows 9x 请检查批处理文件 autoexec.bat 中是否有 winice.exe 这一句,对于 windows NT 请在 开始-〉程序-〉 NuMega Softice” 下选择 “Start SoftICE” 启动 Softice 试试。
   Softice 的屏幕没有任何显示?
     —— 开始-〉程序-〉 NuMega Softice” 下选择 “Display Adapter Setup” 重新设置显卡
   Softice 中鼠标功能出现异常?
     —— 开始-〉程序-〉 NuMega Softice” 下选择 “Mouse Setup” 重新设置鼠标
  在显卡设置中选择了 “Universal Video Driver” 选项,但是 Softice 的呼出的仍然是全屏 DOS 界面?
    两个对策:
     ——1. winice.dat 的初始化命令行(即 INIT )中的 “LINES XX” 数改小,例如: LINES 40
     ——2. 在显卡设置中将 “Manufacturer” 强制改为 “StandardVGA” ,然后 “Test” ,成功后退出。
  注意:以上的修改都要重新启动系统后才能生效!!!

◆ Softice
的界面图 (由于 Softice 工作在系统 0 级,所以没有办法截取它的界面,这里用 TRW2000 的界面图来代替,两者基本上是一样的)
   关于寄存器区:修改寄存器的值有两种办法: 1. 直接用鼠标点击需要修改的地方进行修改; 2. 用修改指令 “R” ,例如: R EAX -> 修改寄存器 EAX R FL -> 修改标志位(用 “Insert” 键改变标志位状态), R FLZ -> 改变零标志位的状态(在 0 1 之间切换)。修改完寄存器值后按 ESC 键退回命令行状态区。

   关于数据区:修改数据区的值有两种办法: 1. 直接用鼠标点击需要修改的地方( 16 进制显示区或者字符形式显示区)进行修改; 2. 用修改指令 “E” ,例如: E XXXXXXXX -> 修改内存地址 XXXXXXXX 处的数据,用 TAB 键在 16 进制显示区和字符形式显示区之间切换。修改完寄存器值后按 ESC 键退回命令行状态区。
          查看数据区的内容的两种方法: 1. ALT+↑ 上下箭头移动数据显示区域; 2. 直接用鼠标点击数据窗口最右边的 上下箭头(图中没有显示出来)来移动显示区域。

   关于程序区:机器代码的显示 / 关闭必须通过指令 “CODE ON/OFF” 来切换, Softice 的默认工作画面是没有显示机器代码的。注意:程序的领空地域如图所示,图中的画面正在破解 WINZIP 这个程序,当你看到 “WINZIP32!.TEXT” 字样时说明程序已经返回到 WINZIP 的领空了 ^_^
          查看程序区的内容的两种方法: 1. CTRL+↑ 上下箭头移动程序代码显示区域; 2. 直接用鼠标点击程序窗口最右边的 上下箭头(图中没有显示出来)来移动代码显示区域。

   关于命令区:是我们输入各种命令,完成各种操作和控制,进行破解的地方。

   关于动作状态区:输入命令时显示命令的用法及格式。

   关于堆栈区:只有 TRW2000 具有这个窗口区域。

◆ Softice
预定义功能组合键的作用
F1
F2

F3

F4

F5

F6

F7

F8

F9

F10

F11

F12

SHIFT+F3

CTRL+F8

CTRL+F9

CTRL+F10

CTRL+F11

CTRL+F12

ALT+F1

ALT+F2

ALT+F3

ALT+F4

ALT+F5

ALT+F8
帮助
寄存器显示 / 关闭切换
源程序 / 反汇编代码切换(程序有源程序时可用)
Softice
界面 / 屏幕原始画面显示切换
退出 Softice 窗口
进入 / 退出代码窗口
程序运行到光标所在处
单步跟踪
在光标所在位置设断点
单步执行(跳过子程序 CALL
程序执行到 ES:ESP 指向的地方
程序执行到 RET 指令处,即从子程序 CALL 中返回
改变数据窗口的显示格式,按照 字节 -> -> 双字 -> 短实型 -> 长实型 ->10 字节实型 的方式循环显示
模拟跟踪模式中单步跟踪
退出当前模拟跟踪模式
模拟跟踪模式中单步执行
从历史跟踪缓冲区的最后一条开始显示指令
从最初的一条指令开始模拟跟踪
显示 / 关闭寄存器窗口
显示 / 关闭数据窗口
显示 / 关闭程序窗口
显示 / 关闭监视窗口
清除命令窗口中的字符
模拟跟踪模式中反方向单步跟踪

◆ Softice
的常用命令用法介绍

命令形式

.
定位当前指令
当上下移动浏览代码窗口中的内容时用这个命令能立即回到当前 CS:EIP 指令处,不用再慢慢的移动代码窗口返回来。

? 表达式
计算表达式的值
Softice 内置的计算器, 16 进制为默认方式,下列均表示 16 进制数: FF 123 0x123 10 进制数须在前加 + 号(正数)或 - 号(负数),例如: +42 -123 -FF (对应 10 进制数 -255 )、 +(20) (对应 10 进制数 +32 );字符形式加 '' 号,例如: 'A' 'ddcrack' 。计算结果分别以 16 进制、 10 进制和 ASCII 字符方式显示,例如:
? EAX
00000045 00000069 "E"
? 0073173+00066400
00796573 007955827 "yes"

A [ 地址 ]
写入汇编代码
用过 DOS DEBUG 的人对这个命令都不会陌生,用法:
A
  从当前 CS:EIP 处开始汇编
A XXXXXXXX
  从程序地址 XXXXXXXX 处开始汇编

U [ 地址 ]
反汇编代码
U   从当前屏幕中最后一条指令的下一条指令开始反汇编
U XXXXXXXX
  从程序地址 XXXXXXXX 处开始反汇编

BC list | *
清除断点
BC 3   清除断点 3
BC *
  清除所有断点

BD list | *
禁止断点
BD 3   禁止断点 3
BD *
  禁止所有断点

BE list | *
恢复被禁止的断点
BD 3   恢复断点 3
BD *
  恢复所有断点

BH
显示历史断点
显示 Softice 中曾经设置过的断点

BL
列出当前断点
显示当前 Softice 中所有设置的断点,包括激活的和被禁止的断点,被禁止的断点前有 “*” 号表示。

BPE 断点号
编辑断点
BPE 3   编辑断点 3

BPINT 中断号
对指定中断设置断点
BPINT 13   在 13 号中断上设置断点

BPIO 端口号
对指定 I/O 端口设置断点
BPIO 378   在对端口 378 进行操作时中断

BPM [ 地址 ]
对指定内存地址设置断点
BPM XXXXXXXX   在对内存地址 XXXXXXXX 单元中的数据进行操作时中断

BPR [ 开始地址 ] [ 结束地址 ]
在内存地址范围设置断点
BPR XXXXXXXX ********   在对内存地址从 XXXXXXXX ******** 单元中的数据进行操作时中断

BPX [ 地址 ]
在指定处设置断点
这是破解中最常用的命令之一了 ^_^
BPX
  在当前光标所在处设置断点
BPX XXXXXXXX
  在 XXXXXXXX 处的指令上设置断点
BPX GetDlgItemText
  在 API 函数 GetDlgItemText 上设置断点

CODE ON/OFF
显示 / 关闭指令机器码
默认是不显示的,在需要的时候再打开它,否则屏幕会显得混乱。

D [ 地址 ]
显示内存地址内容
可以具体指定下面的模式: DB 字节 ; DW ; DD 双字 ; DS 短实型 ; DL 长实型 ; DT 10b 长实型,默认是 DB ,即字节方式。
D
  将从继上次命令之后的地址开始显示
     D XXXXXXXX   显示内存地址 XXXXXXXX 单元中的内容

E [ 地址 ]
修改内存单元
可以具体指定下面的模式: EB 字节 ; EW ; ED 双字 ; ES 短实型 ; EL 长实型 ; ET 10b 长实型,默认是 EB ,即字节方式。
E
  修改从继上次命令之后的地址单元
     E XXXXXXXX   修改内存地址 XXXXXXXX 单元中的内容

H / HELP [ 命令 ]
获取帮助信息
H   获取所有帮助信息
HELP BPX
  获取指令 BPX 的帮助信息

LINES 行数
设置 SoftICE 界面的行数
LINES 45   设置 SoftICE 的界面显示行数为 45

VER
查看 SoftICE 的版本号
 

X
退出 Softice
将控制权交还给被 SoftICE 中断的程序,快捷键是 F5 ,我们经常用到的。

EXIT
强行退出 DOS WINDOWS 程序
当出现致命错误致使 Softice 弹出后,如果用 “X” 指令没有用,可以用它试一下。

WC
WD
WR
WW
显示 / 关闭程序窗口
显示 / 关闭数据窗口
显示 / 关闭寄存器窗口
显示 / 关闭监视窗口
其中 WC WD 可以指定窗口显示的行数,例如: WD 4  表示显示数据窗口为4行
 
目录: 本手册的功能 读者对象 本手册的组织结构 排版风格 如何使用本手册 其它相关文件 (外国人就是罗嗦,为了求全,只好随他了。) 第一章 欢迎使用SoftICE 产品概况 介绍SoftICE 介绍Symbol Loader 如何得到客户服务 联系NuMega公司的技术支持中心 第二章 安装SoftICE 介绍 硬件和软件要求 SoftICE显示选择 安装之前 安装 安装之后 配置BOOT。INI以便在多处理器系统中支持单CPU 配置SoftICEWindows 95下正确载入 通过串行口连接第二台计算机 解决显卡问题 第三章 SoftICE教程 介绍 载入SoftICE 构造GDIDEMO样本程序 装入GDIDEMO样本程序 控制SoftICE屏幕 通过源码跟踪和逐步调试 读本地数据 设定断点和目标断点 设定一个断点 设定STICKY断点 (此处不知STICKY作何解释。待我读到此处时大概会明白) 使用SoftICE命令行信息 使用符号和符号表 设定条件断点 设置BPX断点 编辑断点 设定读写内存断点 第四章 将代码装入SoftICE 调试的概念 准备调试程序 准备调试设备驱动程序和VxDs(虚拟设备驱动程序) 手工装入SoftICE 装入SoftICE for Windows 95 装入SoftICE for Windows NT 构造带有调试信息的程序 使用Symbol Loader转换和载入文件 修改模块设定 修改通用设定 修改编译设定 修改调试设定 指定程序的源文件 删除符号表 在DOS命令行里使用Symbol Loader 使用Symbol Loader的命令行工具 NMSYM命令行的语法 使用NMSYM来转换符号信息 使用NMSYM来装入模块和符号信息 使用NMSYM来装入或导出符号表 使用NMSYM卸载符号信息 使用NMSYM来保存历史记录 关于NMSYM的信息 第五章 SoftICE导航 介绍 呼出SoftICE窗口 启动时禁用SoftICE 使用SoftICE窗口 调整窗口大小 控制窗口 拷贝和粘贴数据 用鼠标输入命令 得到帮助 使用命令窗口 滚动窗口 键入命令 重呼命令 使用运行时宏 将命令窗口的历史缓存保存到文件 相关命令 控制代码窗口 读信息 在代码窗口键入命令 使用本地窗口 控制本地窗口 扩展和分解堆栈 相关命令 使用观察窗口 控制观察窗口 设定观察表达式 读信息 扩展和分解类型表达式 相关命令 使用寄存器窗口 控制寄存器窗口 读信息 编辑寄存器和标志位 相关命令 使用数据窗口 控制数据窗口 读信息 改变内存地址和格式 编辑内存 辅助表达式 相关命令 第六章 使用SoftICE 在跟踪错误时调试多个程序 跟踪错误 Ring-3 32位保护模式(Win32程序) Ring-0 驱动代码(内核模式设备驱动程序) Ring-3 16位保护模式(16位Win程序) 地址内容 使用INT 0x41 .DOT命令 理解从R-3到R-0的转变 第七章 使用断点 第八章 ----------------------------------------------------------- (...很累人那!今天就这些了吧.因为我也是读一些翻译一些,所以有些"向前引用 "的名词术语不知道要如何解释其意义.应该读完再翻译比较好...不过那个时候我 又开学了...呜...一点时间也没有了!) 第七章 使用断点 介绍 SoftICE所支持的断点类型 断点选项 执行断点 内存断点 中断断点 I/O断点 窗口消息断点 理解断点的含义 虚断点 设置断点活动 条件断点 条件断点计数功能 在条件表达式中使用本地变量 在条件断点里引用堆栈 参考 多重断点 所用时间 断点统计 在表达式中引用断点 维护断点 使用内嵌断点 第八章 使用表达式 表达式 操作符 操作符优先级 形成表达式 表达式类型 定制类型 取得符号的数值 间接使用符号 第九章 装入系统组件符号 装入由DLL和EXE文件导出的符号表 使用未命名的入口点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值