当前位置:  开发笔记 > 运维 > 正文

读取引导磁盘上的扇区

如何解决《读取引导磁盘上的扇区》经验,为你挑选了2个好方法。

这是关于阅读超级块的问题的延续.

假设我想在Mac OS X中定位HFS +文件系统.我怎么能读取启动盘的第2扇区?据我所知,Unix只提供从文件读取的系统调用,这些文件从不存储在该位置.

这是否需要1)运行内核模式的程序,或者2)要在程序集中编写的程序?我宁愿避免这些限制,尤其是后者.



1> Thomas Tempe..:

我自己在Mac上完成了这项工作,请参阅我的磁盘编辑器工具:http://apps.tempel.org/iBored

您可以使用/ dev/diskN或/ dev/rdiskN打开驱动器(N是从0开始的磁盘索引号).然后你可以使用lseek(确保使用64位范围版本!)和对打开文件的读/写调用.

另外,使用shell命令"ls/dev/disk*"查看当前存在哪些驱动器.请注意,驱动器也存在"sM"扩展名,其中M是分区号.这样,也可以直接读取分区.

或者,您可以使用shell工具"xxd"或"dd"来读取数据,然后使用它们的输出.可能会更容易.

但是,除非以root用户身份运行,否则您将无法读取根磁盘和其他内部磁盘.只要用户安装了其他驱动器,或者禁用了其权限,您就可以访问其他驱动器.但您可能还需要先卸载驱动器的卷.在shell命令"diskutil"中查找unmount命令.

希望这可以帮助.

2017年更新:在OS X 10.11及更高版本上,SIP也可能阻止您直接访问磁盘扇区.



2> Adam Rosenfi..:

在Linux中,您可以从特殊设备文件中读取/dev/sda,假设您要读取的硬盘驱动器是第一个.你需要root才能读取这个文件.要读取扇区2,您只需要2*SECTOR_SIZESECTOR_SIZE字节为单位进行偏移和读取.

我不知道这个设备文件是否在OS X上可用.检查有趣的命名文件,/dev例如/dev/sda/dev/hda.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有