技巧一: 可以在Initialization string设置中添加“FAULTS off;SET MAXIMIZE on;SET FONT 3;CLS;X;”(注意没有引号),这样可使得SOFTICE窗口看起来舒服一点
使用方法:
1、如何调用softice
CTRL+D |
调出softice界面,一旦调出一旦调出softice,softice就独占系统所有的资源了,softice拥有CPU的所有控制权。任何其它程序和驱动都不在执行了。 |
F5 |
退出 |
2、Softice窗口
寄存器窗口:修改寄存器的值有两种办法: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. 直接用鼠标点击程序窗口最右边的↑和↓上下箭头(图中没有显示出来)来移动代码显示区域。
命令窗口:是我们输入各种命令,完成各种操作和控制,进行破解的地方。
动作状态窗口:输入命令时显示命令的用法及格式。
3、快捷键
F1
|
帮助 |
F2 |
寄存器显示/关闭切换 |
F3 |
源程序/反汇编代码切换(程序有源程序时可用) |
F4 |
softice界面/屏幕原始画面显示切换 |
F5 |
退出softice窗口 |
F6 |
进入/退出代码窗口 |
F7 |
程序运行到光标所在处 |
F8 |
单步跟踪 |
F9 |
在光标所在位置设断点 |
F10 |
单步执行(跳过子程序CALL) |
F11 |
程序执行到ES:ESP指向的地方 |
F12 |
程序执行到RET指令处,即从子程序CALL中返回 |
SHIFT+F3 |
改变数据窗口的显示格式,按照“字节->字->双字->短实型->长实型->10字节实型”的方式循环显示 |
CTRL+F8 |
模拟跟踪模式中单步跟踪 |
CTRL+F9 |
退出当前模拟跟踪模式 |
CTRL+F10 |
模拟跟踪模式中单步执行 |
CTRL+F11 |
从历史跟踪缓冲区的最后一条开始显示指令 |
CTRL+F12 |
从最初的一条指令开始模拟跟踪 |
ALT+F1 |
显示/关闭寄存器窗口 |
ALT+F2 |
显示/关闭数据窗口 |
ALT+F3 |
显示/关闭程序窗口 |
ALT+F4 |
显示/关闭监视窗口 |
ALT+F5 |
清除命令窗口中的字符 |
ALT+F8 |
模拟跟踪模式中反方向单步跟踪 |
4、常用命令
命令形式 |
作用 |
说明 |
. |
定位当前指令 |
当上下移动浏览代码窗口中的内容时用这个命令能立即回到当前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行 |
|