这是我的问题的延续读取超级块 https://stackoverflow.com/questions/339795/reading-the-superblock.
假设我想以 Mac OS X 中的 HFS+ 文件系统为目标。我如何读取启动盘的第 2 扇区?据我所知,Unix 只提供系统调用来读取文件,而这些文件永远不会存储在该位置。
这是否需要 1)程序运行内核模式,或 2)程序以汇编语言编写?我宁愿避免这些限制中的任何一个,尤其是后者。
我自己在 Mac 上完成了此操作,请参阅我的磁盘编辑器工具:http://apps.tempel.org/iBored 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”中查找卸载命令。
希望这可以帮助。
2017 更新:在 OS X 10.11 及更高版本上SIP https://stackoverflow.com/q/30768087/43615也可能会阻止您直接访问磁盘扇区。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)