DEBUG在每个人的机器里都会有,只是很多人对它都很陌生,不要小看它,对你的破解会很有帮助的。如你掌握了它的用法,对你的日常使用及维护工作会带来很大的方便,下面介绍一些它的基本指令用法:
指令 格式 功能 备注
A A [记忆体位址] 组译汇编语言指令 A 100
C C [区段1] [区段范围] [区段2] 将两块内存作比较 C 100 L20 200
D D [记忆体拉址] 显示记忆体的内容 D 100
E E [记忆体位址] 编辑记忆体资料 E 100
F F [指定区段范围] 填充指定内存区块内容 F 100 L10 90
G G [区段:区址] 带有任选断点执行 G 100
H H [运算子] [运算子] 十六进制加减运算 H 44 33
I I [端口] 读/显示输入字节
L L [记忆位址]或[磁碟,磁轨,磁区] 装入文件或磁区 L 100 2 1 2
M M [区段范围] [记忆体位址] 传送内存区块 M 100 L10 110
N N [档案名称] 定义文件及参量 N bb.com
O O [端口位址] 输出字节到端口
P P [区段:区址] 在下一指令上停止 P 2
Q Q 退出 DEBUG 界面 Q
R R [寄存器] 显示修改寄存器/标志 R AX
S S [记忆区段范围] 对字符进行检索 S 100 L70 ’j’
T T [=记忆区段]或[数值范围] 单步追踪 T
U U [记忆位址] 对指令进行反汇编 U 100
W W [记忆区段]或[指定范围] 写入文件或磁盘扇区 W 100 0 1 1
下面对一些常用指令进行详细剖析:
A (Assemble)汇编指令
1、输入汇编语句被汇编到内存的指定区段,此区段在开始时用 A address 指定。
2、所有语句输入完成后,按 ENTER 键返回。
3、完成输入后,可以用 U 命令观看它的机械码。
D (Dump)显示命令
1、从指定的地址开始显示内容,如果没有指定地址,则从前一个D命令继续显示。
2、如果没指定地址并是第一次,则从 DS:100 处开始显示。
G (Go)转移命令
1、执行正在调试的程序,当执行到指定的地址时停止,并显示寄存器樗和下一条要
执行的命令。
2、G [=address]用于执行正在调试没有断点的程式。
3、程序运行结束,DEBUG 显示“Porgram terminated normally”。
R (Register)寄存器命令
1、显示一个寄存器的十六进制内容,并可根据需要改变它们。
2、显示8个字母的状态标志,并可根据需要更改它们之中的任一个或全部。
U (Unassemble)反汇编命令
1、对指令进行反汇编,它们的地址和十六进制以类似于汇编语言的语句一起显示出
来。
2、单独用 U 命令从 CS:100 处开始反汇编。
3、U命令默认段地址包含 CS 寄存器中。
DEBUG 技巧应用
1、用 DEBUG 对子目录加密
DOS在管理文件目录时,用 32 个字节来保存根目录和子目录的信息。对子目录而言
0-10 字节为子目录域,第 11 字节为属性。我们只要将子目录属性字节的值从 10H
改为 13H 时,子目录即具有拒绝 DIR、TREE 等命令的性能。
例如:
对 A 盘的 SUBDIK 子目录进行加密:
C:/>DEBUG
-L 100 0 5 7 (将 A 盘中目录读入内存)
-S 100 FFF “SUBDIK“ (搜索子目录)
-38EB:07c0 (搜索到的子目录地址)
-E 07CB (07C)+0B=07CB(为属性字节位址)
38EB:07CB 10.13 (修改完成)
-W 100 0 5 7 (目录写回A盘中)
-Q (退出)
2、解除 BIOS 密码
C:/>DEBUG
-O 70 10
-O 71 11
重新启动,BIOS 密码已被攻破。
3、冷启动实现
C:/>DEBUG RESET.COM
-A 100
JMP FFFF:0000
INT 20
-RCX
00007
-W
-Q
4、热启动实现
C:/DEBUG BOOT.COM
-A 0100
MOV AX,0040
MOV DS,AX
MOV AX,1234
MOV SI,0072
MOV [SI],AX
JMP FFFF:0
INT 20
-RCX
0014
-W
-Q