dosbox下使用debug
debug是DOS环境下调试程序的得力助手。
进入debug
首先mount C 路径
然后C:
在DOSBOX中设定并选择C盘作为路径
然后输入debug
并敲回车,就可以进入debug程序。这样启动的debug程序只是能对整个内存空间进行操作,并不会载入我们想要调试的程序。
当然,也可以debug 需要调试的程序的路径
来调试程序
开始用指令调试程序
在debug里,指令不区分大小写,debug的命令只有一个字母,后面的其他值可以加空格也可以不加空格。
比如rax
和r ax
等价
在写的时候发现了一篇讲得很详细的文章https://blog.csdn.net/never_late/article/details/111193302,,,
r命令
直接输入:查看寄存器的值和当前cs:ip所指向的内存处的指令。
r+寄存器名:查询并编辑寄存器的值
比如输入rax并回车后,首先会显示ax的取值,接着需要你输入一个小于等于4位的十六进制数字并按回车,修改ax的值。如果不想改变其值,直接按下回车即可。
u命令
直接输入:查看cs:ip处的一段反汇编代码
u+偏移地址/段地址:偏移地址:查看目标地址处的一段反汇编代码。如果只写偏移地址,就会显示cs:偏移地址处的一段反汇编代码
t命令
直接输入:执行一行代码(汇编代码),相当于高级语言调试里的逐语句、单步跟踪
t+数字:执行若干行代码,行数取决于你的输入
当然了,使用t命令会使寄存器ip的值的变化
d命令
直接输入:从ds:0开始显示内存中的数据。会在右侧显示程序对应的ASCII值,如果对应的字符无法显示则显示.
多次使用d命令,可以改变查看的内存的偏移地址,以查看后面的数据
d+数字:从当前偏移地址+数字的位置开始向后显示内存中的数据
d+起始地址:显然,很自然,不难得到,略。
d+起始地址 终止地址:显然,很自然,不难得到,略。
d+起始地址 长度:显然,很自然,不难得到,略。
a命令
直接输入:编辑cs:ip处的代码
a+偏移地址/段地址:偏移地址:修改制定位置处的代码。
就是在对应的地址上边写汇编,并且只能使用十六进制的数字。按下回车后你的汇编指令会被直接翻译成二进制并放到相应的位置上去。什么也不输入按下回车才会结束编辑。
e命令
与a类似,直接修改内存中的数值。
g命令
Go!
执行程序
可以设置断点:g=地址
,将在指定地址处触发断点
f命令
fill.
使用指定的值覆盖制定位置中的值
f+范围+填充列表
q命令
退出debug
咕咕咕……
鸽了鸽了
dosbox下使用debug