特定のオフセットでファイルから読み取ろうとしています (簡易版):
typedef unsigned char u8;
FILE *data_fp = fopen("C:\\some_file.dat", "r");
fseek(data_fp, 0x004d0a68, SEEK_SET); // move filepointer to offset
u8 *data = new u8[0x3F0];
fread(data, 0x3F0, 1, data_fp);
delete[] data;
fclose(data_fp);
問題は、データに 1008 バイトではなく 529 バイトが含まれることです (ランダムなようです)。529 バイトに達すると、feof(data_fp) の呼び出しが true を返し始めます。
また、小さなチャンク (一度に 8 バイト) を読み込もうとしましたが、まだそこにないときに EOF に達しているように見えます。
16 進エディタで単純に見てみると、多くのバイトが残っていることがわかります。