читы на игру зума

Zuma Deluxe

читы на игру зума. . читы на игру зума фото. читы на игру зума-. картинка читы на игру зума. картинка . Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Данные по игре
Название:Zuma Deluxe
Название в России:Zuma Deluxe
Разработчик:PopCap Games
Издатель:PopCap Games
Дата выхода:3 декабря 2003 года
Статус:Вышла
Жанр:Action/Arcade
Системные требования:процессор AMD 800 Мгц или Pentium 3 800 Mгц, Озу 32 мб, видео 64 мб
Официальный сайт игры:Перейти
Купить игру:на CD и DVD дисках
читы на игру зума. . читы на игру зума фото. читы на игру зума-. картинка читы на игру зума. картинка . Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Коды

Замедлить движение мяча:
Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Если вы застреваете на более высоком уровне, скажем 12-7, и затем только идете несколько строк ниже туда, где это говорит lvl127 и изменение его урегулирование скорости к 0.2 и сохранить.

Заметка: не путайте lvl11 линию выше с level11 линией на той же самой странице.

Источник

LiveInternetLiveInternet

Поиск по дневнику

Подписка по e-mail

Статистика

ZUMA DELUXE: я раскрыл секреты «жабы»!

Второй день меня прет от этих маленьких открытий. Речь об игре ZUMA DELUXE или «жабе», весьма популярной по всей Вологде до сих пор, несмотря на почтенный возраст игры. Если не ошибаюсь, первая версия ее появилась году этак в 1999.

читы на игру зума. . читы на игру зума фото. читы на игру зума-. картинка читы на игру зума. картинка . Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Мои маленькие хитрости позволяют сделать следующее (кто хоть раз играл в жабу, меня поймет):

— замедлить движение шариков
— уменьшить количество шариков, выскакивающих по желобу при старте
— увеличить скорость «плевка»
— увеличить «эталонное время», на основании которого даются бонусы в конце этапа.

Применив все мои открытия, я вчера за полчаса прошел всю жабу, набрав 4,5 миллиона очков, 45 жизней, а последний, самый сложный этап 13-1 прошел за 9 секунд!

Я уже не помню, откуда принес «жабу» в нашу редакцию. Случилось это около года назад, и уже через месяц увлечение бешеной лягухой разрослось среди коллег до угрожающих масштабов, так что даже стали поговаривать о диверсии с моей стороны с целью остановить рабочий процесс. Играли и по сей день играют все: от секретаря до редактора.
В конце концов, пройдя «жабу» по несколько раз, мы стали извращаться: проходить ее на время, на количество набранных очков или жизней, на рекорды и т.д.
И вот не далее как вчера я нашел в Интернете способ управления алгоритмом «жабы». К сожалению, давался только один способ облегчения жизни бедного жаббера-геймера (замедление шариков), поэтому все остальные пришлось самому открыть опытным путем, чем я несказанно горд. Итак, вот ключи от чуда…

В папке Zuma Deluxe содержится папка levels, в которой в свою очередь лежит заветный файл levels.xml. Открываем его блокнотом и начинаем хулиганить…

Все основные параметры этапов игры прописаны примерно в середине документа в строках, начинающихся с
Settings />Не перепутайте со строчками, находящимися чуть выше нужных:
Settings />
Цифры после lvl означают номер этапа игры, к которому относятся настройки. 11 означает этап 1-1; 42 – этап 4-2; 121 – этап 12-1 и т.д. Не перепутайте 11-1 и 1-1! За цифрами и следуют в строчку разные параметры, регулируемые цифрой, стоящей после них в кавычках. Для каждого этапа параметры устанавливаются особо в своей строке.

ЧИСЛО ШАРОВ ПРИ СТАРТЕ

Чем дальше по игре, тем на большую длину выскакивает цепь шаров при самом старте. За число шариков при старте отвечает параметр start=. Самое прикольное – выставить его равным 5 и гасить врага на подходе! Впрочем, вариаций множество. Самая удобная – параметр равный 10.

Этап в «жабе» считается пройденным, если набрано необходимое количество очков. Это количество регулируется параметром score=. Если выставить его равным 30, то с первой же разбитой тройки шаров этап будет пройден. От этапа к этапу это число возрастает, и здесь тоже можно поглумиться, исправляя параметр в нужную нам сторону.

В конце этапа время прохождения срав6нивается с эталонным. Так вот, параметр partime= регулирует это самое эталонное время. Измерения в секундах. Т.е. 180 – это 3 минуты. Поставив значение равное 360 вы увидите, что расчетное время прохождения даже этапа 1-1 станет – 6 минут! В зависимости от того, насколько шустро вы пройдете этап, при таком раскладе бонус от 24 000 до 25 000. Впрочем, 25 000 не получить – видимо, это предел бонуса, но кто знает – может найдется добрый человек и покажет, где его изменять в сторону увеличения?

Самое маньячество прилепить ко всем этапам, т.е. ко всем строкам после lvl.. следующую инфу:
speed=».5″ start=»10″ score=»100″ partime=»360″ firespeed=»18″ />

Успехов всем, кто тоже прется по «жабе». Мы победим! Inka chaka ssuka!

Источник

Обратная разработка коммерческой программы: кейген для Zuma Deluxe

читы на игру зума. 0d1b8673e83c2baaf845a41b4bcbfdfc. читы на игру зума фото. читы на игру зума-0d1b8673e83c2baaf845a41b4bcbfdfc. картинка читы на игру зума. картинка 0d1b8673e83c2baaf845a41b4bcbfdfc. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Вступление

Здравствуйте, Хабралюди.
Судя по последним статьям в блоге Assembler, тема кейгенов становится здесь весьма популярной. Что ж, внесу и я свои пять копеек.
Наш сегодняшний подопытный — игра Zuma Deluxe, на которую я никак не мог отгуглить себе кейген (не подумайте, что я игроман: на всё данное исследование меня вдохновил тов. k_d с его самоиграйкой для Zuma). И сразу дисклеймер: данный взлом от начала и до конца проделан в образовательных целях и не имеет целью нести убытки компании PopCap Games.
Итак, гуглим дистрибутив Зумы, скачиваем его, приводим в боеготовность OllyDBG, и начинаем разбор.
Да, заранее оговорюсь — я с некоторых пор заделался линуксоидом, поэтому запускаться вся эта радость будет из-под WINE. Впрочем, забегая вперёд, отмечу, что для данной задачи в этом есть свои плюсы, такие как, например, простота редактирования записей и отслеживания изменений в WINE`овском реестре, в силу его хранения в обычном текстовом файле.

Часть 1: коварный Flash

В общем, запускаем игру, играем дольше положенного (или сразу же лезем в ветку реестра HKLM/Software/PopCap/Zuma и выставляем нули в ключах TimesExecuted и TimesPlayed) — и вуаля:

читы на игру зума. 81ca5390c06b0d94a5ad06475797937c. читы на игру зума фото. читы на игру зума-81ca5390c06b0d94a5ad06475797937c. картинка читы на игру зума. картинка 81ca5390c06b0d94a5ad06475797937c. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Отлично, выбираем «Buy Now», закрываем вылезшее окошко браузера с предложением купить игру за жалкие 16.99 евро, и жмём «Enter the Registration Key Manually».

читы на игру зума. becf66c9249cf6e05e114877dee00fdb. читы на игру зума фото. читы на игру зума-becf66c9249cf6e05e114877dee00fdb. картинка читы на игру зума. картинка becf66c9249cf6e05e114877dee00fdb. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Так-с, поле ввода. Уже от чего-то можно плясать. Пробуем ввести какую-нибудь абракадабру, ожидаемо получаем «Please enter a valid key», и идём разбираться, что к чему. Первое, что настораживает при вдумчивом осмотре — наличие в папке, прямо рядом с бинарём игры, двух файлов, намекающих на использование в программе технологии Flash: собственно, Flash.ocx и drm.swf… Видимо, с закрытием браузера можно было повременить. Ладно, открываем этот самый drm.swf — и что же мы видим:

читы на игру зума. f3bb7a477a649e8c9ca45abc875b6dee. читы на игру зума фото. читы на игру зума-f3bb7a477a649e8c9ca45abc875b6dee. картинка читы на игру зума. картинка f3bb7a477a649e8c9ca45abc875b6dee. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Ищем по «RegFailed» и выходим на вот этот блок кода:

Вот оно. Правильный ключ имеет в длину 23 символа (больше просто не позволяет ввести само текстовое поле) и заставляет validate_regkey() возвращать True. На то, что в этом же блоке кода происходит инициализация таких «страшных» значений как gRegFailedMessage, можно не обращать внимания, т.к. здесь, вне зависимости от них, из флэш-объекта посредством fscommand() происходит передача данных в родительский процесс.
Теперь пора заняться самой функцией validate_regkey(). Вот она целиком:

Что ж, центральная проверка — однозначный шедевр. Надо, наверное, запостить это на govnokod.ru, ну да ладно, мы сюда не позубоскалить собрались. Главное, что эта функция дала нам структуру лицензионного ключа:

#####-#####-#####-#####
где # — символ из алфавита «0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-».
Ровно 23 символа.

Опять забегая вперёд, скажу что набор верных символов внутри самой программы будет несколько сокращён. Но пока что нам без разницы. Запускаем OllyDBG и загружаем в него нашу подопытную. Запускаем на выполнение (F9) и дожидаемся момента прорисовки главного окна.
Куда копать дальше?
А помните найденный нами вызов fscommand() с первым параметром, равным строке «Register»?
Поэтому открываем Memory Map (Alt+M) и ищем вхождение этой строки (Ctrl+B). А вот и она, лежит себе по адресу 0x4417D0:

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Ставим на неё точку останова по чтению (выделение → Shift+F3). Далее, в окне проверки, идём по ссылке внизу «Already purchased this game?» → «Enter the Registration Key Manually», и вводим в поле для ключа любую алфавитно-цифровую белиберду, разделённую дефисами на 4 блока по 5 символов. Жмём «Register».

Часть 2: we need to go deeper

Вот мы и попали, наконец, внутрь алгоритма проверки. Идём в список контрольных точек на память и удаляем 0x4417D0 (Alt+Y → Del), выполняемся (Ctrl+F9) до конца функции, т.к. там ничего интересного для нас нет, только цикл сравнения, далее возвращаемся в вызывавшую функцию (F8), и видим там проверку возвращённого результата. Опять пропускаем всё до конца функции и возвращаемся в вызывавшую:

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Ага! А вот теперь мы в сердце анализатора лицензионного ключа. Чтобы не забыть это место, поставим (F2) контрольную точку на 0x04066CA и осмотримся вокруг. Чуть ниже (0x406757 и 0x4067A8) видны вызовы функций с очень интересными строковыми параметрами «RegSucceeded» и «RegFailed». А повыше (0x406748) находится ветвление, которое передаёт управление в нужную функцию. Это ветвление завязано на сравнение (0x40672D) регистров AL и BL. Похоже, что функция 0x404260, вызываемая ещё двумя командами ранее — это как раз то, что мы искали, т.е. Самая Важная Функция Проверки.

Сначала, проверим свою догадку: изменим сравнение так, чтобы оно оказывалось верным при некорректных исходных данных. Наведём выделение на 0x406748 и нажмём пробел. Откроется окно «Assemble». Заменим переход по равенству, JE, на переход по неравенству — JNE. Запустим на выполнение (F9)…

читы на игру зума. a592d31c75e3d9ff8625c77a20fb6d84. читы на игру зума фото. читы на игру зума-a592d31c75e3d9ff8625c77a20fb6d84. картинка читы на игру зума. картинка a592d31c75e3d9ff8625c77a20fb6d84. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Ура, первый бастион взят!
Но мы сейчас пишем не просто кряк, а очень даже кейген. А это значит, что на достигнутом останавливаться рано, и придётся перезапустить программу (Ctrl+F2) и углубиться в недра функции 0x404260.

Сейчас наша задача — понять, как себя ведут внутри этой функции регистры AL и BL, и где именно расположен кусок кода, ответственный за их равенство либо неравенство.
Перейдём в «хвост» функции, поближе к точке выхода, RETN, и включим подсветку регистра BL (контекстное меню → Highlight register → EBX).

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Как видите, содержимое регистра AL на протяжении практически всего «хвоста» хранится в BL, и только перед самым выходом копируется обратно, с дальнейшим восстановлением исходного значения EBX из стэка.
При том, само значение AL берётся из функции, на картинке вверху помеченной выделением.
Переходим внутрь этой функции — и что же мы видим:

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

У этой функции всего два возможных выходных значения — 0 и 1. Первое генерируется, когда строка байт, указатель на структуру с которой передан как параметр функции, не совпадает со строкой, чей указатель лежит по адресу [ECX + 8]. Второе же (то самое, которое нам нужно) — при обратной ситуации, т.е. когда строки идентичны.

Часть 3: MD5, RSA и все-все-все

Вернёмся в родительскую функцию и взглянем, откуда берутся значения из [ECX + 8] и [ARG.1 + 8].
Для этого поставим (выделение → Shift+F5) «аппаратные» точки контрольного останова на два адреса в стэке, в которые должны быть помещены эти строки. Для разных конфигураций машин и операционных систем данные адреса, скорее всего, будут различаться. Так, в моём случае это 0x33E624 и 0x33E660 (вообще, рекомендую завести себе сбоку дополнительное окно, показывающее состояние стэка, независимое от положения его вершины, ESP, как на картинке).
Аппаратными эти контрольные точки быть обязаны, т.к. другие типы контрольных точек, будучи поставленными на стэк, либо приведут к «обвалу» программы, либо не будут сохраняться между запусками. Пока что эти точки нужно сделать неактивными (контекстное меню → Breakpoint → Hardware disable).

Теперь перезапустим программу и остановимся на входе в нашу главную функцию проверки (0x404260). Поставим туда контрольную точку и начнём трассировать функцию построчно (F8), следя за состоянием двух наших аппаратных точек останова. Трассировка показывает, что до строки 0x404546 оба значения остаются неизменными. А вот дальше уже любопытнее.

Функция, непосредственно вызываемая из 0x404546, является «трамплином» для запуска функции 0x41E320, так что в ней нет ничего интересного. Ставим точку останова на 0x41E320 и жмём F9.
На данный момент, в стэке можно заметить строку, состоящую из странных, но тем не менее печатных символов (к примеру, у меня это A. 6..O6NBBO. E4GXF3O0..), символа перевода строки и постфикса ZUMA. Трассируем далее, и набредаем на 0x41E37F:

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

До заветного момента, когда можно сказать, что реверс произведён, осталась одна функция, 0x41E100 (вызов из 0x40458C).

Ну тут уж я не буду вас мучать прочтением и расшифровкой ассемблерных листингов, поскольку один хороший товарищ, к тому моменту как я только начал её разбирать, подкинул мне очень вовремя утёкший в Сеть кусок исходника PopCap`овского фреймворка, содержащий в себе пусть не реализацию указанной функции, но хотя бы её название. В общем, барабанная дробь… та функция, на которую мы сейчас собираемся пойти в лобовую атаку, называется aSignature.ModPow(e, n).
Интересующиеся могут проследовать к строке 00069 и обнаружить поразительное сходство функции bool SexyApp::Validate() (SexyApp — во назвали-то; я хренею без баяна, милостивые господа) с нашей, ставшей уже такой родной, 0x404260.

Также, рекомендую обратить внимание на сами e и n:

или, в ассемблерном представлении,

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Как можно догадаться из названия, ModPow() означает возведение в степень по модулю.
А комментарий на строке 00478

окончательно проясняет ситуацию: алгоритм, с которым мы имеем дело — это RSA.

Часть 4: генератор ключей

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

В остальном — прошу любить и жаловать: Zuma keygen, proof-of-concept.
Язык написания — ассемблер. Алгоритм MD5 скопипащен из бинаря игры, и слегка доработан напильником. 96-битная арифметика — аутентична =)

Кейген проверялся не только на той версии Zuma, про которую идёт речь в статье, но также ещё и на других, более ранних или поздних (я не разбирался). Несмотря на то, что адреса с именем пользователя разнились, сам лицензионный ключ подходил к ним всем, что свидетельствует о неизменности алгоритма аж с 2003 года.

Послесловие и использованные ссылки

P.S. Если кто-то может посоветовать более надёжный файлообменник, с которого файлы не удаляются через 30 дней простоя — буду крайне признателен.

P.P.S. Каково же было моё удивление, когда уже после взлома я обнаружил, что Zuma.exe из обсуждаемого пакета — это просто обёртка, архив, который по лицензионному ключу разархивирует в свою же папку реальный бинарь с Zuma, названный popcapgame1.exe

[UPDATE:] перенёс картинки на Habrastorage.

Источник

Читы на Deep.io (diep.io), чит на уровень, на массу, на зум

После некоторого времени игры в Diep.io меня заинтересовал вопрос читов на Deep.io. После долгих поисков информации в Интернете и видео в Ютуб я выбрал лучшие из читов на Diep.io. Далее в статье, я расскажу о чите на уровни, на зум и массу в Deep.io.

читы на игру зума. shema prokachki diep io. читы на игру зума фото. читы на игру зума-shema prokachki diep io. картинка читы на игру зума. картинка shema prokachki diep io. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.Схема прокачки Diep.io

Diep.io – еще одна браузерная игра, выполненная в стилистике Agar.io, Cursors.io, Slither.io и прочих похожих проектов. Однако, в отличие от того же Agar.io, где предстояло бороться за выживание в чашке петри, здесь игрок получает в распоряжение танк.

Со временем, при набирании достаточного количества очков опыта, даются новые уровни и поинты, которые можно тратить на улучшение своего танка.

Читы на Diep.io

По той причине, что Diep.io – это онлайн игра, в которой действия игроков фиксируются на стороне сервера, а не их клиентских машинах, то привычных читов здесь нет. Некоторые пытаются обхитрить систему, и взломать ее. Однако разработчики быстро фиксят такие дыры, и читы Dieo.io больше не работают.

читы на игру зума. diep io chiti. читы на игру зума фото. читы на игру зума-diep io chiti. картинка читы на игру зума. картинка diep io chiti. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.Читы на Deep.io

Чит для Diep.io на повышение уровня

Возьмем, например, cheat, с описанием которого и инструкцией по установке можно ознакомиться в видео на YouTube:

Как следует из заявления создателей чита, использующий предлагаемый скрипт по нажатию на клавишу «F9» во время игры получает новый уровень. Несколько циклов таких манипуляций, и можно получить максимально доступный левел в Diep.io.

Следует отметить, что если на каких-то сайтах предлагаются читы, дающие, например, бессмертие (God mode), то они, скорее всего, содержат в себе вредоносный код.

Чит на изменение зума в игре Diep.io

Есть также скрипт, который может немного облегчить игровой процесс – он просто позволяет приближать и удалять картинку. Дня того, чтобы им начать пользоваться читом на зум в Diep.io потребуется, чтобы в браузер было установлено расширение Tampermonkey, в который нужно инсталлировать специальный скрипт. Откуда скачать сценарий, и как его запустить, можно узнать из видео на YouTube:

Секреты игры в Diep.io

Если с читами все очень неоднозначно, то секретами прохождения Diep.io можно пользоваться свободно без опаски за свой компьютер и без страха получить бан.

читы на игру зума. prokachka urovnya v diep io. читы на игру зума фото. читы на игру зума-prokachka urovnya v diep io. картинка читы на игру зума. картинка prokachka urovnya v diep io. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.Уровни в Diepio

Хорошая тактика для игры в Diep.io

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

Чтобы быстрее подняться до высокого уровня следует придерживаться определенной стратегии:

Подробно о тактике игры в Diep.io можно узнать из следующего видео:

Источник

Исследование игр без исходного кода на примере Zuma

читы на игру зума. 4a7a7d9b. читы на игру зума фото. читы на игру зума-4a7a7d9b. картинка читы на игру зума. картинка 4a7a7d9b. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.Эту игру не надо, наверное, представлять. Жаба, шарики и десятки часов потреченных впустую. В первую часть (когда она вышла) играл часами, до ряби, ночи напролет. Играла жена, друзья, все играли, в общем. Любой, кто посмотрел в глаза жабе, услышал волшебное «дзынь» шариков, метким ударом сделал комбинацию из нескольких цветов, оставался с этой игрой надолго. Кот, вон, и тот лапой по экрану бил, когда видел летящий шарик. В общем если бы кто-то спросил про мои любимые казуальные игры, я бы назвал Zuma и Bejeweled.

Но это присказка. Сказка в том, что я недавно перечитывал «Футурологический конгресс» Лема и наткнулся на орден безлюдистов, который проповедуют Евангелие компьютерам. Это привело меня к мысли, что в Евангелие компьютеру, в общем-то, ни к чему, а вот в Zuma он поиграть не отказался бы. Сказано-сделано. Пишу программу которая играет в Zuma.

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

В комментариях прошу ответить: интересна ли тема, и стоит ли продолжать писать подобное? Интересно ли изложение? (я пишу одновременно с тем как делаю, поэтому тому кто читает может показаться странным).

Приблизительный план действий такой:
1) Препарировать приложение
а) Найти как хранятся шарики, их координаты и цвета
б) Найти как хранится жабка
в) Определить способ запуска шарика
г) Определить где gameover, или что-то вроде этого
2) Сделать инъекцию DLL, чтобы по нажатию кнопки, компьютер играл сам
3) Наслаждаться содеянным

Для приготовления препарата мне понадобится IDA Pro, в качестве скальпеля буду использовать OllyDbg.

Итак, определяю месторасположение шариков. Думаю что нужно посмотреть, как загружаются рисунки. Смотрю на файловую структуру игры, ресурсы хранятся очень просто, в обычных gif файлах.

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Есть смысл поиска в исходнике по названию файла. ALT+T, «RedBall», Enter. Нету. А если просто «Ball»? Есть! Перехожу к строке, смотрю перекрестные ссылки. Используется в одном месте:

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Ого какая функция огромная. Неужели они ее вручную набивали? Все действия сводятся примерно к одному. Насколько я понимаю в функцию загрузки картинки передается ее идентификатор и еше какие-то вещи, которые мне сейчас не нужны. Функция возвращает указатель. Указатель записывается в какую-то глобальную переменную. Здесь пока понятно. Теперь перехожу к отладчику и смотрю что с этим указателем происходит дальше.

Ставлю точку останова на указатель и запускаю игру. Останавливается на этой строчке:

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Тут хорошо видно, что есть таблица указателей (скорее всего на картинки). В зависимости от чего-то выбирается индекс в картинке, соответствующий шарику определенного цвета. Чтобы быть точно в этом уверенным, делаю небольшой эксперимент: делаю индекс константой. Меняю строку MOV EAX,DWORD PTR DS:[EAX*4+9E9FC8] на MOV EAX,DWORD PTR DS:[9EA760] (9E9FC8 + 1E5*4). Вот что получилось:

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

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

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

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

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

читы на игру зума. image loader. читы на игру зума фото. читы на игру зума-image loader. картинка читы на игру зума. картинка image loader. Замедлить движение мяча:Найдите в каталоге Zuma Deluxe!levels файл с названием levels.xml, и откройте его, используя Notepad (блокнот), создав предварительно копию файла.

Опять же, отбрасываю все ненужное и записываю код чтобы было понятно:

Для пробы внедрю сюда код, который будет перекрашивать шарики в 4 цвета, по очереди. Использую Microsoft Detours. Подробно расписывать не буду, и так накатал столько, что вряд-ли кто сюда дочитал. Вкратце код будет такой:

Это чтобы сделать режим «Nightmare!»

а это «I’m too young to die»

Итак, первый пункт плана я выполнил, продолжение следует…

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *