Debug是一个调试工具,只在32bit环境中存在。如果想要在64bit中使用,可以借助DOS系统搭建一个32bit环境。
一、 Debug
Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
进入Debug工具的方式:
C:/Windows/System32/debug.exe
。- 也可以通过Win+R,输入debug进入。
- 直接打开cmd,输入debug。
注意:debug里面的数值默认都是采用16进制。
Debug的常用功能:
- R:查看、改变CPU寄存器的内容;
- D:查看内存中的内容;
- E:改写内存中的内容;
- U:将内存中的机器指令翻译成汇编指令;
- T:执行一条机器指令,类似于step into;
- A:以汇编指令的格式在内存中写入一条机器指令;
- Q:退出debug;
- P:可用于跳过loop循环,类似于step over;
- G:跳过前面的代码,停留到指定的代码位置
1.1. R命令
- 输入
r
,可以查看所有寄存器的值 - 输入
r 寄存器名称
,可以修改寄存器的值。比如,输入r ax
,将ax寄存器的值改为0100H
1.2. D命令
- 输入
d
,可以查看内存中的内容 - 输入
d 段地址:偏移地址
,查看特定位置的内存数据 - 输入
d 段地址:起始偏移地址 结尾偏移地址
,查看特定位置和特定范围的内存数据 - 输入
d 偏移地址
、d 起始偏移地址 结尾偏移地址
,会将DS的内容作为段地址
右边是每个内存单元中的数据对应的可显示的ASCII码字符。如果没有对应的ASCII字符,就显示.
。
1.3. E命令
- 输入
e 段地址:偏移地址 数据串
,修改特定位置的内存数据
- 输入
e 段地址:偏移地址
,按Enter也可以修改特定位置的内存数据,数据之间用空格隔开
1.4. U命令
输入u
、u 段地址:偏移地址
,可以将内存中的内容翻译为对应的汇编指令。
由3部分组成:
- 最左边一列:是指令的地址“段地址:偏移地址”
- 中间那一列:是指令对应的机器指令
- 最右边一列:是汇编指令
1.5. A命令
输入a
、a 段地址:偏移地址
,可以从某位置开始写入汇编指令。
Debug工具作为了解即可,实际研究和调试过程中建议使用emu8086(可视化)等工具。