Тут то и проснулся мой эгоцентризм желание сохранитьпервую строчку рейтинга вынудило меня обдумать пути набора очков без лишнейтраты времени. Первым делом я полез смотреть трафик приложения что куда передается, чтоприходит обратно. Для анализа HTTP трафика я еще не встречал инструмента лучше,чем приложение HTTPWatch для. Internet Explorerа. Итак, я запустил игру, нажал кнопку. Яувидел, что приложение передает все свои данные как есть, в открытую. Трафик. Это соответствует стадиям игры в каждомраунде все буквы скрыты, одна буква открыта, две буквы открыты, слово угадано,слово не угадано. Как видишь, в открытую передается question. В случае первых трех фаз в поле. Например, если statePHASE3, первая буква C, втораябуква A, то маска слова С A. Если текущая фаза GUESS или LOSE, то словобудет отображено на экране целиком, чтобы показать пользователю ответ. Соответственно, в переменной question. В конце каждого раунда мы получаем номер вопроса и ответна него. Именно это открытие и навело меня на идею автоматизировать процесс. Ведь каждый раз, когда мы получаем слово, мы заносим его в нашу базу данныхслов. Если же такой question. Само собой, что проверку на наличиеслова в базе нужно делать в тот момент, когда state будет PHASE1, PHASE2 или. PHASE3. Таким образом, наш бот будет самообучающимся нет слова запоминаем,есть слово отвечаем на вопрос. Кодинг. Как же это все реализовать на практике Для начала нужно научиться самимперехватывать трафик. Рассмотрим доступные нам варианты. Миниигры или же flashигры представляют собой небольшие приложения развлекательного характера. От больших версий игровых блокбастеров они отличаются небольшим замером, до 50 мб, примитивной графикой. В минииграх иногда даже нет опции развернуть на полный экран. Зато основное. Их будет три. Первый вариант это перехват пакетов сетевого интерфейса. Достаточнонизкоуровневый способ, требующий навыков взаимодействия с внешними библиотеками,сетевыми интерфейсами и, в целом, умения работать с операционной системой нанизком уровне. Тебе пригодится библиотека Win. PCap, которая позволяет получатьпакеты в чистом виде прямо с сетевого интерфейса. В остальном Гугл в помощь. Второй путь это работа с Internet Explorer. Этот способ, пожалуй, самыйвысокоуровневый, так как мы получаем уже готовый, обработанный трафик. Дляперехвата трафика таким образом необходимо владеть COM программированием уметьподключаться к COM объектам каковым является компонент IWeb. Browser. 2 внутри окна. Internet Explorerа, реализовывать интерфейсы и работать с ними. Способ требуетсерьезных знаний в вышеуказанной области, поэтому я решил делать. А это у нас реализация прокси сервера. Точнее говоря, Socks. На этом способе заострим наше внимание. Заострим немного, так какстатья все же не о создании Socks сервера, поэтому нагружать ее кодом не буду. Начать написание Socks сервера стоит с изучения вотэтого мануала. Для ленивых и англонемых будут мои пояснения на русском. Но сперва реализуемсерверное приложение. Есть несколько способов сделать приложение сервер, начинаясо старого. Рамки статьи непозволяют детально описать процесс создания Socks сервера, поэтому я ограничусьлишь пояснением структуры программы и основных методов, которые я использовал. Начать написание такого приложения стоит примерно c такого кода SOCKET server А тем, что в данном случае нам ненужно возиться с многопоточностью для обработки каждого подключения к серверу. Благодаря выделенной строчке мы будем в нашем окне h. Wnd получать сообщения. SERVER. В процедуре обработки сообщений окна мыловим сообщение SERVER. Как только клиент подключился,вызывается функция accept, и далее регистрируется событие CLIENT. В ней мы будем обрабатыватьвышеозначенное событие CLIENT. Значение l. Param в данном случае будет либо. FD. Но вернемся к реализации Socks протокола, упоминавшейся выше. Здесь япокажу, как работает Socks. Вот что говорит нам RFC. После подключения клиент посылает Socks серверу два байта номер версии 4или 5 и количество методов аутентификации N. После этого нам придет еще N байтс номерами этих самых методов. Обычно приходят 3 целых числа 0. Тоесть пятая версия и первый метод, значение которого 0. В ответ мы должны вернуть два байта. Первый это номер версии, то есть 0. Так как клиентобычно предлагает только 0. Скушав нашответ, клиент пришлет запрос следующего формата первый байт номер версии,второй команда, третий резервный байт, четвертый тип адреса. После чегобудет идти группа байт непосредственно с самим адресом хоста цели, а завершатпакет два байта с номером порта хоста цели. Формат группы байт с адресомхоста цели будет зависеть от того, какой тип адреса четвертый байт задается. Мы будем работать с привычным IPv. В этом случае группа байт будет размером 4, то естьстандартного формата IP адреса из четырех целых чисел. Номер порта хоста целивычисляется как первый байт 2. Итак, у нас есть запрос от клиента, который нужно выполнить.