环境搭建
无论是cj学长那时的win10还是我现在的win11都没有DEBUG.EXE和DOS
所以首先第一步搭建环境非常重要,可以直接照着cj学长这篇文章来搭建,非常详细而且很贴心文末有一个工具包(cj学长我的超人!)
基本操作
第一个实验没什么难度,都是些很基本的操作比如用R查看、改变寄存器的内容
R命令
直接输入R
即可查看,若想对某个具体的寄存器内容进行修改那可以在R之后接上寄存器的名字,如R ax
就可以输入ax的值。
D命令
用d 段地址:偏移地址
查看内存中的内容,我们可以输入d 1000:0
来查看内存1000处的内容。用d指令时,debug将列出从指定内存单元开始的128个内存单元的内容
用d时,显示内容有三部分,左边是每行的起始地址,中间是16进制表示的内存内容,右边是对应的ASCII字符(有点像hex view)
还可以使用d 段地址:起始偏移地址 结尾偏移地址
来查看指定IP范围的内容
E命令
E 起始地址 数据 数据 数据……
可以改写从起始地址开始的n个单元的内容,enter键结束。E 起始地址
可以以提问的方式逐一修改内容,以空格为一次修改结束,直接输入空格则不修改,enter键结束E 数字 ‘字符’ 数字 ‘字符’……
这样的写入形式会将数字直接写入内存单元,而字符则会转化为ASCII码再写入内存单元
当然E命令也可以写入机器码
U命令
U命令的作用是查看机器码,如果内存单元中储存的是机器码那么用U命令加起始地址就可以将机器码翻译成汇编指令再输出
同样,其输出有三部分,分别是地址、指令的16进制数据表示、汇编语言
T命令
用T命令可以执行CS:IP指向的指令,直接输入t即可
A命令
前面有说E命令可以写入机指令,但是很不方便,于是有了可以直接写入汇编语言的A命令a 起始地址
这样就可以写入一条条汇编指令,并且计算机会自动计算输入的汇编所占的内存长度,自动将IP加到下一个写入位置,我们需要做的就是一条条写就可以啦
如果不写起始地址而直接输入A,那么就会从CS:IP指向的地方开始写入
实验
这章的实验比较简单l0tus懒狗就不做了