HTML5-игры и GodMode: все просто!«Война… Война никогда не меняется». Думаю, многим знакома эта фраза. Каждый пользователь ПК хоть раз запускал компьютерную игру. Много компьютерного железа пострадало в баталиях от горячей руки геймера, потерявшего последнюю «жизнь». Иногда появляется мысль: а не поискать ли «читы» и не накрутить ли себе жизней или ресурсов. Так начинается путь читера.

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

Ядро любой HTML5-игры — JavaScript. Единственной, на данный момент, защитой этого ядра является обфускация кода. Согласитесь, увидеть «простыню» в 10 000 строк обфусцированного кода без new-line — это поначалу страшно. Но если немного покопать — логика и архитектура приложения как на ладони. Главное — определить цель читерства (скорость, ресурсы, GodMode). В качестве инструмента используем Chrome и его Web Inspector. Во вкладке Sources можно «на горячую» изменять исполняемый код.

Google Doodles

Начну с простого примера: http://www. google. com/doodles/slalom-canoe-2012. Сравнительно свежий олимпийский Doodle.

Основная цель игры — пройти трассу как можно быстрее. В голову сразу приходят несколько уловок:

  • повысить скорость лодки;
  • убрать препятствия;
  • убрать замедление от столкновений;
  • «выпрямить» трассу;
  • что-нибудь сделать с таймером (обнулить, замедлить).

Чаще всего самая хорошая мысль — первая. На ней и остановимся. Открываем Chrome и его Web Inspector (основы работы — в замечательной статье ).

Нас интересует JavaScript-код игры.

Логично предположить, что это slalom_canoe12-2.js .

Исходный код… немного страшный, правда? Можно автоматом расставить new-line и отформатировать по синтаксису JavaScript. Читаемость значительно улучшиться и анализировать станет легче. Также можно обложить весь код брейкпоинтами и попытаться восстановить алгоритмы. Но не будем стрелять из С-400 по квадрокоптеру…

Начинаем рассуждать. По нажатию клавиши или при прохождении через ворота лодка ускоряется. Следовательно, где-то есть параметр «скорость» и он должен (скорее всего) инкрементироваться. Ищем по коду все операторы «+=» (благо объем и сложность кода позволяют), их находится всего 12. В принципе можно включить метод «научного тыка» и попробовать изменить все 12 по очереди. А можно и подумать.

  1. this. S+=b. duration — что-то связано с продолжительностью (спасибо, кэп!);
  2. this. B&&(e+=this. B*(Math. random()-0.5),f+=this. B*(Math. random()-0.5))… e+=this. o*(Math. random()-0.5))— random-0.5 как-то не похоже на скорость…
  3. R+=Qc*b — хм-м… и начальное значение, и какой-то коэффициент.

Остановимся и проверим. Обновляем страницу (на всякий случай). Открываем Sources slalom_canoe12-2.js. Находим R+=Qc*b. Предположим, что b — коэффициент ускорения. И заменим его на 500 (не забываем нажать Ctrl + S).

Жмем Play в игре и…

Бинго! Наш чудо-катер устремляется к финишу. Теперь можно похвастаться перед друзьями скоростью своих пальцев 🙂

Отмечу, что приведенный пример — это случай, в котором удалось обойтись малой кровью. И не потребовало глубоких знаний JavaScript, архитектуры, отладки. Только арифметика.

Перейдем к другому примеру.

Spelunky

В этом примере потребуется знать, что такое if и что такое =, а также базовое знание английского языка. Не так давно на Хабре была опубликована статья о Spelunky. Игра, безусловно, заслуживает внимания. Старый добрый хардкор! Но есть в ней несколько «косяков» с управлением и коллизиями, которые мешают пройти игру. Давайте попробуем нарисовать себе жизней, бомб, веревок и прочей радости.

Открываем сайт с игрой. В инспекторе находим index. js. это и есть код игры. Первая мысль: «Какой кошмар».

Однако стоп! Встречаются и понятные слова. Например Bomb, Rope. Это уже интересно. Значит можно попробовать найти кусок кода, который обрабатывает получение предмета. А там где-то должно увеличивать количество оного…

Ищем слово Bomb. Результатов немало — 79. Попробуем Bomb Bag. И вот оно, первым же результатом!

if((qzb(hzb. lhc).hjc==«Bomb Bag»))<

Тут мы видим, что что-то сравнивается с Bomb Bag и если это оно, то делаем global. loc+=3 и куда-то пишется «YOU GOT 3 MORE BOMBS!» соответственно в global. loc у нас лежит количество бомб. Анализируем код, расположенный рядом, и находим переменные, в которых хранятся веревки и прочие радости. Вот краткий список:

  • global. loc — бомбы;
  • global. soc — липкие бомбы;
  • global. woc — веревки.

Теперь пробуем изменить значения в самой игре. В инспекторе во вкладке Sources жмем Pause Script Execution (F8).

Открываем Console и вводим следующее.

Отпускаем паузу — и наслаждаемся полученным результатом! Не буду описывать, как нарисовать себе жизней. Пусть читатель сам попробует разобраться с этой переменной.

Вывод: умный в гору не пойдет. Изменение JavaScript-кода — это легче легкого. Обфускация — это не смертельно. Старайтесь мыслить логически. И еще: любое читерство постепенно убивает интерес к игре (во всяком случае у меня), аккуратней с этим.

Данная статья носит информационный характер.

Автор: Александр Полунин (hekser ).

как перенести приложения с телефона на карту памяти на андроиде

как устанавливать приложения на карту памяти на андроид

игры не онлайн не флеш игры

флеш игры онлайн играть бесплатно как приручить дракона

как на самсунге приложения скачивать на карту памяти

Комментарии запрещены.

Навигация по записям