Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (18.02.2007 в 16:05)
Тогда можно поступить следующим образом
#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;
}


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: