Bochs安装FreeDOS与调试

最经看《80x86汇编语言程序设计》杨季文等著,里面的保护模式的例子无法调试,后来查到bochs可以调试,就折腾了一番,这里写下吧……

>>>>>>>>>>>>>>>>>>>>>>>无耻的分割线>>>>>>>>>>>>>>>>>>>>>>>>

下载地址:

Bochs:http://bochs.sourceforge.net/

FreeDOS:http://www.freedos.org/      这个我下载的1.0,官网上是1.1,一是1.1比1.0大,而是我这1.1安装时卡逼了……1.0装成了……

WinImage:http://www.xdowns.com/soft/6/7/2006/Soft_29274.html     用于将需要的文件加入到虚拟硬盘

接下来是安装:

Bochs没啥说的,就是安装时把那个DLX Linux Demo也选上,后面方便点,这个您随意……安装时选择Install just for me就可以自定义了,安装完后桌面上会出现一个打开简易linux的快捷方式,如果您刚才选择安装了的话

接下来就是配置了

首先打开安装目录,打开bximage.exe创建虚拟硬盘,前两部可以直接摁回车,到了第三步是设置大小的,默认10M……大小您自己看着办吧,别小的装不下系统就好 - -

第四步是给这文件起个名字……您继续随意……但后缀得是.img,然后别着急着关,下面会出现一传参数,它已经给你复制好了,一会你直接复制到配置文件就可以了,下面说下配置文件

如果您装了哪个linux,就把她里面的配置复制过来改改就好,没装的话,您照着bochs安装目录下的bochsrc-sample.txt文件改,别看一大堆,大部分是注释,带#号的都是注释……首先新建个文件夹,例如freedos,将虚拟硬盘、操作系统的iso文件和那个配置文件复制过来,然后改配置文件了

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

# how much memory the emulated machine will have

#这是内存的大小

megs: 32                                                                                        
# filename of ROM images

#这是bios文件地址 romimage: file=../BIOS-bochs-latest vgaromimage: file=../VGABIOS-lgpl-latest
# what disk images will be used

#这是设置要使用的软盘驱动器。 floppya: 1_44=floppya.img, status=inserted floppyb: 1_44=floppyb.img, status=inserted
# hard disk

#这是硬盘 ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17
# choose the boot disk.

#这是选择启动盘,c表示从“硬盘”启动,这个可是指我们的虚拟硬盘 boot: c
# default config interface is textconfig. #config_interface: textconfig #config_interface: wx
#display_library: x # other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga
# where do we send log messages?

#这个可以不要,是日志文件,不要设置为log:nul log: bochsout.txt
# disable the mouse, since DLX is text only

#是否要鼠标。 mouse: enabled=0

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

上面这个是那个linux的配置文件,注释我也从别地抄过来了……接下来把刚才虚拟硬盘那行参数复制到硬盘那里,注释掉原来的

>>>>>>>>>>>>>>>>>>>>>>>>

# hard disk

#这是硬盘 ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 #ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17

ata0-master: type=disk, path="100M.img", mode=flat, cylinders=203, heads=16, spt=63

ata0-slave: type=cdrom, path="操作系统文件名.iso", status=inserted

>>>>>>>>>>>>>>>>>>>>>

这里改成cdrom,安装完成后再改成c

>>>>>>>>>>>>>>>>>>>>>>>>>

# choose the boot disk. boot: cdrom

>>>>>>>>>>>>>>>>>>>>

接下来打开freedos文件下,也就是您刚创建的文件夹下的bochsrc.bxrc开始安装freedos

执行bochsrc.bxrc,格式化硬盘:

a.Prepare the harddisk for FreeDOS 1.0 Final by running XFdisk,回车后选择OK;
    b.继续回车,选择New Partition / Primary Partition,一路YES下去;
    c.继续回车,选择Install Bootmanager;
    d.按F3,一路YES下去;

5、安装FreeDOS

a.Continue with FreeDOS installation
    b.Start installation of FreeDOS 1.0 Final
    c.一路YES下去即安装完成;

安装完成后打开配置文件把boot: cdrom这里再改为boot: c即可

运行freedos,进入dos后md新建个文件夹

往里面添加要调试的文件,用winimage打开你创建的那个虚拟硬盘,把文件加入你创建的那个文件夹即可

>>>>>>>>>>>>>>>>>>>>>>万恶的分割线>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

接下来是调试打开bochsdbg.exe,单击Load,载入freedos的配置文件,然后start,就断在那里了,下面给大家一些调试命令和方法

bochsdbg的基本命令:

指令 举例 说明
b addr b 0x7c00 在指定内存物理地址设置断点
info b info b 查看已经设置了的断定信息
d num d 1 删除断点,num为使用info b显示的断点序号
c c 继续执行,直到遇到下一个断点
s s 单步执行
n n 单步执行(遇到函数跳过)
u start end u 0x7c00 0x7ca0 反汇编一段内存
sreg sreg 查看寄存器信息(查看GDT与LDT是否加载正确,段寄存器的值等)
r r 查看通用寄存器信息

下面是网上找到的一些方法:

第一种:陷阱

在内存某位置挖一个坑,等着我们的程序跳进去。在程序开头处增加一段代码,访问某内存地址,在Bochsdbg里下该地址的内存访问断点。程序一开始运行……等它跳进来的时候抓住它。

详细过程请猛击这里:http://www.aogosoft.com/downpage.asp?mode=viewtext&id=140

第二种:死循环

在程序开头加一句jmp $让我们的程序死循环,在Bochs里执行这个程序,然后在Bochsdbg里按下Ctrl+C,然后修改EIP寄存器的值指向我们的程序入口。

前两种都是在网上找到的,都可行,但是比较麻烦,下面这种是天杀老大教给我的,也是Bochs提供的功能。

在程序开始处添加一句xchg bx,bx,然后在Bochsrc.bxrc文件里添加一句magic_break: enabled=1,然后选择调试启动Bochs虚拟机,当执行到xchg bx,bx指令时就会自动断到Bochsdbg里。

这种方法在Bochsrc_sample.txt文件里有介绍,但我想很多人都跟我一样没仔细看:-)

参考:

http://blog.csdn.net/fazai001/article/details/6694559

http://www.360doc.com/content/12/0108/15/6938655_178090482.shtml

时间: 2024-09-30 21:06:19

Bochs安装FreeDOS与调试的相关文章

Linux下的bochs安装

强烈建议使用ubuntu系统,apt-get指令太好用了,安装各种依赖相当简单. 1.首先到bochs网站上下载一个linux版本bochs.在安装之前需要安装一些依赖: sudo apt-get install build-essential sudo apt-get install xorg-dev sudo apt-get install libgtk2.0-dev sudo apt-get install bison 2.解包 tar -jxvf bochs-2.4.6.tar.gz 3

《操作系统真象还原》bochs安装

在安装bochs之前,我们先需要安装虚拟机和linux发行版,也可以安装双系统,总之有个linux操作系统就好. 我是在ubuntu14.04系统下安装bochs的. 安装Bochs 以下为安装步骤 下载bochs.官方地址是http://sourceforge.net/projects/bochs/files/bochs/,安装的版本是2.6.2,下载后的文件是bochs-2.6.2.tar.gz. 解压压缩包 tar zxvf bochs-2.6.2.tar.gz 编译.先进入到目录 cd

bochs安装一系列问题

操作系统:ubuntu 12.04 apt-get install bochs 错误一: 00000000000p[     ] >>PANIC<< bochsrc:10: vgaromimage directive malformed. vgaromimage: /usr/share/vgabios/vgabios.bin 改成 vgaromimage: file=/usr/share/vgabios/vgabios.bin 错误二: Event type: PANIC Devi

mysql分析(一)源代码安装及简单调试

一.源代码安装安装方式有两种,一种是二进制文件的安装,另一种是源代码级别安装.不同的二进制安装只是将同一份源代码在不同的机器上编译并且按照指定的运行格式进行尽量简单的配置,所以二进制安装的发行包命名中包含有操作系统的信息,源代码发行版本中中只有版本信息,不包含OS信息.在下载的5.5.28版本自带的INSTALL-SOURCE文件中的一些摘录内容       Standard distributions are available as compressed tar files,       Z

bochs 安装步骤

OS: centos7.6 1810 1.下载axel -n 50 https://jaist.dl.sourceforge.net/project/bochs/bochs/2.6.10/bochs-2.6.10.tar.gz 2.安装依赖yum install -y gcc gcc-c++ yum install -y xorg-x11-xauth yum install -y libX* yum groupinstall "GNOME Desktop" 3.编译./configur

linux安装redis和调试

rpm包下载地址:     http://vault.centos.org/6.3/os/x86_64/Packages/1.进入目录,解压文件 # tar  -zxvf  redis-3.2.3.tar.gz 2./home/mine/redis-3.2.3 # make    命令输入后,如果未安装 gcc 会出现以下错误  # yum install gcc    直接下载安装 gcc  3.查看 gcc版本  4.make 时又报错 说关于分配器allocator, 如果有MALLOC

Androidstudio的安装与使用调试

1安装与基本使用 1.1androidstudio的安装 1.到android-studio\bin文件夹里面,根据自己的电脑配置,打开studio.exe或者studio64.exe 2.按照向导默认一步步完成安装. 注: 这里有两个选项“Standard”和“Custom”,即标准和自定义,如果你本机的Android SDK没有配置过,那么建议直接选择“Standard”, 点击“Finish”按钮 3.下载依赖组件 之后便到下载组件页面,这个过程需要FQ,而且依赖你的网速,时间有点久,大家

vs2015的安装和单元调试

1.使用U盘获得vs2015的镜像文件,然后装载进行安装.安装过程如下: 2.代码连接:https://git.coding.net/cao1417146618/zuidazishuzu.git 3.单元测试:  用例编号  用例描述  输入数据  预期输出  实际输出  通过/不通过  评价 1  全正数  1 5 7 8 10  31  31  通过   2  全负数  -1 -5 -7 -8 -10  -1  -1  通过   3  有正有负  -1 5 7 -8 10  14  14  

centos6.5 64练手安装memcached,PHP调试

思路  先安装 memcached  然后安装php的基于扩展libmemcache ,然后安装php memcache扩展包,然后把扩展添加到php.ini 1 yum安装 简单方便 yum install memcached 安装完毕了 2 查看下 memcached -h 3 把memcached加入 启动列表 #chkconfig --level 2345 memcached on 4 配置memcached文件: #vi /etc/sysconfig/memcached 分别代表端口号