Русский
Русский
English
Статистика
Реклама

Runescape

Перевод Как Runescape ловит ботоводов, и почему она не поймала меня

05.04.2021 12:20:40 | Автор: admin

Автоматизация действий игрока всегда была серьёзной проблемой таких MMORPG, как World of Warcraft и Runescape. Подобный взлом игр сильно отличается от традиционных читов, например, в шутерах.

В один из выходных я решил изучить системы обнаружения, используемые Jagex для предотвращения автоматизации действий игрока в Runescape.

Ботоводство


Последние несколько месяцев аккаунт sch0u круглосуточно играл на сервере world 67, выполняя такие монотонные задачи, как убийство мобов и сбор ресурсов. На первый взгляд, этот аккаунт похож на любого другого игрока, но есть одно важное отличие: это бот.


Я запустил этого бота ещё в октябре, чтобы проверить возможности системы распознавания ботов. Попробовав найти информацию о том, как Jagex борется с ботоводами, я обнаружил только видео платных ботов, разработчики которых хвастались тем, что их системы перемещения мыши неотличимы от действий человека.

Поэтому единственное, что я смог понять это важность перемещений мыши, но так ли это на самом деле?

Эвристики!


Для подтверждения этой теории я начал с изучения клиента Runescape и почти сразу заметил глобальную переменную hhk, задаваемую вскоре после запуска.

const auto module_handle = GetModuleHandleA(0);hhk = SetWindowsHookExA(WH_MOUSE_LL, rs::mouse_hook_handler, module_handle, 0);

Этот код устанавливает на мышь низкоуровневый перехватчик, прицепляемый к системной цепочке перехватчиков. Это позволяет приложениям под Windows перехватывать все события мыши, даже если они не связаны с конкретным приложением. Низкоуровневые перехватчики (хуки) часто используются кейлоггерами, но могут применяться и в мирных целях, например, в эвристиках, как вышеупомянутый перехватчик мыши.

По сути, обработчик мыши в Runescape довольно прост (псевдокод для красоты был подправлен вручную):

LRESULT __fastcall rs::mouse_hook_handler(int code, WPARAM wParam, LPARAM lParam){  if ( rs::client::singleton )  {      // Call the internal logging handler      rs::mouse_hook_handler_internal(rs::client::singleton->window_ctx, wParam, lParam);  }  // Pass the information to the next hook on the system  return CallNextHookEx(hhk, code, wParam, lParam);}

void __fastcall rs::mouse_hook_handler_internal(rs::window_ctx *window_ctx, __int64 wparam, _DWORD *lparam){  // If the mouse event happens outside of the Runescape window, don't log it.  if (!window_ctx->event_inside_of_window(lparam))  {    return;  }  switch (wparam)  {    case WM_MOUSEMOVE:      rs::heuristics::log_movement(lparam);      break;        case WM_LBUTTONDOWN:    case WM_LBUTTONDBLCLK:    case WM_RBUTTONDOWN:    case WM_RBUTTONDBLCLK:    case WM_MBUTTONDOWN:    case WM_MBUTTONDBLCLK:      rs::heuristics::log_button(lparam);      break;  }}

для снижения нагрузки на канал эти функции rs::heuristics::log_* используют простые алгоритмы для пропуска данных событий, напоминающих ранее зафиксированные события.

Позже эти данные событий парсятся функцией rs::heuristics::process, которая вызывается в каждом кадре основного цикла рендеринга.

void __fastcall rs::heuristics::process(rs::heuristic_engine *heuristic_engine){  // Don't process any data if the player is not in a world  auto client = heuristic_engine->client;  if (client->state != STATE_IN_GAME)  {    return;  }  // Make sure the connection object is properly initialised  auto connection = client->network->connection;  if (!connection || connection->server->mode != SERVER_INITIALISED)  {    return;  }  // The following functions parse and pack the event data, and is later sent  // by a different component related to networking that has a queue system for  // packets.  // Process data gathered by internal handlers  rs::heuristics::process_source(&heuristic_engine->event_client_source);  // Process data gathered by the low level mouse hook  rs::heuristics::process_source(&heuristic_engine->event_hook_source);}

Away from keyboard?


В процессе реверс-инжиниринга я пытался разобраться в важности для меня каждой изучаемой функции, обычно создавая хуки или патчи этих функций. Обычно можно понять, относится ли функция к делу, сделав её бесполезной и наблюдая за состоянием ПО. Такая методология исследования привела к интересному наблюдению.

Запретив игре вызывать функцию rs::heuristics::process, я поначалу ничего не заметил, однако спустя ровно пять минут меня разлогинил сервер. Очевидно, Runescape определяет неактивность игрока исключительно по передаваемым клиентом на сервер данным эвристик, даже если вы вполне нормально можете играть. Это вызвало новый вопрос: если сервер думает, что я не играю, думает ли он, что я играю ботом?.

После этого я потратил ещё несколько дней на реверс-инжиниринг сетевого слоя игры, благодаря чему мой бот теперь может делать почти что угодно при помощи одних сетевых пакетов.

Для подтверждения своей теории я круглосуточно и семь дней в неделю занимался ботоводством, даже не двигая мышью. Проведя так тысячи часов, я могу со всей уверенностью сказать, что или система обнаружения ботов использует только данные событий эвристик, отправляемых серверу клиентом, или работает только когда игрок не afk. Любой игрок, которому удаётся играть, не двигая курсором, должен быть немедленно забанен, то есть разработчикам стоит обратить внимание на эту недоработку.

Подробнее..

Перевод Как в Runescape ловят пользователей ботов, и почему они не поймали меня

19.04.2021 18:14:05 | Автор: admin

Автоматизация игроков всегда была большой проблемой в глобальных многопользовательских онлайновых ролевых играх (MMORPG), таких как World of Warcraft и Runescape, и этот вид взлома игр значительно отличается от традиционных читов, например в стрелялках. Однажды в выходные я решил взглянуть на системы обнаружения, созданные компанией Jagex для предотвращения автоматизации игроков в Runescape и вот что из этого вышло.


Использование ботов

Последние несколько месяцев игрок с учётной записью sch0u играл в World 67 круглосуточно, выполняя обычные задачи, такие как убийство мобов или сбор ресурсов. На первый взгляд игрок с этой учётной записью выглядит так же, как и любой другой игрок, но есть одно ключевое отличие это бот.

Я запустил этого бота ещё в октябре, чтобы протестировать возможности системы обнаружения ботов. Я попытался найти в Интернете информацию о том, как компания Jagex борется с создателями таких ботов, и нашёл только видео коммерческих ботов, создатели которых хвастались тем, что их системы перемещения мыши неотличимы от людей.

Поэтому единственный вывод, который мне удалось сделать, заключается в том, что движение мыши имеет значение.

Эвристика!

Я начал с анализа клиента Runescape, чтобы подтвердить эту теорию, и быстро заметил глобально вызываемую переменную hhk, которая задаётся вскоре после запуска.

const auto module_handle = GetModuleHandleA(0);hhk = SetWindowsHookExA(WH_MOUSE_LL, rs::mouse_hook_handler, module_handle, 0);

В результате на мышь устанавливается низкоуровневая hook-точка, добавляя её к общесистемной цепочке hook-точек. Это позволяет приложениям в Windows перехватывать все события мыши, независимо от того, связаны они с вашим приложением или нет. Низкоуровневые hook-точки часто используются клавиатурными шпионами, однако есть и законные случаи использования, такие как эвристика, подобная вышеупомянутой hook-точке мыши.

Обработчик мыши Runescape довольно прост по своей сути (следующий псевдокод красиво переписан вручную):

LRESULT __fastcall rs::mouse_hook_handler(int code, WPARAM wParam, LPARAM lParam){  if ( rs::client::singleton )  {      // Call the internal logging handler      rs::mouse_hook_handler_internal(rs::client::singleton->window_ctx, wParam, lParam);  }  // Pass the information to the next hook on the system  return CallNextHookEx(hhk, code, wParam, lParam);}void __fastcall rs::mouse_hook_handler_internal(rs::window_ctx *window_ctx, __int64 wparam, _DWORD *lparam){  // If the mouse event happens outside of the Runescape window, don't log it.  if (!window_ctx->event_inside_of_window(lparam))  {    return;  }  switch (wparam)  {    case WM_MOUSEMOVE:      rs::heuristics::log_movement(lparam);      break;case WM_LBUTTONDOWN:case WM_LBUTTONDBLCLK:case WM_RBUTTONDOWN:case WM_RBUTTONDBLCLK:case WM_MBUTTONDOWN:case WM_MBUTTONDBLCLK:  rs::heuristics::log_button(lparam);  break;  }}

С учётом пропускной способности эти функции rs::heuristics::log_* используют простые алгоритмы для пропуска данных событий, которые похожи на предыдущие зарегистрированные события.

Эти данные события позже анализируются функцией rs::heuristics::process, которая вызывается каждым фреймом в основном цикле рендеринга.

void __fastcall rs::heuristics::process(rs::heuristic_engine *heuristic_engine){  // Don't process any data if the player is not in a world  auto client = heuristic_engine->client;  if (client->state != STATE_IN_GAME)  {    return;  }  // Make sure the connection object is properly initialised  auto connection = client->network->connection;  if (!connection || connection->server->mode != SERVER_INITIALISED)  {    return;  }  // The following functions parse and pack the event data, and is later sent  // by a different component related to networking that has a queue system for  // packets.  // Process data gathered by internal handlers  rs::heuristics::process_source(&heuristic_engine->event_client_source);  // Process data gathered by the low level mouse hook  rs::heuristics::process_source(&heuristic_engine->event_hook_source);}

Вдали от клавиатуры?

Двигаясь в обратном направлении, я прилагаю усилия, чтобы узнать, насколько релевантна рассматриваемая функция, в первую очередь путём создания и применения hook-точек или патчей для рассматриваемой функции. Обычно заключение о релевантности функции можно получить, сделав её бесполезной и наблюдая за состоянием программного обеспечения. Эта методология приводит к интересному наблюдению.

Запретив игре вызывать функцию rs::heuristics::process, я сразу ничего не заметил, но ровно через пять минут вышел из игры. По-видимому, Runescape принимает решение о неактивности игрока просто по эвристическим данным, отправленным клиентом на сервер, хотя вы можете просто отлично играть в эту игру. Это породило новый вопрос: если сервер не считает, что я играю, то считает ли он, что я использую бота?

В результате я потратил несколько дней на реконструкцию сетевого слоя игры и смог использовать бота для выполнения почти всех действий при помощи только сетевых пакетов.

Чтобы доказать свою теорию, я использовал бот двадцать четыре часа в сутки, семь дней в неделю, даже не шевеля мышкой. Прошли тысячи часов, и я могу с уверенностью заявить, что обнаружение ботов компанией либо опирается на отправленные клиентом эвристические данные событий, либо запускается только тогда, когда игрок не находится в состоянии вдали от клавиатуры. Любого игрока, которому удаётся играть, не двигая мышью, следует немедленно забанить, то есть нынешний контроль имеет смысл пересмотреть.

Уязвимостей полно не только в играх, а с ростом цифровизации различных отраслей, многие недостатки безопасности вышли наружу и требуют серьезного внимания, а значит, растёт востребованность специалистов в сфере информационной безопасности, для обучения которых мы сделали специальный курс Этичный хакер. Если вам по душе искать пробелы в защите и получать за это вознаграждение добро пожаловать.Узнай, как прокачаться и в других областях работы с данными или освоить их с нуля:

Другие профессии и курсы

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Ты не задрот ты учишь английский! Или как MMORPG прокачивает знание языка

20.04.2021 18:08:31 | Автор: admin

Многопользовательские онлайн-игры покорили миллионы людей. И для многих они стали куда большим, чем просто развлечением после работы или учебы. Это настоящая вторая жизнь.

С помощью MMORPG можно прокачивать свои социальные навыки и даже учить английский. Корейские ученые это доказали. В этом материале мы расскажем об исследовании и предложим три топовых онлайн-игры с сильными сообществами, где можно будет подтянуть свой английский играючи.

MMORPG обучает английскому лучше, чем уроки в школе

В 2010 году ученые из университета в Чхунчхоне, входящего в топ-5 лучших вузов Кореи, провели масштабное исследование, как онлайн-игры влияют на изучение иностранного языка. На примере учеников младшей школы они проверили гипотезу, что MMORPG помогают изучать английский.

Ознакомиться с полным исследованием можно здесь.

Онлайн-игры перспективная среда для развития социальных навыков и изучения нового. И вот почему:

  1. MMORPG обеспечивает максимальное вовлечение в игровой процесс, погружая пользователя в полноценную экосистему языка. Но при этом игрок находится в самом центре событий, активно участвуя в развитии сюжета, что сильно влияет на его мотивацию. Игрок участвует в заданиях и ивентах, изучает историю мира и персонажей английский язык здесь является инструментом, а не целью.

  2. Онлайн-игры улучшают когнитивные способности. Еще раньше было установлено, что MMORPG повышают критическое мышление, обучаемость и умение решать проблемы. Система вознаграждений за усилия тоже играет большую роль. Награды в виде опыта и полезных предметов после выполнения задания мотивируют брать новые квесты и решать задачи.

  3. В MMORPG крайне важной является система альянсов и кланов внутриигровых объединений игроков. Обсуждения игры, фарм ресурсов, переговоры с другими кланами, социальные институты и прокачка, совместные ивенты и сложные квесты вариантов коммуникации очень много. Обеспечивается общение с помощью чатов или игровых серверов, к примеру, в Diskord. Причем в крупных альянсах часто общаются с помощью аудио- и видеосвязи. В MMORPG играют во всем мире, поэтому самым распространенным языком в кланах считается английский. Его банально знает больше людей, чем другие языки.

Чтобы проверить гипотезу, исследователи проанализировали учебный опыт 302 учеников 5 и 6 классов из нескольких общеобразовательных школ Кореи. В ходе исследования примерно опыт 76 учеников признали не репрезентативным из-за нарушений в процессе исследования.

Группа из 118 студентов совершенствовала навыки английского в MMORPG, а контрольная группа из 102 учеников проходила классические занятия с преподавателем.

Сам эксперимент занял 2 месяца.

Экспериментальная группа не занималась по классической системе. Вместо этого ученикам включали MMORPG. Специально для этого исследования была разработана учебная схема внутри онлайн-игры для развития письменных навыков, чтения и аудирования.

В рамках учебного процесса учеников объединяли в игровые группы (пати) и отправляли проходить квесты. Часть обучающих квестов была специально создана на закрытых серверах, чтобы усилить результат в рамках игрового процесса. В этих квестах исследователи воссоздали принципы повторения учебного материала в игровом режиме.

В квесте уже было заложено определенное количество новых слов, а в ходе его выполнения они повторялись. Все выполненные задания поощрялись опытом и лутом, а также более сложными заданиями.

Так выглядела схема обучающей системы для исследования изучения английского с помощью MMORPG.

В конце двухмесячного эксперимента все участники прошли финальный тест. И оказалось, что MMORPG действительно помогает учить английский быстрее, чем стандартная программа.

Наиболее сильно у экспериментальной группы улучшились навыки аудирования. Динамика улучшений почти в два раза выше, чем у контрольной группы. Чтение и письмо улучшились заметно, а говорение на уровне с контрольной группой.

И главной причиной исследователи выделяют интерактивность и вовлечение в процесс. Ученик не просто выполняет упражнения, а выполняет игровые квесты. Именно эта экосистема позволяет многократно усилить результаты изучения.

Интересно, что исследователи вообще не включали в теорию альянсы и кланы. Наверное, посчитали изрядным перебором позволить детям учить живой язык онлайн-игр, где могут быть не только разговорные фразы, но и нецензурные выражения.

Вот только исследователи не говорят, на базе какой именно MMORPG они вели анализ. Поэтому мы подобрали для вас три популярных онлайн-игры, в которых вы точно сможете прокачать свой английский.

EVE Online

Легендарная космическая MMORPG с огромной вселенной и более чем восемью миллионами игроков. При чем больше полумиллиона заходит в игру ежедневно.

Главная ценность этой онлайн-игры с точки зрения английского очень мощные сообщества игроков и альянсы.

Полноценный игровой опыт можно получить только в клане. Поэтому игроков-одиночек здесь не так много в основном те, которые заходят редко. Пользователи со стабильным онлайном довольно быстро попадают в один из альянсов.

В игре работает полностью функционирующая внутренняя система рынковой экономики, что вынуждает объединения бороться за ресурсы, торговые маршруты, защищать территорию.

Поэтому общения внутри кланов очень много. Вплоть до того, что есть реальные позиции казначеев и деловодов, которым платят реальную зарплату (не игровой валютой, а деньгами).

Так что если вселенная вам покажется достаточно интересной, чтобы поиграть длительное время, то в таком альянсе можно без особых усилий прокачать разговорные навыки языка и узнать кучу полезной информации из совершенно разных сфер: технологии, военное дело, экономика, промышленность, космология и многих других.

Среди игроков множество носителей английского, поэтому будьте готовы к максимально разговорным примерам речи. Вот один из примеров вдохновляющей речи в одной из крупных кланов:

Вот, только чтобы влиться в крупный альянс, нужно наиграть там довольно много часов и владеть английским хотя бы на уровне Intermediate.

Runescape

Фэнтезийная MMORPG, которая носит титул самой большой онлайн-игры в мире по версии Книги рекордов Гиннесса. За 20 лет существования в ней зарегистрированы свыше 250 миллионов аккаунтов.

И даже несмотря на внушительный возраст и уже третий рефордж игры, Runescape собирает больше 1,2 млн людей онлайн каждый день. А в Old School версии и того больше свыше 2 млн уников в сутки.

В игре обширный лор, который выходит далеко за ее пределы. По ней написаны целые серии книг, так что если проникнитесь, будет, что почитать.

Для изучения английского стоит обратить внимание на систему навыков и предметов внутри масса возможностей и с их помощью можно нормально прокачать свой лексикон. А внутриигровая система общения поможет прокачать навыки восприятия на слух, разговора, чтения и письма. Хоть для полноценной игры нужен уровень языка также не менее Intermediate.

Один из примеров квестов. Грамматика довольно простая, но попадаются сложные слова и фразовые глаголы.

Сообщество игры очень активное. Интересно, что несмотря на молодую аудиторию (больше половины игроков до 18 лет), в нее все еще играет много старожилов, которые застали самую первую версию. Поэтому интересных собеседников здесь более чем достаточно. Особенно в Old School версии игры. Мы даже рекомендуем попробовать именно ее, потому что графоний здесь практически не имеет значения. Главное интересное общение и отличный игровой опыт.

The Elder Scrolls Online

Насчет этой игры есть много мнений. Одни считают ее достойной продолжательницей серии TES, другие полным провалом. Но для прокачки английского языка она полезна.

Главная ценность здесь обширнейший лор. Здесь огромнейшее количество письменных материалов о мире внутри игры и еще больше в сообществах и на официальных сайтах.

Чтобы прочитать его полностью, понадобятся месяцы. Привлекает то, что он написан литературно и внедрен в игровой процесс, так что по ходу выполнения заданий придется много чего узнать. Это не просто сухие квестовые данные, а полноценная интересная художественная история.

Онлайн здесь тоже приличный больше 1,2 млн посетителей в сутки и почти 18 млн зарегистрированных пользователей.

Беседка вкладывает огромные ресурсы, чтобы сделать игру красивой не только с точки зрения графики, но и истории. Гайды, видео, арты, музыка, трансляции контента просто валом. Выбирайте формат, который вам больше всего нравится. А лучше сразу все так заодно можно и понимание живого языка прокачать, и чтение, и лексику. Вот только TES требует довольно высокий уровень английского не менее Upper-Intermediate, а лучше Advanced. Тогда вы точно проникнитесь лором сполна.

Вот пример геймплея игры. Английская озвучка очень хороша, поэтому мы советуем прослушивать реплики полностью.

***

Игры были и все еще остаются одним из наиболее эффективных способов обучения. И английский язык тоже можно с большим успехом учить с помощью геймификации. Регистрируйтесь на бесплатный урок и проверьте на своем опыте.

Онлайн-школа EnglishDom.com вдохновляем выучить английский через технологии и человеческую заботу

Только для читателей Хабра первый урок с преподавателем в интерактивном цифровом учебнике бесплатно! А при покупке занятий получите до 3 уроков в подарок!

Получи целый месяц премиум-подписки на приложение ED Words в подарок. Введи промокод april21 на этой странице или прямо в приложении ED Words. Промокод действителен до 01.06.2021.

Наши продукты:

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru