Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
Автор: cheops (18.02.2007 в 15:16) Можно поступить следующим образом
#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; } // Определяем размер файла fseek(stream, 0L, SEEK_END); int filesize = ftell(stream); rewind(stream); // Читаем содержимое файла в буфер content unsigned char *content = new char[filesize]; fread(content, filesize, 1, stream); // Закрываем файл fclose(stream); unsigned char *p = NULL; int i = 0, j = 0; for(p = content, i = 0; i < filesize; p++, i++) { if(*p == arr[0]) { // Если первый символ последовательности // найден, смотрим чему равны остальные символы int flag = 1; for(j = 1; j < sizeof(arr)/sizeof(arr[0]); j++) { if(*(p + j) != arr[j]) { flag = 0; break; } } if(flag) { // Последовательность найдена, выводим // смещение cout << "offset: " << i << endl; break; } } } // Освобождаем буфер delete [] content; return 0; }
Ваше имя:
Пароль:
Цитировать Используйте тэги для выделения текста: Код: [code][/code] Жирный: [b][/b] Наклонный: [i][/i] URL: [url][/url]
Сообщение:
Прикрепить: