网站地图    收藏   

主页 > 后端 > 网站安全 >

使用bochs调试MBR - Windows操作系统 - 自学php

来源:自学PHP网    时间:2015-04-17 18:33 作者: 阅读:

[导读] Author:CryinDate:2010.03.27连接:http://hi.baidu.com/justear一、环境配置: 操作系统:Microsoft Windows XP Professional Service Pack 3 调试工具:bochs 2.4.0.0 ...

Author:Cryin
Date:2010.03.27

连接:http://hi.baidu.com/justear
一、环境配置:
     操作系统:Microsoft Windows XP Professional Service Pack 3
     调试工具:bochs 2.4.0.0
     1、安装bochs:
     Bochs是一种十分轻便的使用c++编写的开源IA-32(x86)电脑模拟器,可以运行在最受欢迎的平台上。它仿真英特尔x86 CPU、常见的I/O设备、和定制的BIOS。目前,Bochs可以被编译仿真386、486、Pentium/PentiumII/PentiumIII/Pentium4或x86-64位的CPU,包括可选的MMX,SSEx和3DNow指令。在Bochs仿真环境里能够运行许多操作系统,比如Linux、DOS、Windows 95/98/NT/2000/XP或者Windows Vista。Bochs是由凯文·劳顿编写的,目前由“http://bochs.sourceforge.net”的Bochs项目组维护。
     如果论性能的话bochs远不及VMware等其他虚拟机,但在调试方面,bochs却有其它虚拟机所不及的优越之处。本文主要介绍如何配置bochs调试环境以及如何用bochs调试MBR程序。重点介绍调试环境配置方法和简单的MBR实例调试。并不对调试MBR做详细分析。主要是做一个文档型的记录。因为本人在使用bochs调试这个过程中摸索了相当长时间,也走了不少弯路。所以如果这个文档能给一些人带来些许帮助,也算是助人为乐,再者,几乎每次重新搭建bochs时总是很乱,所以写此文以备将来再次配置调试环境做参考!
     Bochs的最新发布版本可以从bochs主页
http://bochs.sourceforge.net下载,也可以从该站点获取到bochs相关说明文档以及源代码。本例使用版本为bochs 2.4.0.0。
     配置Bochs需要相关的文件有bochs.exe、bochsdbg.exe、bximage.exe、DEBUG32.EXE以及一些原本没有可能需要自己下载的文件niclist.exe和WinPcap_4_0_2.exe。既然bochs本身是虚拟机那首先要装一个系统,本例使用win 2k系统。
     1) 创建虚拟硬盘:
     双击运行bximage.exe创建一个4G、flat模式的虚拟硬盘文件disk.img;这样就会在当前目录下生成大小为4G的disk.img文件。具体操作如图:

     
     2) 安装系统:
     用win 2k系统盘直接安装或者创建一个ISO镜像的文件,鉴于bochs虚拟机的速度,还是不推介自己安装系统,最好和别人直接拷贝一份已经安装好操作系统disk.img文件。
     3)创建win2k.bxrc:
主要内容:
#win2k.bxrc配置信息
#设置默认系统BIOS ROM模块
romimage: file=$BXSHARE/BIOS-bochs-latest
#设置CPU参数
cpu:count=1,ips=22100000, reset_on_triple_fault=1, cpuid_limit_winnt=0, msrs="msrs.def"
#设置内存,可以选择8、16、32、64、128或者512
megs: 512
#设置默认VGA ROM模块
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
#vga: extension
vga: extension=vbe
#选择并设置软驱A,注意此处设置,在调试时将mbr文件改为a.img即可进行调试
floppya: 1_44=a.img, status=inserted
#ATA controller for hard disks and cdroms
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11
ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9
#选择引导设备
boot: floppy, disk
# Enables or disables the 0xaa55 signature check on boot floppies
floppy_bootsig_check: disabled=0
#关闭日志
log:nul
# LOG CONTROLS
panic: action=ask
error: action=report
info: action=report
debug: action=ignore
# DEBUGGER_LOG:
debugger_log: -
#设置建立串口通道,可以与windbg相连.本例中不需要可以注释掉
com2: enabled=1, mode=pipe-server, dev=\.pipecom_2
# VGA_UPDATE_INTERVAL
vga_update_interval: 300000
# KEYBOARD_SERIAL_DELAY
keyboard_serial_delay: 250
# KEYBOARD_PASTE_DELAY
keyboard_paste_delay: 100000
# MOUSE
mouse: enabled=0
#private_colormap
private_colormap: enabled=0
#设置网卡信息
ne2k:ioaddr=0x300,irq=10,mac=00:1B:77:59:AC:28,ethmod=win32,  

ethdev=DeviceNPF_{5175FF64-AD7E-4B75-A4E0-540FA4AAF493}
# pnic: Bochs/Etherboot pseudo-NIC
pnic: enabled=1, mac=00:26:55:36:ec:ae, ethmod=vnet
# KEYBOARD_MAPPING
keyboard_mapping: enabled=0, map=
# #设置硬件设备显卡、网卡.
i440fxsupport: enabled=1, slot1=pcivga, slot2=ne2k
#设置PCI设备码、厂商码.貌似可以随便写
pcidev: vendor=0x1234, device=0x5678
#end of win2k.bxrc配置信息

     上面关于win2k.bxrc配置信息的内容中有一处需要设置网卡信息,这个就可以使用我上面提到的niclist.exe这个程序了,而使用这个程序需要安装WinPcap,本例使用WinPcap_4_0_2.exe;双击niclist.exe即可获得相关信息,本例使用本机的网卡信息,图上显示数条网卡信息因安装VMware缘故。如图:
      


     4)创建运行bochs的批处理文件
     创建运行bochs批处理文件"运行.bat",主要内容:
set BXSHARE=F:ochs #此处为bochs调试器bochs.exe的路径
%BXSHARE%ochsdbg.exe -q -f win2k.bxrc
rem %BXSHARE%debug32.exe -q -f win2k.bxrc
#win2k.bxrc为上一步创建的win2k.bxrc配置信息文件
     5)使用bochs开始调试:
     到这一步就可以使用bochs进行调试了,双击"运行.bat"批处理文件即可打开bochs调试器,如果有a.img文件,bochs会以光盘启动方式启动操作系统;如果没有a.img文件,bochs会以硬盘形式启动操作系统,当然a.img的名称可以在win2k.bxrc配置信息文件中按照个人喜好随意修改。
     二、使用bochs调试MBR
     1)编写MBR程序:
     本例中使用我之前写过的一个MBR小程序"基于MBR的系统登录密码验证程序"进行演示使用bochs调试MBR的方法,具体可参见html">http://hi.baidu.com/justear/blog/item/3be1e953295501838c5430d2.html,首先将汇编代码用NASM编译生成的bin文件拷贝到bochs文件夹下并更名为a.img,这样bochs就会以a.img作为光盘启动操作系统
     2)Bochs调试命令:
     鉴于文章主题,这里只简单介绍一些最常用的bochs调试命令,作为入门这些就足够了,更多的可以参考bochs相关的说明文档。网上也有很多bochs调试命令的资料。下面只介绍本例中用到的若干命令;
命令 c 运行程序,相当于windbg的g以及OD的F9
命令 s 即step,单步执行程序
命令 p 单步执行,步过函数
命令 q 退出bochs并关闭虚拟机
命令 b 下断点命令,如本例中:b 0x7c00
命令blist 显示断点状态
命令 watch 显示当前所有读写断点
命令 r 显示寄存器的值
命令 u 反汇编代码,可设定起始和结束位置
命令 info 根据参数不同显示相关信息
     3)开始调试MBR
     将第一步编写的MBR程序拷贝到bochs调试器文件夹下并更名为a.img,双击运行.bat开始调试,看到如下界面就说明一切工作正常,就可以开始调试了;
      


     下面是具体的调试代码:

F:ochs>set BXSHARE=F:ochs

F:ochs>F:ochsochsdbg.exe -q -f win2k.bxrc
00000000000i[APIC0] local apic 0 initializing
==================================================================
                         Bochs x86 Emulator 2.4
                 Build from CVS snapshot on May 3, 2009
============================

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论