debug用法

      2005-8-8 9:31
DEBUG的用法
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


标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}