使用Bochs模拟器和IDA调试MBR

Bochs源码分析 - 4: 使用ida来调试bochs 前言 bochs内部提供了一个调试器,但是这个命令行调试器相当难用,想找一个gui的debugger。第一次是在百度百科的bochs词条中介绍的peter-bochs-debugger调试器(java编写),但是后来发现ida也有一个bochs调试器,因为对ida比较熟悉,就选用此作为bochs调试器。 在配置过程中参考博客 https://blog.youkuaiyun.com/cssxn/article/details/90738498 中的配置,但是这是直接发布版本,拿源码编译... 阅读详情

需要环境

  • python2.7
  • IDA 7.0
  • Bochs2.6.9
  • nasm.exe(可选)

调试步骤

第一步,创建Img文件

首先需要安装Bochs模拟器,打开安装目录,运行bximage.exe,选择1,然后一路回车,直到出现Press any key to continue
安装目录下会出现一个c.img硬盘镜像文件
在这里插入图片描述
第二步,将MBR文件,写入IMG文件

我这里先使用nasm.exe把一个用汇编写的mbr程序编译成bin文件,如果是有样本的情况下,直接取出感染的mbr部分保存成文件即可
在这里插入图片描述

使用python脚本,把编译好的mbr,写入img文件中

def UpdateImage(imgfile, mbrfile):
  """
  Write the MBR code into the disk image
  """
  
  # open image file
  f = open(imgfile, "r+b")
  if not f:
    print "Could not open image file!"
    return False
  # open MBR file
  f2 = open(mbrfile, "rb")
  if not f2:
    print "Could not open mbr file!"
    return False

  # read whole MBR file
  mbr = f2.read()
  f2.close()

  # update image file
  f.write(mbr)
  f.close()

  return True

下图提示,已经写入成功
在这里插入图片描述

第三步,编写bochsrc配置文件

在bochs安装目录,创建一个模拟器的配置文件bochsrc

romimage: file=$BXSHARE/BIOS-bochs-latest 
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
megs: 16
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="c.img", mode=flat, cylinders=20, heads=16, spt=63
boot: disk

然后测试能否正常加载刚刚写进c.img的mbr

启动模拟器命令:

bochs.exe -q -f bochsrc

在这里插入图片描述
第四步,使用IDA动态调试MBR

把刚才编写的bochsrc文件,使用IDA打开
在这里插入图片描述
在MBR程序入口下断点,然后点绿色按钮启动调试
在这里插入图片描述
调试启动后,会自动打开mbr模拟器,现在就可以调试mbr了~
在这里插入图片描述

参考链接:

自己动手写操作系统(二)——搭建bochs环境 在学习《自己动手写操作系统》第三章时候遇到了运行环境的问题,经过一些思考决定使用bochs,但是网上对bochs的总结零零散散,所以我在这里以第三章程序运行环境搭建来的bochs进行一定的总结 阅读详情

相关推荐

在Rviz仿真环境中搭建传送带

<geometry><material>

qq_58268456的博客 936

IDA&&BOCHS调试MBR

一、说明 IDA都很熟悉,强大的逆向工具。 Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。Bochs模拟的是整个PC平台,包括I/O设备、内存和BIOS。更为有趣的是,甚至可以不使用PC硬件来运行Bochs。对于调试操作系统是灰常强大的。说白了就是一个虚拟机。   二、IDA调试MBR IDA调试MBR比较简单,先配置下虚拟机的VMX文件,添加一下代码: [A...

kingswb的博客 2370

蛋白质组学进阶指南 | (八)差异蛋白筛选与功能解析实战

本文是蛋白质组学差异蛋白筛选与功能解析的实战指南。详细讲解了如何利用R语言的limma包进行差异表达分析,结合FDR校正和差异倍数设定筛选关键蛋白,并通过火山图可视化结果。进一步介绍了使用clusterProfiler进行GO与KEGG功能富集分析,以及利用STRING数据库和Cytoscape构建蛋白互作网络以识别枢纽分子,最终串联分析形成可验证的生物学假说。

weixin_29208077的博客 740

用bochs调试mbr-深入mbr调试分析

上一篇调试mbr的时候有一个call,如果这个call跟进去的话在一个跳转之后内存地址明显不是mbr代码段了,所以上篇调试中并未对这个call深入分析。 问题如图! 在jmp之后的代码与ida完全不一样了。 问题出在int 13h这个地方,int 13h在这里是中断,如果单步步入的话就会进入中断处理程序,所以int中断这里需要单步步过 这里不是jb跳转啊,int指令是不能s单步...

笔记本 1710

深度学习暑期科研项目(两个月发EI论文)

对本科生而言,越早接触系统的科研训练开始上手科研项目,就越能在未来的升学求职中占据很大的优势。暑假是提升个人简历、丰富科研经历的最佳时期!哈尔滨工业大学博士师兄也会在8月1日开始带大家上手科研项目,并撰写发表EI会议论文。

Magnolia_He的博客 1443

医学影像弹性形变处理

这段代码的主要流程是:读取 DICOM 医学影像,尝试使用 MONAI 进行弹性形变(根据版本适配),如果失败则使用 OpenCV 实现,最后可视化并保存处理结果。这样可以在不同环境下灵活处理医学影像的弹性形变需求。后面会写一篇解释弹性变形方法的短文。

wh_xia_jun的专栏 779

使用BOCHS调试MBR

基于上一篇文章,所有操作完成之后运行“WinXP.bxrc”,不出意外的话会提示“NTLDR is missing”这就可以了。 新建一个BAT,内容如下: ..\bochsdbg.exe -q -f WinXP.bxrc执行BAT就进入了调试模式,两个窗口全部停住,界面如下: 现在的CPU应该是停在了F000:FFF0地址,是一个JMP指令,用于跳转到BIOS的ROM中。 之后的

SomeTimes 3074

单细胞分析(19)—— 单细胞转录组基因集评分方法

在单细胞RNA测序(scRNA-seq)分析中,基因集评分(Gene Set Scoring)是一项关键任务,能帮助研究者识别细胞功能状态

阅读文献,记录学习笔记 2439

用bochs调试mbr--开始调试啦

上一篇写了安装系统,这篇就开始正式调试啦 1.上节写了个run.bat是通过给bochs.exe主程序传参实现的系统开启,调试也是一个道理 在run.bat目录下写一个debug.bat 使用相同参数调用即可 2.下面是调试过程 Next at t=0 (0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b ...

笔记本 732

TypeScript领域建模实战:基于斯坦福本体论七步法构建健壮数据模型

在软件工程中,领域建模是连接业务需求与技术实现的关键桥梁,其核心在于对业务概念、属性及其关系的显式定义与规范。通过系统化的建模方法,开发者能够将模糊的领域知识转化为清晰、可扩展且类型安全的数据结构,从而在编译时捕获潜在错误,提升代码质量与可维护性。这一过程的技术价值在于实现了从业务逻辑到类型系统的无损映射,确保了设计的一致性。在实践中,结合TypeScript的静态类型检查与Zod的运行时验证,可以构建起从概念到代码再到数据库的三层一致性约束。本文以电商、博客等常见应用场景为例,深入解析如何运用源自斯坦福知

weixin_42551967的博客 383

五、MT8168 音频驱动之SPEAKER

本章主要讲解MT8168平台的内部SPEAKER驱动配置。分为HP接法和LINE OUT接法。2.1.3 audio_custom_exp.h设置。2.1.4 mixer_paths.xml设置。2.2.3 mixer_paths.xml设置。2.1.2 ProjectConfig 设置。2.2.2 ProjectConfig 设置。2.2.1 deconfig设置。2.1.1 DTS设置。......

Joon2020的博客 1664

怎么在ida中编译html使用教程视屏,IDA&&BOCHS调试MBR

本帖最后由 willJ 于 2012-11-24 18:41 编辑一、说明IDA都很熟悉,强大的逆向工具。Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。Bochs模拟的是整个PC平台,包括I/O设备、内存和BIOS。更为有趣的是,甚至可以不使用PC硬件来运行Bochs。对于调试操作系统是灰常强大的。说白了就是一个虚拟机。二、IDA调试MBRIDA调试MBR比较简单,先配置下...

weixin_32028965的博客 396

人工蜂群优化算法(ABC)详解:原理、实现与应用

人工蜂群算法(Artificial Bee Colony, ABC)是Karaboga于2005年提出的一种群体智能优化算法,其灵感来源于蜜蜂群体在自然界中高效的采蜜行为。该算法通过模拟雇佣蜂、观察蜂和侦察蜂三种角色的分工协作来寻找最优解。在ABC算法中,每个潜在的解决方案被视为一个“食物源”,其质量由适应度函数评估。雇佣蜂负责在已知优质食物源附近进行局部开采;观察蜂根据雇佣蜂分享的信息,以一定概率选择并跟进优质食物源;侦察蜂则随机探索新区域,防止种群陷入局部最优。

qq_42212808的博客 393

【Linux】编写最简单操作系统(mbr)并用bochs工具调试

----------------------------------------------------------------------------------------------------------- 0-3ff 1k用于中断向量表 400-4ff 256B bios数据区 500-7Bff 30kb 可自定义区域 7C00-7BFF 512b MBR被bi...

梦想博客 1593

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

win7 下 bochs 运行 Hello World OS

安装 bochs,dd for windows,nasm 用 bochs 中 bximage.exe 创建新的 img 文件 编写 Hello.asm org 07c00h ; 告诉编译器程序加载到 7c00处 mov ax, cs mov ds, ax mov es, ax call DispStr ; 调用显示字符

一刀不二 4211

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Bochs安装及常见问题解决

解决办法:作者指出,我们换一种显示的方案就可以了。首先安装bochs-sdl,用apt-get可以安装。安装命令如下:sudo apt-get install bochs-sdl。改成: vgaromimage: file=/usr/share/vgabios/vgabios.bin。解决办法:将vgaromimage: /usr/share/vgabios/vgabios.bin(注释掉)由于bochs依赖一些软件,因此在首次运行的时候可能会有一些错误。下面是常见的错误及解决方法。

Tancilon的博客 756

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Windows下Bochs的简单使用

Bochs的安装 安装Bochs后,安装目录如下: 可以用到的东西分为两大类: 应用程序 先说一下bochs.exe、以及bochdbg.exe前者直接运行虚拟机,后者可以从头开始调试。 然后就是bximage.exe,这是一个专门用于生成软盘或者磁盘镜像的软件,并且可以对镜像的参数进行调整。 其余都不常用。 各种资源文件 在用于配置虚拟机,告诉Bochs要运行的虚拟机是什么样的: BIOS系...

lhl2014123的博客 8720

在UBUNTU上安装基于bochs的 xv6

第一个步骤——安装bochs: 在安装bochs时需要从官网x下载tar包 解压后, 首先配置configure, ./configure --prefix=/usr/local/bin/bochs –enable-debugger –enable-disasm --enable-x86-debugger --with-x --with-x11 (–enable-debugger和 –enable...

weixin_30565199的博客 502

【开发操作系统】1 搭建虚拟开发环境

一、为什么需要搭建虚拟开发环境 操作系统作为软件,是从硬件设备加载,执行的的二进制代码。因此,从做一个可以快速加载启动的简单小系统开始,毕竟有成就感。也是后续开发运行的基础。 选择虚拟环境,而不是直接进行硬件加载,首先是方便开发。另外可以节省资源。虚拟环境就是采用软件模拟了硬件环境。 因此各种虚拟机、模拟器都可以用来做这样的工作。网络上有很多采用虚拟机来进行硬盘加载开发的,也有采用模拟器进行的。 我们这里先介绍采用一个主流的x86模拟器bochs进行搭建入门。后续再介绍采用虚拟机,以及其中的原理。 二、搭建

xihuanyuye的博客 2319

linux-0.11调试教程,Bochs-2.1.1配置文件,精简版可拷贝,及img文件制作过程

说明1:BIOS-bochs-latest文件和VGABIOS-elpin-2.40文件都在bochs安装目录下,既C:\Program Files\Bochs-2.1.1 说明2:bootimage-0.11-hd和diskb.img和hdc-0.11.img都是用户自己制作或下载的别人制作好的文件。 下面是bochsrc-hd.bxrc文件的内容: romimage: file=

linux-0.11调试教程 4962

使用bochs自带工具生成image文件

使用bochs自带工具生成image文件;

bcbobo21cn的专栏 870

在bochs虚拟机中安装WindowsXP (学习)

好吧话不多说,开始安装 WIndowsXP 1、下载安装bochs……(这步不会的下面可以不用看了……) 2、在Bochs安装目录中创建一个WinXP文件夹(同上面的括号) 3、创建虚拟硬盘用于存放WinXP镜像 具体步骤: 进入命令提示符,使用bximage工具 生成image需要回答几个问题 一:生成硬盘还是软盘 二:镜像类型 flat sparse or growing 三

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 9660

bochsdbg调试保护模式程序的方法

Bochsrc_sample.txt里有提到: “在Bochs的配置文件里加上一句magic_break: enabled=1,然后在程序里加上一句xchg bx,bx,运行到这条指令时会断到Bochs调试器里。这样就可以继续调试下去了。

aliec的专栏 1299

Bochs源码分析 - 2:使用bochs运行引导代码

前言 这一篇文章中,我们尝试使用编写引导代码,然后配置bochs让其可以运行这份代码,过程中遇到的问题,为什么这么做,我会尽可能详细的描述给大家,当然自己可能存在错误,请见谅!! 安装 nasm 编译器 ...

WriteAnything_的博客 1312
上一篇: chm混淆+qq白利用免杀360主动防御
下一篇: 使用Office进行DDE攻击
FFE4
博客等级 码龄9年 234粉丝 166原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值