用bochs调试mbr-初步调试

基于bochs编写操作系统 0x2 BIOS与MBR 前一章中,我们配好了bochs仿真环境,并尝试了运行。由于没有引导程序,启动会报错。总所周知,操作系统启动时各个扇区存储的指令最初是由bios指令搬入内存的,因此,本节与BIOS及MBR相关。 阅读详情

bochs调试过程

(0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b         ; ea5be000f0
<bochs:1> b 0x7c00
<bochs:2> c
(0) Breakpoint 1, 0x0000000000007c00 in ?? ()
Next at t=14090316
(0) [0x0000000000007c00] 0000:7c00 (unk. ctxt): xor ax, ax                ; 33c0
<bochs:3> s
Next at t=14090317
(0) [0x0000000000007c02] 0000:7c02 (unk. ctxt): mov ss, ax                ; 8ed0
<bochs:4> s
Next at t=14090318
(0) [0x0000000000007c04] 0000:7c04 (unk. ctxt): mov sp, 0x7c00            ; bc007c
<bochs:5> s
Next at t=14090319
(0) [0x0000000000007c07] 0000:7c07 (unk. ctxt): sti                       ; fb
<bochs:6> s
Next at t=14090320
(0) [0x0000000000007c08] 0000:7c08 (unk. ctxt): push ax                   ; 50
<bochs:7> s
Next at t=14090321
(0) [0x0000000000007c09] 0000:7c09 (unk. ctxt): pop es                    ; 07
<bochs:8> s
Next at t=14090322
(0) [0x0000000000007c0a] 0000:7c0a (unk. ctxt): push ax                   ; 50
<bochs:9> s
Next at t=14090323
(0) [0x0000000000007c0b] 0000:7c0b (unk. ctxt): pop ds                    ; 1f
<bochs:10> s
Next at t=14090324
(0) [0x0000000000007c0c] 0000:7c0c (unk. ctxt): cld                       ; fc
<bochs:11> s
Next at t=14090325
(0) [0x0000000000007c0d] 0000:7c0d (unk. ctxt): mov si, 0x7c1b            ; be1b7c
<bochs:12> s
Next at t=14090326
(0) [0x0000000000007c10] 0000:7c10 (unk. ctxt): mov di, 0x061b            ; bf1b06
<bochs:13> s
Next at t=14090327
(0) [0x0000000000007c13] 0000:7c13 (unk. ctxt): push ax                   ; 50
<bochs:14> s
Next at t=14090328
(0) [0x0000000000007c14] 0000:7c14 (unk. ctxt): push di                   ; 57
<bochs:15> s
Next at t=14090329
(0) [0x0000000000007c15] 0000:7c15 (unk. ctxt): mov cx, 0x01e5            ; b9e501
<bochs:16> s
Next at t=14090330
(0) [0x0000000000007c18] 0000:7c18 (unk. ctxt): rep movsb byte ptr es:[di], byte ptr ds:[si] ; f3a4
<bochs:17> p
Next at t=14090815
(0) [0x0000000000007c1a] 0000:7c1a (unk. ctxt): retf                      ; cb
<bochs:18> p
Next at t=14090816
(0) [0x000000000000061b] 0000:061b (unk. ctxt): mov bp, 0x07be            ; bdbe07
<bochs:19> s
Next at t=14090817
(0) [0x000000000000061e] 0000:061e (unk. ctxt): mov cl, 0x04              ; b104
<bochs:20> s
Next at t=14090818
(0) [0x0000000000000620] 0000:0620 (unk. ctxt): cmp byte ptr ss:[bp], ch  ; 386e00
<bochs:21> s
Next at t=14090819
(0) [0x0000000000000623] 0000:0623 (unk. ctxt): jl .+9 (0x0000062e)       ; 7c09
<bochs:22> s
Next at t=14090820
(0) [0x000000000000062e] 0000:062e (unk. ctxt): mov si, bp                ; 8bf5
<bochs:23> s
Next at t=14090821
(0) [0x0000000000000630] 0000:0630 (unk. ctxt): add si, 0x0010            ; 83c610
<bochs:24> s
Next at t=14090822
(0) [0x0000000000000633] 0000:0633 (unk. ctxt): dec cx                    ; 49
<bochs:25> s
Next at t=14090823
(0) [0x0000000000000634] 0000:0634 (unk. ctxt): jz .+25 (0x0000064f)      ; 7419
<bochs:26> s
Next at t=14090824
(0) [0x0000000000000636] 0000:0636 (unk. ctxt): cmp byte ptr ds:[si], ch  ; 382c
<bochs:27> s
Next at t=14090825
(0) [0x0000000000000638] 0000:0638 (unk. ctxt): jz .-10 (0x00000630)      ; 74f6
<bochs:28> s
Next at t=14090826
(0) [0x0000000000000630] 0000:0630 (unk. ctxt): add si, 0x0010            ; 83c610
<bochs:29> s
Next at t=14090827
(0) [0x0000000000000633] 0000:0633 (unk. ctxt): dec cx                    ; 49
<bochs:30> s
Next at t=14090828
(0) [0x0000000000000634] 0000:0634 (unk. ctxt): jz .+25 (0x0000064f)      ; 7419
<bochs:31> s
Next at t=14090829
(0) [0x0000000000000636] 0000:0636 (unk. ctxt): cmp byte ptr ds:[si], ch  ; 382c
<bochs:32> s
Next at t=14090830
(0) [0x0000000000000638] 0000:0638 (unk. ctxt): jz .-10 (0x00000630)      ; 74f6
<bochs:33> s
Next at t=14090831
(0) [0x0000000000000630] 0000:0630 (unk. ctxt): add si, 0x0010            ; 83c610
<bochs:34> s
Next at t=14090832
(0) [0x0000000000000633] 0000:0633 (unk. ctxt): dec cx                    ; 49
<bochs:35> s
Next at t=14090833
(0) [0x0000000000000634] 0000:0634 (unk. ctxt): jz .+25 (0x0000064f)      ; 7419
<bochs:36> s
Next at t=14090834
(0) [0x0000000000000636] 0000:0636 (unk. ctxt): cmp byte ptr ds:[si], ch  ; 382c
<bochs:37> s
Next at t=14090835
(0) [0x0000000000000638] 0000:0638 (unk. ctxt): jz .-10 (0x00000630)      ; 74f6
<bochs:38> s
Next at t=14090836
(0) [0x0000000000000630] 0000:0630 (unk. ctxt): add si, 0x0010            ; 83c610
<bochs:39> s
Next at t=14090837
(0) [0x0000000000000633] 0000:0633 (unk. ctxt): dec cx                    ; 49
<bochs:40> s
Next at t=14090838
(0) [0x0000000000000634] 0000:0634 (unk. ctxt): jz .+25 (0x0000064f)      ; 7419
<bochs:41> s
Next at t=14090839
(0) [0x000000000000064f] 0000:064f (unk. ctxt): mov byte ptr ss:[bp+16], cl ; 884e10
<bochs:42> s
Next at t=14090840
(0) [0x0000000000000652] 0000:0652 (unk. ctxt): call .+70 (0x0000069b)    ; e84600
<bochs:43> p
Next at t=14092545
(0) [0x0000000000000655] 0000:0655 (unk. ctxt): jnb .+42 (0x00000681)     ; 732a
<bochs:44> s
Next at t=14092546
(0) [0x0000000000000681] 0000:0681 (unk. ctxt): cmp word ptr ds:0x7dfe, 0xaa55 ; 813efe7d55aa
<bochs:45> s
Next at t=14092547
(0) [0x0000000000000687] 0000:0687 (unk. ctxt): jz .+11 (0x00000694)      ; 740b
<bochs:46> s
Next at t=14092548
(0) [0x0000000000000694] 0000:0694 (unk. ctxt): mov di, sp                ; 8bfc
<bochs:47> s
Next at t=14092549
(0) [0x0000000000000696] 0000:0696 (unk. ctxt): push ds                   ; 1e
<bochs:48> s
Next at t=14092550
(0) [0x0000000000000697] 0000:0697 (unk. ctxt): push di                   ; 57
<bochs:49> s
Next at t=14092551
(0) [0x0000000000000698] 0000:0698 (unk. ctxt): mov si, bp                ; 8bf5
<bochs:50> s
Next at t=14092552
(0) [0x000000000000069a] 0000:069a (unk. ctxt): retf                      ; cb

里面有个call我直接跳过了,试着跟进去看了一下,实在是看不懂,而且代码和ida分析的完全不一样,放弃放弃,直接跳过,大体的思路还是出来了

BOCHS分析XP MBR 这是小白的第一篇CSDN文章,连发文章的一些技巧都没有掌握,但总比不尝试好嘛。 好的,进入主题,我们今天的任务是BOCHS分析MBR,并且理解它的代码指令。 首先通过借鉴他人的一些经验 用bochs调试mbr-深入mbr调试分析 来调出大概的MBR指令进程。 由于博客中也没有贴出具体的分析步骤,所以这里相当于在原博客的基础上做了分析。这里参考了winhex分析MBR 先对MBR有清楚地了解,其实主... 阅读详情

相关推荐

关于Stoned Bootkit v2编译和Bochs调试软盘MBR的吐槽(伤不起啊..)

昨天晚上弄着弄着搞到2点多,早上眼睛睁开,6点40,想着问题没解决,很是不爽,脑海里浮现n种方案(n>2),果断下床继续干活.天不负我..泪流满面.终于停在该死的0x7c00上面了..阿西..上图     图片发到微薄上就删了..大家将就着看吧.     下面不是进入正题,今天没有正题,今天就是吐槽...     前几天看群里三哥发了鬼影3的无壳样本,决心分析一下,结果无奈不是exe,只

GaA.Ra的自留地 in Csdn 8070

【Bochs】利用 Bochs 调试内核

利用 Bochs 调试内核

Jia ming 的日常学习笔记 589

bochs调试指令

bochs调试指令,很详细

《操作系统真象还原》学习笔记:第二章 编写MBR主引导记录

1. 计算机的启动过程 为什么要载入到内存 (1)CPU的硬件电路被设计成只能运行处于内存中的程序 (2)内存比较快,且容量大, 什么是载入内存 (1)程序被加载器(软件或硬件)加载到内存某个区域。 (2)CPU的cs:ip寄存器被指向这个程序的起始地址。 从按下主机power键后,第一个运行的软件就是bios 2. 软件接力第一棒,BIOS BIOS 全称叫 Base Input & Output System,即基本输入输出系统 BIOS是工作在16位实模式下的 2.1实模式下的内存布局

取个名字太难了a的博客 518

bochs-自制启动系统.zip

https://blog.csdn.net/qq2399431200/article/details/104663231 为此博文内的实践资源。

使用bochs调试MBR1

使用bochs调试MBR1

用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

cuda安装时出现错误 Unable to locate package cuda-toolkit-12-4

cuda安装时出现错误 Unable to locate package cuda-toolkit-12-4

4859

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

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

笔记本 1710

【feature_column处理】- indicator_column(指示列)和embedding_column(嵌入列)

1. 开胃菜 我们先来了解一下tf.feature_column.input_layer def input_layer(features, feature_columns, weight_collections=None, trainable=True, cols_to_vars=None, cols_to_output_tensors=None)

DataAlgo 1482

ArcGISPro应用指南:ArcGISPro制图全流程详解

本文介绍了基于ArcGIS Pro的地图制作基本流程,旨在帮助读者快速掌握从数据加载到地图输出的完整制图操作。文章首先简要概述了GIS技术在当今数据驱动时代的重要作用,并引出ArcGIS Pro作为专业GIS平台的优势与应用价值。随后,内容围绕地图制作的核心步骤展开,包括数据加载、布局创建、地图范围设置以及各类地图要素(如指北针、比例尺、图例、图名)的插入与样式调整。此外,还介绍了如何通过添加图形、文本及动态元素增强地图表达效果,并最终完成地图导出设置与文件输出格式的选择。

weixin_45812624的博客 1345

通过Bochs分析Lilo启动Linux内核的过程

1. Bochs调试 参考:http://www.cnblogs.com/long123king/p/3414884.html http://bochs.sourceforge.net/cgi-bin/topper.pl?name=New+Bochs+Documentation&url=http://bochs.sourceforge.net/doc/docbook 类似的文章...

weixin_34185320的博客 287

Keil调试技巧:3种方法查看Cortex-M4的SCB寄存器(含CPUID内存映射解析)

本文详细介绍了在Keil MDK中查看Cortex-M4内核SCB寄存器的三种实战方法:使用Watch窗口进行符号化观察、通过Memory窗口直接查看物理内存映射,以及利用SFR寄存器浏览器解析位域信息。文章重点解析了CPUID寄存器的内存映射地址(0xE000ED00)及其位域含义,帮助开发者深入理解处理器身份识别与底层调试技巧,提升嵌入式系统调试效率。

h6i7j8的博客 561

彩虹猫详细简介

在这里给大家提一个醒,以watchdog为参数运行的MEMZ.exe进程是有5个的,也就是说这里看到的创建一个线程是“某个进程“的行为,5个进程一共应该创建了5个线程,在后面的分析中大家也要注意这一点。在参数的判断阶段,jnz指令控制了参数判断后程序的执行路径,按空格并在弹出的窗口输入nop,勾选“使用NOP填充”,点击汇编按钮后该行原本的6字节指令变为6个nop,nop的意思是CPU不执行任何动作,那么程序执行到此处,就永远不会发生跳转,一定会执行watchdog部分,我们的目的就达到了。

2301_78858007的博客 2092

Excel药品说明书数据库:从零开始搭建医药数据查询系统(附完整模板)

本文详细介绍了如何从零开始搭建Excel药品说明书数据库,提供完整的医药数据查询系统模板。涵盖数据库架构设计、数据清洗标准化、智能查询系统搭建及维护优化,帮助医药从业者高效管理药品信息,提升查询速度和准确性。

weixin_28327051的博客 228

RK3588 MIPI屏幕调试避坑指南:双通道8Lane下DSC压缩屏的花屏、分层问题排查实录

本文详细解析了RK3588平台在双通道8Lane MIPI接口下调试DSC压缩屏时遇到的花屏、分层问题。通过硬件信号完整性检查、软件配置验证及帧数据分析,提供了一套系统化的排查方法,并深入探讨了初始化序列优化和双通道同步机制,帮助工程师高效解决高分辨率屏幕显示异常问题。

weixin_27015733的博客 279

使用bochs调试MBR

<br /> <br />题目:使用bochs调试MBR<br />连接:http://hi.baidu.com/justear <br /> <br />Author:Cryin<br />Date:2010.03.27<br />一、环境配置:<br />操作系统:Microsoft Windows XP Professional Service Pack 3<br />调试工具:bochs 2.4.0.0<br />1、安装bochs<br />Bochs是一种十分轻便的使用c++编写的开源IA-32

咖啡屋 2053

Bellhop水声信道模型的仿真

Bellhop是一种基于射线追踪的水声信道模型,广泛用于预测水下环境中的声压场。它通过模拟声波在水中的传播路径,计算声场分布,适用于复杂的水下通信场景。

yt94832的博客 1301

使用Bochs模拟器和IDA调试MBR

需要环境 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把...

Sven的忘却日记 2575

threadX的USBX的初始化和解初始化的分析。

tx_application_define的最后会使用tx_byte_pool_create创建usb线程的内存空间“ux_device_app_byte_pool”,再创建usb线程,也就是执行。主要就是创建了线程,也就是第3个参数app_ux_device_thread_entry,这个参数内是MX_USB_Device_Init,也就是USB底层初始化。进来的参数只有1个,是memory_ptr,这个就是创建的usb线程空间“ux_device_app_byte_pool”

qq_31885403的博客 643

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

使用BOCHS调试MBR

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

SomeTimes 3074

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IDA&&BOCHS调试MBR

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

kingswb的博客 2366

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用bochs调试操作系统

自 http://bbs.pediy.com/showthread.php?t=123767&highlight=bochs 一、环境配置:   操作系统:Microsoft Windows XP Professional Service Pack 3   调试工具:bochs 2.4.0.0 1、安装:Bochs       Bochs是一种十分轻便的使用c++编写的开源IA-

crystal0011的专栏 1984

bochs调试方法

bochs一般用法 bochs是一个开源x86虚拟机软件。在他的实现中定义了各种数据结构来模拟硬件,用软件模拟硬件速度慢。 bochs的硬件调试体现在: 1)可以查看页表、gdt、idt等数据结构 2)可以查看栈中数据 3)可以反汇编任意内存 4)实模式、保护模式互相变换时提醒 5)中断发生时提醒 bochs中x和xp命令都是用来查看内存的,它们两个的区别在于x命令用于查看线性地址,而xp用来查看...

AlexSmoker的博客 3246

操作系统开发:BIOS/MBR基础与调试

这里在实验之前需要下载 Bochs-win32-2.6.11 作者使用的是Linux版本的,在Linux写代码不太舒服,所以最好在Windows上做实验,下载好虚拟机以后还需要下载Nasm汇编器,以及GCC编译器,为了能够使用DD命令实现磁盘拷贝,这里你可以安装windows 10 下面的子系统Ubuntu,需要使用命令时可以直接切换。

微软技术分享 1万+

从零开始写操作系统——1.部署工作环境(Bochs + MBR)

本文记录了基于《操作系统真象还原》开发轻量级操作系统的环境搭建过程。主要内容包括:1)在Ubuntu20.04上安装必要工具链(build-essential、xorg-dev等);2)下载并编译带调试功能的Bochs模拟器;3)创建虚拟硬盘镜像并编写测试MBR引导程序。重点讲解了各工具的作用及配置参数,如Bochs编译选项--enable-debugger等调试功能,以及如何将MBR程序写入虚拟硬盘。通过Helloworld示例验证了环境搭建成功,为后续操作系统开发奠定了基础。

Canace__的博客 1143
上一篇: 用bochs调试mbr--开始调试啦
下一篇: 用bochs调试mbr-深入mbr调试分析
Istaroth
博客等级 码龄10年 108粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值