1

我有一个 FAT16 映像,我想复制存储在 C 中此映像中特定内存位置的数据。

如果用 hexedit 打开 myfat16.img 文件给出

0000A320   44 54 FC 0C  19 85 13 E9  F6 D5 20 7F  56 24 EB A7  DC 2F 54 7A  20 10 9F 80  54 45 BB AE  E9 C2 6E 08  08 4F 01 11  16 EF 1B A7  1E 00 00 01  05 3B F0 A8  DT........ .V$.../Tz ...TE....n..O...........;..

我怎样才能访问说 0xA322?

是用 open() 打开它然后计算直到这个地址的字节的唯一方法吗?

谢谢

4

3 回答 3

0

使用 C 标准库打开并使用, 然后或任何对您最方便的阅读功能fopen直接转到您感兴趣的地址。fseekfread

如果您必须直接使用 POSIX 系统调用,您可以分别使用open,lseekread.

于 2012-11-18T15:50:04.337 回答
0

您可以使用fopen(),fseek()当然fread()也可以只读取感兴趣的字节。

由于您在 Unix 中,您还可以使用mmap()将文件映射到内存中,然后直接在所需的偏移量处读取。

于 2012-11-18T15:50:26.567 回答
0

您可以使用open

然后将带有read()函数的文件读入buffer

然后从地址复制0xA322

memcpy(buffer2, buffer+0xA322, len);
于 2012-11-18T15:51:17.657 回答