#include <iostream>
using namespace std;
int main()
{
// Шестнадцатеричная последовательность
unsigned char arr[] = {0xF8, 0xAC, 0x2C, 0x9D,
0xE3, 0xD4, 0x2B, 0x4D,
0xBD, 0x30, 0x91, 0x6E,
0xD8, 0x4F, 0x31, 0xDC};
// Открываем файл
FILE *stream;
if((stream = fopen("php.exe", "r+b")) == NULL)
{
fprintf(stderr, "Cannot open file.\n");
return 1;
}
unsigned char ch;
int i = 0, j = 0;
do
{
// Читаем один символ из потока stream
ch = fgetc(stream);
if(ch == arr[0])
{
int flag = 1;
for(j = 1; j < sizeof(arr)/sizeof(arr[0]); j++)
{
ch = fgetc(stream);
if(ch != arr[j])
{
// Возвращаемся обратно
fseek(stream, -j, SEEK_CUR);
flag = 0;
break;
}
}
if(flag)
{
// Последовательность найдена, выводим
// смещение
cout << "offset: " << i << endl;
break;
}
}
i++;
} while (ch != EOF);
// Закрываем файл
fclose(stream);
return 0;
} |