问题标签 [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 投票
3 回答
15733 浏览

windows - 修改Windows的MBR

我需要修改 Windows 的 MBR,我真的很想从 Windows 中执行此操作。

这是我的问题。我知道我可以通过调用 CreateFile 来处理物理设备。MBR 会一直在 \\.\PHYSICALDRIVE0 上吗?另外,我还在学习直接从磁盘读取的 Windows API。readabsolutesectors 和 writeabsolutesectdors 是我需要用来读取/写入包含 MBR 的磁盘扇区的两个函数吗?

根据我自己学到的东西进行编辑。MBR 并不总是在 \\.\PHYSICALDRIVE0 上。此外,您可以通过使用包含 MBR 的驱动器的设备名称调用 CreateFile 来写入引导扇区(至少作为 XP 上的管理员)。此外,您可以通过简单地调用 WriteFile 并传递调用 CreateFile 创建的设备的句柄来写入该驱动器。

编辑以解决 Joel Coehoorn。我需要编辑 MBR,因为我正在处理一个需要在 BIOS 中的 POST 之后,但在允许 Windows 启动之前修改硬件寄存器的项目。我们的计划是通过修改引导加载程序以在 Windows 启动之前执行我们的代码来进行这些更改。

编辑 Cd-MaN。谢谢(你的)信息。但是,您的回答中没有任何我不知道的内容,而且您的回答也没有解决我的问题。由于多种原因,特别是注册表绝对不会做我们需要的事情。一个重要的原因是 Windows 是与我们的产品一起运行的多个软件层中的最高层。这些更改甚至需要在较低级别运行之前发生,因此注册表将无法正常工作。

PS 用于 Cd-MaN。据我了解,您提供的信息并不完全正确。对于 Vista,如果要写入的扇区是引导扇区,我认为您可以写入卷。请参阅http://support.microsoft.com/kb/942448

0 投票
10 回答
122657 浏览

windows - 如何判断 Windows 用于引导哪个磁盘

我需要找到一种方法来以编程方式确定 Windows 使用哪个磁盘驱动器来启动。换句话说,我需要一种来自 Windows 的方法来确定 BIOS 使用哪个驱动器来引导整个系统。

Windows 是否公开一个接口来发现这一点?Windows API 有多大,我希望里面有一些东西可以解决问题。

特里

ps 仅仅读取硬盘的第一个扇区并没有任何乐趣。在我的开发盒上,我有两个硬盘,当我查看其中一个硬盘上前几个扇区的内容时,我有一个标准的样板 MBR。

编辑以澄清一些事情。我想识别设备的方式是使用一个字符串来识别物理磁盘驱动器(而不是逻辑磁盘驱动器)。物理磁盘驱动器的格式为“\\.\PHYSICALDRIVEx”,其中 x 是一个数字。另一方面,逻辑驱动器由格式为“\\.\x”的字符串标识,其中 x 是驱动器号。

编辑讨论一些被抛出的想法。知道 Windows 用来引导哪个逻辑卷在这里对我没有帮助。这就是原因。假设 C: 正在使用镜像 RAID 设置。现在,这意味着我们至少有两个物理驱动器。现在,我得到了从逻辑驱动器到物理驱动器的映射,我发现该卷使用了两个物理驱动器。Windows 使用哪一个来启动?当然,这是假设 Windows 用于引导的物理驱动器与包含 MBR 的物理驱动器相同。

0 投票
2 回答
2671 浏览

c# - 如何借助 P/Invoke 创建文件以读取引导扇区并显示 .MBR?

我浏览了 CreateFile 文档...仍然想知道我应该如何使用 P/Invoke 来调用 CreateFile 并读取引导扇区,以显示 .MBR?

这部分的任何参考代码?先感谢您!

0 投票
11 回答
23803 浏览

assembly - 编写 MBR 代码

我是一名电气工程师,最近发现需要修改 MBR 中的代码。基本上我需要能够在硬盘驱动器上执行代码之前,操作系统启动并接管。

我完全理解这需要用汇编编写,并且考虑到 MBR 中大约 446 字节的代码空间,我只是希望调用 MBR 之外的其他代码。我的问题是写入 MBR 的最佳方式是什么?如果我想更改磁盘 HDD_1 的 MBR ... 将 HDD_1 从属到另一台机器然后写入它,或者在当前机器中直接写入(在 Windows 之外)是否更好。基本上,我想我会插入一个呼叫,而不要理会 MBR 的其余部分。

任何建议,将不胜感激

克里斯

我很清楚这将是困难的。我的问题是将指令放入 MBR 的最佳方式是什么?不用说,Windows 不允许直接访问磁盘。您如何建议我将指令写入 MBR ?是否可以引导 *nix 的 live CD 并从那里写入 MBR?

0 投票
3 回答
4728 浏览

boot - BIOS 将哪些信息加载到 RAM 中?

我知道,在启动时,BIOS 会在内存 0x7c00 上加载预定义设备驱动器的第一个扇区(512 字节),然后跳转到该地址。

因此,从 0x7c00 到 0x7dff 的内存被占用。是否有任何其他 RAM 部分被占用?

如果我正在编写操作系统,我可以将除 0x7c00 到 ox7dff 之外的所有 RAM 用于我自己的目的吗?或者,在启动时是否有任何其他部分充满了我不能覆盖的“宝贵”信息?

我知道在给定的时刻,我可以覆盖加载在内存上的 MBR(链式加载),我的问题集中在......内存的哪一部分可用于操作系统?

对不起,我的英语不好。谢谢你的回答!!

0 投票
1 回答
1945 浏览

c - winapi c - read/write mbr of system drive

Does anyone have any example code that shows how to identify the system boot harddisk, and read/write the mbr from the harddisk in windows xp and vista?

I know createfile can be used. But I do not know how to properly identify which device is the boot device.

Like how do you find out which ones you are meant to use? \.\Volume{GUID}\ or \?\Device\HarddiskVolumeX etc?

0 投票
4 回答
3275 浏览

documentation - 哪里可以找到 PC MBR Bootloader 的源代码?

最好是很好的评论和一些相关的文档和一个 Makefile。

为了清楚起见,这是由 Bios 加载并负责链接到引导分区中的辅助引导加载程序的小于 512 字节(512 字节 - 分区表)的机器代码。

编辑:大卫和 bdonlan 的答案看起来很有希望。最小的 Dos 链接指向 MBR 的 Debian 源程序包,但注释的 Windows 2000/XP MBR 看起来有更详细的注释。

0 投票
6 回答
78168 浏览

linux - 如何反汇编原始 16 位 x86 机器代码?

我想反汇编我拥有的可引导 x86 磁盘的 MBR(前 512 个字节)。我已使用将 MBR 复制到文件中

对可以反汇编文件的 Linux 实用程序有什么建议mbr吗?

0 投票
2 回答
1315 浏览

assembly - MBR 说分区表无效 - 但系统工作正常!为什么?

我得到了一个期末项目来编写一个汇编代码来读取 MBR 并将其保存到软盘。我想我设法在 virtualBox 机器的 DOS 中使用 INT 13h 读取它。机器只有一个硬盘,一个分区,安装了XP。当我阅读 MBR 并打印它时,它给了我很多垃圾,在垃圾中它说:无效的分区表。加载操作系统时出错......就像在这个网站中一样:http: //mbr.adamsatoms.com 但我的系统启动正常。我是否正确阅读了 MBR。真的是MBR吗?为什么会这样?如果有帮助,这是我的阅读代码的一部分:

提前致谢。

0 投票
4 回答
2557 浏览

x86 - 主引导记录中有哪些组装说明?

很好奇 X86 架构上的主引导记录实际上是由哪些显式汇编指令构成的。感谢您的任何见解。

欢迎使用其他架构,但这主要针对 X86。