首页 > 编程语言 >学习x86汇编语言6 使用Bochs调试自己的引导程序

学习x86汇编语言6 使用Bochs调试自己的引导程序

时间:2022-11-15 18:36:14浏览次数:79  
标签:info 显示 x86 汇编语言 Bochs 寄存器 xp addr

参考:https://blog.csdn.net/xundh/article/details/108139462

一、Bochs简介

Bochs是一个x86 的软件模拟器,用来模拟x86CPU、一些硬件和BIOS等,可以用来运行Windows、Linux等软件。
由于它是纯软件模板,所以运行速度比起VmWare,VirtualBox可能会慢一点。

二、启动镜像的操作过程

1. 下载地址

https://sourceforge.net/projects/bochs/files/bochs/2.6.11/
安装后启动。

2. 启动一个虚拟机

在这里插入图片描述
点Start,启动一个Linux虚拟机。
在这里插入图片描述
Power按钮可以关闭虚拟机。

3. 修改配置,装载自己的启动镜像

再打开Bochs,Load 默认的Linux镜像。
选择Disk & Boot,把First Floppy Drive指向之前做的启动镜像。

在这里插入图片描述
选择Boot Options,选择Boot drive #1 为:floppy
在这里插入图片描述

另外注意Memory下ROM BIOS image的路径是相对路径,要改成绝对路径:
在这里插入图片描述
同样 Keymap filename、VGABIOS-lgpl-latest、ata0-master也改成绝对路径。

设置完点Save把设置另外保存一个配置文件。

再启动虚拟机,加载了之前的镜像:
在这里插入图片描述

三、使用bochsdbg.exe调试程序

1. 进入调试状态

bochsdbg.exe在安装目录下,开始菜单可能找不到它。使用bochsdbg.exe启动镜像。
在这里插入图片描述
help命令可以看到一些使用帮助。

常用命令:

`# 设置断点,b,pb,vb
b 0x7c00   #启动时设置断点,实模式的7c00就是启动程序入口
# 执行到断点
c
# 查看断点
info break
# 单步执行 
s
# 再执行几条就中断,值是L结尾的64位整数
sb [10L]
# 切换到v86模式时中断
modelbp
# 执行几条语句 
step n
# 单步运行,遇到函数跳过
n
# 查看内存值,物理地址
xp 0xffff
# 查看线性地址
x /nuf addr
# 打印寄存器
print-stack
# 单步调试显示寄存器值
trace-reg on
# 反汇编执行的每一条指令
trace-on
# 查看寄存器 r,fp , sreg, creg
r
# 查看堆栈
print-stack
# 反汇编 u/disas/disassemble [/num] [start] [end]
u start end
# 设置寄存器,支持 eax,ecx,edx,ebx,esp,ebp,esi,edi
set $reg=值
# 设置 cpu
set_cpu
# 显示CPU信息
dump_cpu
# 输入的调试指令记录到文件
record "filename"
# 回放记录
playback "filename"
# 加载符号文件
load-symbols [global] filename [offset]` 

![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)

在这里插入图片描述

2. 查看内存

  • x /nuf [addr] 显示线性地址的内容
  • xp /nuf [addr] 显示物理地址的内容

参数说明:

- n 显示的单元数

-u 每个显示单元的大小,u可以是下列之一:

  • b BYTE
  • h WORD
  • w DWORD
  • g DWORD64

-f 显示格式,f可以是下列之一:

  • x 按照十六进制显示
  • d 十进制显示
  • u 按照无符号十进制显示
  • o 按照八进制显示
  • t 按照二进制显示
  • c 按照字符显示

n、f、u是可选参数。

  • 如果不指定,则u默认是w,f默认是x。
  • 如果前面使用过x或者xp命令,会按照上一次的x或者xp命令所使用的值。
  • n默认为1。
  • addr 也是一个可选参数,如果不指定,addr是0,如过前面使用过x或者xp命令,指定了n=i,

则再次执行时n默认为i+1。

`xp /12bc 0x7c1e` 

在这里插入图片描述

3. info命令

  • info program 显示程序执行的情况。
  • info registers|reg|r 显示寄存器的信息。
  • info pb|pbreak|b|break 相当于blist。
  • info dirty 显示脏页的页地址。
  • info cpu 显示所有CPU寄存器的值。
  • info fpu 显示所有FPU寄存器的值。
  • info idt 显示IDT。
  • info gdt [num] 显示GDT。
  • info ldt 显示LDT。
  • info tss 显示TSS。
  • info pic 显示PIC。
  • info ivt [num] [num] 显示IVT。
  • info flags 显示状态寄存器。
  • info cr 显示CR系列寄存器。
  • info symbols 显示symbol信息。
  • info ne2k|ne2000 显示虚拟的ne2k网卡信息。

参考:
https://blog.csdn.net/liu0808/article/details/53099099#t0

标签:info,显示,x86,汇编语言,Bochs,寄存器,xp,addr
From: https://www.cnblogs.com/kuangke/p/16893447.html

相关文章

  • IDT系列:(二)中断处理过程,使用bochs调试IDT中的中断服务程序
    参考:https://blog.csdn.net/liujiayu2/article/details/73947357一、中断处理的过程根据Intel64andIA-32ArchitecturesSoftwareDeveloper’sManual的介绍,在中断......
  • bochs利用中断调试dos程序
    参考:https://blog.csdn.net/ruyanhai/article/details/7199858本文主要内容:在bochs中运行dos程序,如何在程序的开始处中断使用bochs调试,如何在程序的任意位置下断点......
  • 汇编语言(Assembly Language)指令表
    汇编指令英文全称1.通用数据传送指令MOV---->moveMOVdest,src;dest←srcMOV指令把一个字节或字的操作数从源地址src传送至目的地址dest。MOVSX---->extendedm......
  • 操作系统迁移实战之X86硬件兼容性移迁指南
    X86硬件兼容性移迁指南(openEuler20.03LTSSP1)案例环境硬件硬件如下表所示项目说明服务器2288HV5CPUInter(R)Xeon(R)[email protected]......
  • bochs调试方法与指令详解
    参考:https://blog.csdn.net/liu0808/article/details/53099099#t0bochs调试FAQ:一基本调试命令1.       Q:如何从引导扇区开始设置断点?A:BIOS被载入内存中......
  • bochs 调试 com 文件
    参考:https://blog.csdn.net/housansan/article/details/41833581在网上看到2中解决此问题的方法:1.使用dos下的debug32工具单步跟踪pmtest2.com的运行情况。但这个方法存......
  • C温故补缺(六):C反汇编常用的AT&Tx86语法
    C语言反汇编用到的AT&Tx86汇编语法参考:CSDN1,CSDN2默认gcc-S汇编出的,以及反汇编出的,都是AT&Tx86代码,可以用-masm=intel指定为intelx86汇编格式gcc-Stest.c-m......
  • x86-ret2csu
    #x86-ret2csu就进阶一下中级ROP,嗯嗯###demo源码也没有太难,也没有过多的利用其他的东西```c//gcc-zlazy-fno-stack-protector-no-pie-ocsucsu.c#include<stdi......
  • 谜题:打造极小ELF文件输出文件(使用汇编语言通过系统调用来实现)
    接上文《谜题:打造极小ELF文件输出文件(通过C语言来实现)》在本篇中,我们要写出一段直接通过系统调用的方式、且使用尽可能少的指令的汇编代码来实现目标。可以省略的代码,就......
  • 汇编语言符号解析
    汇编语言符号解析参考文献链接https://www.docin.com/p-1987059541.htmlhttps://blog.csdn.net/tj_nonstoper/article/details/124784395http://www.kaotop.com/it/168644.......