相关疑难解决方法(0)

如何反汇编原始x86代码?

我想拆解我的可启动x86磁盘的MBR(前512字节).我已经将MBR复制到了一个文件中

dd if=/dev/my-device of=mbr bs=512 count=1
Run Code Online (Sandbox Code Playgroud)

对可以反汇编文件的Linux实用程序的任何建议mbr

linux x86 assembly mbr x86-16

87
推荐指数
6
解决办法
7万
查看次数

修改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

windows mbr

7
推荐指数
2
解决办法
1万
查看次数

C 语言的低级编写

如何使用 C 编程语言写入硬盘上的任何块?

一个关于编写MBR的问题,但它并没有太多地涵盖 C 方面。

由于文件描述符 - 正如这个词所说 - 用于文件,我想在这种情况下无法使用它们。所述低级别的I / O包含在C标准库也与filedescriptors实现。

更准确地说:
这个问题是关于写入 HDD 块而不是文件(独立于操作系统)。

上面提到的问题的答案基本上建议在 UNIX 系统上使用dd (coreutils)。这就是为什么我在 C 中寻求一种方法。也许引导加载程序(GRUB)和引导扇区病毒使用不同的技术?

我想更改文件描述符内的实际指针不是合法的方式。

问题和限制:
我知道有一些方面需要牢记,例如

  • 某些操作系统限制对卷的直接访问(例如 Windows)
  • 写入错误以及将错误数据写入某些块可能会导致文件系统损坏(HDD 上的数据丢失)。
  • 防病毒软件可能会将其标记为可疑代码。

这个问题更多的是理论性的。

c io mbr dd

4
推荐指数
1
解决办法
2407
查看次数

标签 统计

mbr ×3

assembly ×1

c ×1

dd ×1

io ×1

linux ×1

windows ×1

x86 ×1

x86-16 ×1