下载dosbox
下载debug.exe 这个放在某个盘根下 方便点
双击dosbox
在dos环境下 输入
mount c K:\
c:
debug
用r命令 显示寄存器
r
这时会显示各个寄存器的信息
继续用r命令 修改其中一个寄存器AX中的信息
r ax
0001
再用r命令查看 发现AX中的数值已由 0000 变成了 0001
同样的 也可以修改 CS 和IP 的值
然后 可以用d命令 查看内存条
d 1000:0
会显示 10000H处的内容
如果再输入一次d
d
会继续向下显示8行内存
用e命令修改内存
e 0100:0100 0 1 2 3 4 5 6 7 8 9 a b c d e f
上面一行的命令 会将 0100:0100处往后的16个内存修改
e命令也可以用来查看 但是只能显示一个内存数据 e 0100:0100 之后
可以直接空格(不作修改),也可以写个数再空格
e命令还可以写入字符和字符串
e 0100:0100 'w' 's' 'a' 'd'
e 0100:0100 "hello"
e命令还可以向内存中写入机器码指令 b80100 (mov ax,0001) ; b90200(mov cx,0002) ; 01c8(add ax,cx)
e 0100:0100 b8 01 00 b9 02 00 01 c8
然后用u命令 可以查看内存中机器码对应的汇编指令
u 0100:0100
我们发现 内存中数据和指令存在的形式没有区别 关键在于如何解释
如果想用t命令执行内在中的指令 要先让CS IP 指向这个内存(用r命令改 rCS rIP)
rcs
0100
rip
0100
t (ax变成1)
t (cx变成2)
t (ax变成3 此时IP由0100变了三次变成 0108)
接下来用a命令 向内存写入汇编指令
a 1000:0
mov ax,5
mov bx,6
mov cx,7
rcs
1000
rip
0
t
t
t
结束