问题标签 [mbr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
138 浏览

assembly - `call far TSS descriptor:offset`之后的异常

我有一个大问题让我卡了一个月!我正在编写汇编代码来执行任务切换call far [es:esi + TCB.addr_tss],如图 1 所示。在此处输入图像描述

现在我进入了新任务,所以我在 bochs 中输入 's',如图 2 所示: 在此处输入图像描述

目前看来一切正常,通用寄存器 CS、SS,控制寄存器 CR0、CR3,LDT 也正常。但是你知道如果我再迈一步会发生什么吗?见下图: 在此处输入图像描述

怎么了?!我不知道。我检查了 DPL,段限制,似乎没有错。哦,上帝保佑我...

0 投票
1 回答
225 浏览

linux - 了解汇编代码

任何人都可以对以下汇编代码提供一些见解:

更多信息:

引导加载程序实际上是一个小的 16 位引导加载程序,它使用 Xor 解密,一个更大的引导加载程序,一个位于扇区 3 到 34 的 linux 引导加载程序。(该磁盘中的 1 个扇区是 512 字节)

整个事情是一个运行在嵌入式 Linux 上的 exec 的保护系统。

删除保护的版本已经破译了 linux 引导加载程序(我们可以使用 IDA 将其反转),因此我们假设 xor 密钥必须在没有保护的版本中仅使用零。

如果我们在删除保护的版本中查看偏移量 0x800 到 0x8FF,它不会填充零,因此这不能成为关键,否则无法加载此版本,它将异或纯数据并且只加载垃圾。

扇区 3->34 在原始版本中是加密的,在我们的版本中是明确的(保护已删除),但 MBR 代码(小型预引导加载程序)在两个版本中是相同的。

那么会不会是 MBR 的汇编代码中有一个小细节稍微改变了 xor 键的位置呢?

这只是我为了更好地理解汇编代码加载器而做的一个练习,我发现这是一个相当大的挑战。到目前为止,我感谢您的意见!

0 投票
1 回答
8581 浏览

windows - VirtualBox:将 Win XP 迁移到 Virtualbox 后出现“磁盘读取错误”

我尝试按照https://www.virtualbox.org/wiki/Migrate_Windows将旧的 Win XP Compaq 桌面迁移到 Ubuntu (12.04.1) 下的 VirtualBox (4.2.12)

在 createfromraw 步骤之后,我创建了虚拟机,并尝试启动。启动时立即显示以下消息:

我曾尝试从故障恢复控制台使用 FIXBMR 和 FIXBOOT,但这似乎使情况变得更糟(屏幕上的一些字符已损坏,并出现相同的错误消息)。

我怎样才能让这个虚拟机启动?

0 投票
2 回答
174 浏览

nasm - 引导加载程序跳转到下一个引导设备

到目前为止,我已经设法使用 NASM 编写了一个简单的引导加载程序,它会打印“Hello world”然后挂起。这个引导加载程序有 512K 长,它存储在 pendrive 的 MBR 中。BIOS 配置为首先启动 USB 外部设备,然后启动具有相应操作系统的硬盘驱动器。就像我之前说的,引导加载程序在打印“Hello world”后只是挂起,因为一个永无止境的循环指令 (jmp $)。所以,我想知道在引导加载程序完成执行后是否可以继续引导序列(跳转到下一个引导设备)。从笔式驱动器打印“Hello world”后,有没有办法继续执行操作系统(从 HD)?哪个指令或中断会完成这个?

提前致谢。

0 投票
1 回答
2205 浏览

assembly - 在 nasm 中写入并保存 MBR

我想在我的操作系统上编写自己的MBR boot.Mbr 在不同的文件中 Bootloader 在不同的文件中我想用 int 13h 将 mbr 加载到内存中,但它只加载 bootloader。我认为这是因为 org 示例代码:

我想在那里写 Mbr 但它正在写 Bootload

我在 Windows nasm 中进行编译,我准备了 iso miso.exe 和 copy.exe 谢谢。

0 投票
0 回答
772 浏览

assembly - 使用 Bochs 调试引导加载程序

我正在尝试在 Bochs 中调试 16 位引导加载程序,但是在运行代码时遇到以下错误:

jmp far ptr 0:61Dh => 错误:应有逗号、冒号或行尾

错误截图

有人可以建议我如何正确地在 NASM 中重新组装 MBR 而不会遇到这个错误?

ASM 文件在这里

谢谢

0 投票
2 回答
31176 浏览

linux - 使用vi和hexedit打开一个二进制文件,为什么内容不同?

我正在尝试直接编辑二进制文件,我知道两个编辑器,vi 和 hexedit。但是当我使用它们单独打开一个二进制文件时,cotens 是不同的。下面是我所做的。

首先我使用“dd if=/dev/sda of=mbr bs=512 count=1”来生成包含mbr数据的二进制文件。然后我使用“hexedit mbr”打开它,它显示:开始:

结尾:

我使用“vi mbr”打开它并输入“:%!xxd”,它显示:开始:

结尾:

hexedit 显示是我在 mbr 中所期望的。但是 vi 显示该说些什么呢?而且 vi 显示似乎是错误的,因为有超过 512 个字节。

感谢您的任何解释!

0 投票
2 回答
1244 浏览

assembly - 我无法将 cpu 从实模式切换到保护模式

我是根据 Nick Blundell 的一本书来做的。我写了一个MBR程序,它首先在实模式下运行,程序中的一些指令会将cpu切换到保护模式。首先,我这样设置 GDT:

然后cpu运行以下指令:

该指令jmp CODE_SEG:init_pm将导致cpu崩溃并重新启动。如果我将其更改为jmp init_pm,则以下指令mov ax,10将导致 cpu 崩溃并重新启动。而且书上说切换操作需要跳远。

你能帮我做切换操作吗?

0 投票
2 回答
3318 浏览

bash - 如何使用 bash 脚本获取分区的偏移量?

我可以用它parted来找出我的图像的偏移量。

例如,分区从 开始2097152

如何2097152使用 bash 脚本获得?

我可能可以解析输出,但也许有更合适的方法?

0 投票
4 回答
12590 浏览

c - 如何在 C 中“读取”MBR(主引导记录)?

我只想写一个程序来分析C中的MBR。

我知道一些通过 Windows 上的 API 或 Linux 上的命令来阅读它的方法。

但是,我可以在没有任何依赖于平台的限制的情况下在 C 中做到这一点吗?

如果我不能,有什么理由吗?