bochs调试 WONDOWS 10
基本配置
1.启动双击bochsdbg.exe
2.启动配置
常用调试命令
断点操作
b [address] 设置断点,其中 [address] 可以是物理地址(如 pb 0x7c00)、虚拟地址(如 vb 0:0x7c00)或线性地址(如 lb 0x7c00)。
物理地址
pb 0x7c00
虚拟地址
vb 0:0x7c00
线性地址
lb 0x7c00
info break 查询已经设置的所有断点。
程序执行控制
c 或 cont 或 continue 继续执行程序,直到遇到下一个断点。
继续执行,直到遇到下一个断点
c
s 或 step 或 si 或 stepi 单步执行指令。如果带参数 [count],则执行指定数量的指令,如 step 3 将执行接下来的三条指令。
执行1个命令
s
执行3个命令
step 3
寄存器查询
- 段寄存器查询
sreg
- 普通寄存器查询
reg
- 寄存器查询
dump_cpu
info [registers] 或 i r 显示所有寄存器的当前值
查询cup 寄存器的值
info cup
- 内存操作
x /fmt [address] [size] 查看内存区域的内容。/fmt 可以是 /x(十六进制)、/o(八进制)、/d(十进制)或 /a(ASCII)。
mwrite [address] [data] 向内存地址写入数据。
- 其他命令
q 或 quit 或 exit 停止调试并退出 Bochs。
help 或 h 显示帮助信息,可以跟具体命令获取详细帮助,如 help x。
- 反汇编
disassemble [start] [end] 或 dis 反汇编指定范围内的机器码。
- 断点管理
delete 或 del 或 d [breakpoint number] 删除指定的断点。
寄存器
段寄存器
cs:ip 代码段
ds 数据段
mov ax, [bx] ;等价于:mov ax, [ds:bx]
ss :sp 堆栈段 bp
附加段:ES、FS、GS
数据访问:AX,BX.CX,SI,DI
写入磁盘命令
dd if=mbr.bin of=.vhd bs=512 count=1 seek=2
参数解析
- if=mbr.bin: 指定输入文件为mbr.bin,通常这是一个包含主引导记录(MBR)的二进制文件。
- of=.vhd: 指定输出文件为.vhd,这是Virtual Hard Disk(虚拟硬盘)的文件格式,常用于虚拟机环境。
- bs=512: 设置每次读取或写入的数据块大小为512字节,这通常是磁盘扇区的标准大小。
- count=1: 只读取并写入一个数据块。
- seek=2: 在输出文件中跳过前两个512字节的块,从第三个512字节块开始写入数据。
中断
int 10
- AH = 00h:设置显示模式,如文本模式或图形模式。
- AH = 01h:光标位置,设置光标在屏幕上的位置。
- AH = 02h:写入字符,将一个字符写入当前光标位置。
- AH = 03h:读取字符,从当前光标位置读取一个字符。
- AH = 04h:写入字符串,将一个字符串写入当前光标位置。
- AH = 05h:读取字符串,从当前光标位置读取一个字符串。
- AH = 06h:清屏,清除屏幕显示。
- AH = 07h:设置光标形状。
- AH = 08h:设置光标可见性。
- AH = 09h:设置字符属性。
- AH = 0Ah:设置光标起始位置。
- AH = 0Bh:设置光标结束位置。
- AH = 0Ch:设置字符颜色。
- AH = 0Dh:设置页面颜色。
- AH = 0Eh:在当前光标位置输出一个字符。
- AH = 0Fh:读取光标位置。