《真象还原》读书笔记——第二章 编写 MBR 主引导记录

news2024/11/26 11:37:39

2.1 计算机的启动过程

开机后运行的第一个程序是 BIOS 。
BIOS 搬运 MBR 并 跳转运行 MBR…

2.2 软件接力第一棒 BIOS

全名 基本输入输出系统。

2.2.1 实模式下的 1MB 内存分布

在这里插入图片描述

2.2.2 BIOS 是如何苏醒的

BIOS本身不需要修改,于是被写入了ROM中,被映射在低端1MB内存的顶部,
0xF0000~0xFFFFF,开机CS:IP指向 0xF000:0xFFF0 也就是 0xFFFF0. 也就是只有6个字节够用了,而这6个字节正好是一个跳转语句 JMP far F000:E05B. 跳到了 FE05B 处。这里是BIOS代码真正存在的地方。

BIOS 检测内存、显卡等外设信息,检测通过并初始化好硬件后,开始在内存0x000~0x3FF处建立数据结构,中断向量表IVT并填写中断例程。

2.2.3 为什么是 0x7c00

因为是历史原因。
BIOS将检测到了任何可用的磁盘,BIOS就将其第一个扇区加载到0x7c00。
MBR的任务是加载某个程序(这个程序一般是内核加载器,很少有直接加载内核的)到指定位置,并将控制权交给它。之后MBR就没用了。

2.3 让 MBR 先飞一会

MBR 的大小必须是 512 字节,并且该扇区最后两个字节必须为 0xaa55。

2.3.1 神奇好用的 $ 和 $$,令人迷惑的 section 。

$ 表示 本行代码前的标号。
$ $ 指代本 section 的起始地址。
section 又称 节 段。
如果 section 用了 vstart=xxxx 修饰,则 $$ 则表示 xxxx。
如果想要获得 section 在文件中的真实偏移量(真实地址),nasm编译器提供了 section.节名.start

2.3.2 NASM 简单方法

nasm -f <format><filename> [-o <output>]

-f 是指定输出文件的格式。
nasm -hf 可用查看nasm 编译输出的格式。
在这里插入图片描述
目前只关注 bin 和 elf 这两种格式。
bin 是纯二进制。
elf 和 pe 相似,都是二进制可执行文件,掺杂了程序的内存布局、位置等信息。是给操作系统中的程序加载器用的。

2.3.3 请下位选手MBR 做准备

section MBR vstart=0x7c00
	mov ax,cs
	mov ds,ax
	mov es,ax
	mov ss,ax
	mov fs,ax
	mov sp,0x7c00
	
;使用 int 0x10 功能号 0x06 清屏
	mov ah,0x06
	
	mov bl,0x00
	mov bh,0x07
	mov cx,0x0000
	mov dx,0x184f
	int 0x10
	
;获取光标的位置
	mov ah,0x03
	mov bh,0x00
	int 0x10

;调用13好子功能打印字符串
	mov ax,message
	mov bp,ax
	mov cx,0x0b
	mov ah,0x13
	mov al,0x01
	mov bx,0x0002
	int 0x10

jmp $

message db "This is MBR"
times 510 - ($-$$) db 0
db 0x55, 0xaa

编译

nasm mbr.asm -o mbr.bin

接下来将其写到0盘0道1扇区


if=FILE

指定要读取的文件

of=FILE

把数据输出到哪个文件

bs=BYTES

指定块的大小

count=BLOCKS

指定拷贝的块数

seek=BLOCKS

将块输出到文件时想要跳过多少个块

conv=CONVS

指定如何转换文件

append append mode (makes sense only for output; conv=notrunc suggested)

这句话建议在追加数据时,conv最好用notrunc方式,也就是不打断文件。

下面开始使用命令了

dd if=mbr.bin of=hd60M.img bs=512 count=1 conv=notrunc

得到的输出:

ount=1 conv=notrunc
1+0 records in
1+0 records out
512 bytes copied, 0.00267 s, 192 kB/s

打开 bochs 查看结果:
bochs 的屏幕上显示 “This is MBR”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/181014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

更换新电脑,如何将旧电脑数据/文件传输到新电脑?

最好的数据迁移工具提供了一种简单的解决方案&#xff0c;可将您的数据从一台 PC 传输到另一台 PC。 如果您以前没有做过&#xff0c;那么数据迁移的整个过程可能看起来很吓人。无论您是企业用户还是家庭用户&#xff0c;尝试将所有文​​件和文件夹从一台计算机迁移到另一台计…

CCPC2022(桂林)

题目链接&#xff1a;https://codeforces.com/gym/104008 G Group Homework 题目大意&#xff1a;在树上选出两条链&#xff0c;使得在两条链选中的点中&#xff0c;只被一条链选中的点的点权和最大。 题解&#xff1a;显然两条链要么不相交&#xff0c;要么只相交于一个点。…

WhiteHole Base beta版本正式发布!

体验 当前版本为基础测试版本&#xff0c;测试效果可以前往演示视频查看&#xff1a;https://www.bilibili.com/video/BV18Y411D7sA/?spm_id_from333.999.0.0&vd_source641e71dfd1a118fb834c4a5d156688d5 在线体验地址为&#xff1a; http://47.100.239.95 数据将保存~ …

BGP基础实验

1.先配置好IP和环回 [R1]interface GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0]ip add 12.1.1.1 24 [R1-GigabitEthernet0/0/0]int l 0 [R1-LoopBack0]ip add 1.1.1.1 24 其他同理 2.在R2&#xff0c;R3&#xff0c;R4上配置OSPF ospf 1 area 0.0.0.0 network 3.3.3.3…

线段树(原理,模板)

文章目录线段树线段树代码(单点修改、区间查询)懒惰标记与区间修改树状数组与区间修改线段树 线段树是用来维护 区间信息 的数据结构 它可以在 O(log⁡n)O(\log n)O(logn) 的时间复杂度内实现单点修改、区间修改、区间查询&#xff08;区间求和&#xff0c;求区间最大值&…

Reasoning Through Memorization: Nearest Neighbor Knowledge Graph Embeddings论文阅读

研究问题 将基于记忆的方法与预训练语言模型相结合&#xff0c;以完成知识图谱补全任务 背景动机 传统模型无法处理未见实体记忆增强神经网络的相关进展&#xff0c;即在传统的计算模块之外添加单独的记忆存储模块 模型方法 首先使用预训练语言模型构建实体的知识库&#…

计算机网络第一章 计算机网络与因特网

1.0 目录[TOC]1.1 什么是Internet&#xff1f;1.1.1 最细微&#xff1a;图&#xff08;Graph&#xff09;Internet由结点Node和边Edge组成结点Node分为主机结点和交换结点边Edge分为接入网链路Access和主干链路Backbone结构图如下&#xff1a;1.1.2 网络的网络&#xff08;Netw…

【Python】数值计算基础

note scipy和numpy库可以便捷地进行科学计算&#xff0c;如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等。 文章目录note一、多项式基础1. 1 多项式表示和拟合1.2 多项式插值二、微积分计算2.1 数值积分2.2 符号积分三、矩阵运算3.1 线性方程组的求解3.2 矩…

PHP代码审计之MVC与ThinkPHP简介

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是PHP代码审计之MVC与ThinkPHP简介。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严…

文化向技术投降

《技术垄断:文化向技术投降》泼斯曼 技术发展三个阶段 1&#xff0c;工具使用文化 2&#xff0c;技术统治文化 3&#xff0c;技术垄断文化 趣讲大白话&#xff1a;科技是一把双刃剑 泛滥的信息已经把人给弄懵了 *********** 广义上来讲&#xff0c;公司是技术公司 才有可能有更…

Windows压缩工具 “ Bandizip 与 7-zip ”

前言 &#x1f4dc;“作者 久绊A” 专注记录自己所整理的Java、web、sql等&#xff0c;IT技术干货、学习经验、面试资料、刷题记录&#xff0c;以及遇到的问题和解决方案&#xff0c;记录自己成长的点滴 目录 前言 一、什么是压缩 二、Bandizip的简介 1、大概介绍 2、详细…

Acwing---1238.日志统计

日志统计1.题目2.基本思想3.代码实现1.题目 小明维护着一个程序员论坛。现在他收集了一份”点赞”日志&#xff0c;日志共有 NNN 行。 其中每一行的格式是&#xff1a; ts id 表示在 tststs 时刻编号 ididid 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖…

一起自学SLAM算法:9.3 SVO算法

连载文章&#xff0c;长期更新&#xff0c;欢迎关注&#xff1a; 下面将从原理分析、源码解读和安装与运行这3个方面展开讲解SVO算法。 9.3.1 SVO原理分析 前面已经说过&#xff0c;SVO算法是半直接法的典型代表。因此在下面的分析中&#xff0c;首先介绍一下半直接法的基本原…

网络攻防中监控某个IP的流量和数据分析

网络攻防中监控某个IP的流量和数据分析。 Windows 可以使用 tcpview 工具监控某个IP的流量信息&#xff0c;Linux 可以使用iftop 工具。 新版本的 tcpview 带过滤功能&#xff0c;可以对 IP 进行过滤。最后两列显示的是对应程序发送和接收的字节数。 tcpview 工具下载地址&am…

【Quicker】您的指尖工具箱

在日常学习和工作中我们常常用到各种各样的小工具&#xff0c;比如&#xff1a;截图并编辑、取色、文字识别、公式识别等等.   倘若这每一项功能都下载一个程序&#xff0c;则会显得非常冗杂。因此&#xff0c;用一个工具箱将这些功能集合起来&#xff0c;则是一个不错的解决…

机器自动翻译古文拼音 - 十大宋词 - 满江红 怒发冲冠 南宋·岳飞

满江红 怒发冲冠 南宋岳飞 怒发冲冠&#xff0c;凭栏处&#xff0c;潇潇雨歇。 抬望眼&#xff0c;仰天长啸&#xff0c;壮怀激烈。 三十功名尘与土&#xff0c;八千里路云和月。 莫等闲&#xff0c;白了少年头&#xff0c;空悲切。 靖康耻&#xff0c;犹未雪。臣子恨&#x…

点云 3D 分割 - RangeNet++(IROS 2019)

点云 3D 分割 - RangeNet&#xff08;IROS 2019&#xff09;摘要1. 引言2. 相关工作3. 我们的方法A. 距离图像点云代理表示B. 完全卷积语义分割C. 基于距离图像的点云重建D. 高效点云后处理4. 实验评价A. RangeNet相对于最新技术的性能B. 消融研究C. 后处理影响D. 运行时5. 结论…

JavaWeb | 预编译SQL及PreparedStatement讲解

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等&#xff0c;如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址&#xff1a;&#x1f525;JDBC Java入门篇&#xff1a; &#x1f525;Java基础学习篇 Java进阶学习篇&#x…

JavaSE总结

JavaSE目录初识JavaJava由来main 方法介绍Java程序的运行数据类型和变量数据类型基本数据类型引用数据类型运算符算术运算符关系运算符逻辑运算符移位运算逻辑控制方法方法的重载与重写关于递归数组二维数组类和对象成员变量成员方法对象this 关键字构造方法封装代码块内部类非…

ext文件系统

Ext文件系统 1.文件目录 1.1 文件控制块FCB 文件系统通过文件控制块&#xff08;File Control Blcok&#xff09;来维护文件结构&#xff0c;FCB包含有关文件的信息&#xff0c;包括所有者、权限、文件内容的位置等文件目录用于组织文件&#xff0c;每个目录项对应一个FCB文…