linux&c – 在磁盘上访问文件..按地址?

是否可以通过ac程序或终端(linux)中的地址获取文件? 我知道这对我来说听起来很奇怪,但我只是在尝试。

例如,替换

FILE * f = fopen("myfile.txt","r") 

通过绝对令人惊叹的东西

 int fd = open(&0x545f6f5,"r") 

或echo&0x545f6f5会抓住相关文件的一部分(需要一个长度,所以更像echo和0x545f6f5 20来读取地址旁边的20个字节)?

我知道mmap,但同样,我的问题更像是实验。

那么,整体情况是:可以使用地址(理想情况下长度)访问linux文件系统上文件的任何部分吗?

更新:

说我的分区ID / dev / sda1,我想访问带有地址而不是名称的原始内存值(可读或不可读)。 如果我寻找地址&0x545f6f5并且恰好是偏移量为64的myfile.txt,我会读取此位置的字节。 我希望它能让它更清晰:)

假设myfile.txt位于/上安装的ext3文件系统上,并且该文件系统位于分区/dev/sda1 。 你可以想象打开设备/dev/sda1 (分区)或/dev/sda (整个驱动器)并访问文件的字节,如果你知道它在磁盘上的偏移量。

例如,如果您以某种方式确定文件的内容位于第一个硬盘驱动器的第一个分区上的偏移量0xDEADBEEF ,则可以执行以下操作:

 int fd = open("/dev/sda1", O_RDONLY); lseek(fd, 0xDEADBEEF, SEEK_SET); read(fd, buffer, 20); 

以这种方式访问​​原始设备会绕过文件系统。 文件系统是存储文件元数据的位置,例如它们的名称,位置和大小。 如果你在/dev/sda1的开头讨论,你可以想象自己读取原始文件系统数据,而不是依靠内核文件系统驱动程序来为你做。