Как создать свой чит на любую онлайн игру
Это читерство! Учимся взламывать игры и писать читы на простом примере
Содержание статьи
- Виды читов и применяемые тактики
- Пишем игру на C
- Приступим к реверс-инжинирингу
- Жизненный цикл external
- Пишем внешний чит для своей игры
- Проверяем
- Пишем свой первый инжектор
- Имплементируем LoadLibrary инжект
- Пишем основу для internal
- Проверяем наш чит
- Подведем итоги
Виды читов и применяемые тактики
Существуют разные виды читов. Можно разделить их на несколько групп.
External — внешние читы, которые работают в отдельном процессе. Если же мы скроем наш external-чит, загрузив его в память другого процесса, он превратится в hidden external.
Internal — внутренние читы, которые встраиваются в процесс самой игры при помощи инжектора. После загрузки в память игры в отдельном потоке вызывается точка входа чита.
Pixelscan — вид читов, который использует картинку с экрана и паттерны расположения пикселей, чтобы получить необходимую информацию от игры.
Network proxy — читы, которые используют сетевые прокси, те, в свою очередь, перехватывают трафик клиента и сервера, получая или изменяя необходимую информацию.
Есть три основные тактики модификации поведения игры.
- Изменение памяти игры. API операционной системы используется для поиска и изменения участков памяти, содержащих нужную нам информацию (например, жизни, патроны).
- Симуляция действий игрока: приложение повторяет действия игрока, нажимая мышкой в заранее указанных местах.
- Перехват трафика игры. Между игрой и сервером встает чит. Он перехватывает данные, собирая или изменяя информацию, чтобы обмануть клиент или сервер.
Большинство современных игр написаны для Windows, поэтому и примеры мы будем делать для нее же.
Пишем игру на C
Про читы лучше всего рассказывать на практике. Мы напишем свою небольшую игру, на которой сможем потренироваться. Я буду писать игру на C#, но постараюсь максимально приблизить структуру данных к игре на C++. По моему опыту читерить в играх на C# очень просто.
Принцип игры прост: нажимаешь Enter и проигрываешь. Не особо честные правила, да? Попробуем их изменить.
Приступим к реверс-инжинирингу
У нас есть файл игры. Но вместо исходного кода мы будем изучать память и поведение приложения.
Начнем с поведения игры
При каждом нажатии Enter жизни игрока уменьшаются на 15. Начальное количество жизней — 100.
Изучать память мы будем при помощи Cheat Engine. Это приложение для поиска переменных внутри памяти приложения, а еще хороший дебаггер. Перезапустим игру и подключим к ней Cheat Engine.
Подключение CE к игре
Первым делом мы получаем список всех значений 85 в памяти.
Все значения, которые нашел CE
Нажмем Enter, и показатель жизней будет равен 70 . Отсеем все значения.
Значение найдено
Вот и нужное значение! Изменим его и нажмем Enter для проверки результата.
Значение изменено
Скрин игры, после того как мы нажали Enter
Проблема в том, что после перезапуска игры значение будет уже по другому адресу. Каждый раз отсеивать его нет никакого смысла. Необходимо прибегнуть к сканированию AOB (Array Of Bytes — массив байтов).
При каждом новом открытии приложения из-за рандомизации адресного пространства (ASLR) структура, описывающая игрока, будет находиться на новом месте. Чтобы найти ее, необходимо сначала обнаружить сигнатуру. Сигнатура — это набор не меняющихся в структуре байтов, по которым можно искать в памяти приложения.
После нескольких нажатий на Enter количество жизней изменилось на 55 . Снова найдем нужное значение в памяти и откроем регион, в котором оно находится.
Регион памяти
Выделенный байт и есть начало нашего int32 -числа. 37 00 00 00 — число 55 в десятичной форме.
Я скопирую небольшой регион памяти и вставлю в блокнот для дальнейшего изучения. Теперь перезапустим приложение и снова найдем значение в памяти. Снова скопируем такой же регион памяти и вставим в блокнот. Начнем сравнение. Цель — найти байты рядом с этой сигнатурой, которые не будут меняться.
Начинаем сравнивать байты
Проверим байты перед структурой.
Бинго!
Как видишь, выделенные байты не изменились, значит, можно попробовать использовать их как сигнатуру. Чем меньше сигнатура, тем быстрее пройдет сканирование. Сигнатура 01 00 00 00 явно будет слишком часто встречаться в памяти. Лучше взять 03 00 00 01 00 00 00 . Для начала найдем ее в памяти.
Сигнатура не уникальна
Сигнатура найдена, но она повторяется. Необходима более уникальная последовательность. Попробуем ED 03 00 00 01 00 00 00 .
В подтверждение уникальности получим такой результат:
Сигнатура уникальна
Нам необходимо найти отступ от сигнатуры, чтобы получить ее стартовый адрес, а не адрес жизней. Пока сохраним найденную сигнатуру и отложим на некоторое время. Не беспокойся, мы к ней еще вернемся.
Жизненный цикл external
Используя функцию OpenProcess , внешние читы получают дескриптор для нужного процесса и вносят необходимые изменения в код (патчинг) или считывают и изменяют переменные внутри памяти игры. Для модификации памяти используются функции ReadProcessMemory и WriteProcessMemory .
Так как динамическое размещение данных в памяти мешает записать нужные адреса и постоянно к ним обращаться, можно использовать технику поиска AOB. Жизненный цикл external-чита выглядит так:
- Найти ID процесса.
- Получить дескриптор к этому процессу с нужными правами.
- Найти адреса в памяти.
- Пропатчить что-то, если нужно.
- Отрисовать GUI, если он имеется.
- Считывать или изменять память по мере надобности.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Гайд Как сделать свой чит(Ренейм)! Как обновить оффсеты и индексы чтоб не крашило!
- Глобальный игровой раздел
- Counter-Strike: Global Offensive
- Полезный материал для CS:GO
Модератор
Модератор
Модератор
пол года, я научился многому, улучшил свои знания, и теперь во все оружии решил завоевать сердца каждого юзера данного форума и добиться упущенного, ждите вкусняшек от МубиКрази, начиная от большого обновления данной темы)
Решил сделать гайд, буду объяснять внятно на человеческом языке для людей)
Если кто-то что-то не понял, обращаться тут или же в дс(MubiCrazy#7141)|
Пункты:
1) Изначальная подготовка любого кодера! (Обязательная часть)
2) Знакомство с кодом! (Присмотритесь, если поработать с нескольким десятком исходников, будет ясно, что за что отвечает)
3) Для тех кто хочет сразу получить “Свой софт”! (Это называется ReName, не злоупотребляйте)
4) Как обновить оффсеты (Не обязательно, т.к. все софты имеют авто обновление оффсетов)
5) Как обновить индексы! (Необходимы своевременные обновления ибо зачастую краши из-за них)
6) Как дебажить! (Дебаг – функция определения неисправностей в коде, в софтах используется для выяснения: “почему крашит”)
И так, погнали значится:
5) Как сделать чтоб не крашило, чтоб обновить индексы вам нужно понять как они выглядят. Выглядят они так: 157 или 452.
5.1) Теперь узнать новые индексы, благо раздобыл из UC (no ad) таблицу индексов:
5.2) Ищем (Ctrl+f) названия из таблицы: IsPlayer, IsWeapon и т.д., если они отличаются от последних указанных в таблице, меняем.
5.3) Индексы обновляются не очень часто, и если и случается такое, то 3-4 штуки за раз.
6) Почему крашит, для начала нужно скомпилировать софт в Debug | x86.
6.1) Запускаем CS:GO и в Visual Studio нажимаем: , выбираем кс.
6.2) Инжектим собранную длл-ку в игру через любой инжектор (я рекомендую Proccess Hacker 2)-
6.3) Если произойдёт краш игры, то вас перебросит в Visual Studio (проще VS или визуалка) и укажет на причину краша.
Как сделать трейнер в Cheat Engine
Программа Cheat Engine помогает пользователям взламывать любимые игры, приобретая бесконечное количество игровых денег и нескончаемую шкалу жизни игрового персонажа. Для удобства использования, разработчики программы добавили опцию создания трейнеров. С помощью трейнеров пользователь сохраняет алгоритм взлома игры, который будет использоваться в следующих сессиях. В этой статье создан гид по тому, как сделать трейнер в cheat engine. Дополнительно, авторы статьи рассказывают об инструментах программы, которые влияют на работоспособность трейнера.
Для чего нужен трейнер в Cheat Engine
Трейнер экономит время игрока. С помощью такого устройства, игроку нет необходимости каждый день настраивать параметры Cheat Engine и делать изменения в файлах игры. Трейнер — это плагин, который создается один раз и используется каждый раз по необходимости. В такой плагин настраивается список функций. Это — увеличение очков игрока, уменьшение сил и выносливости соперника, сокращение карты, появление бустеров и др.
Этапы создания трейнера. Выбор процесса
Меню для создания трейнера расположено во вкладке «File».
Нажав кнопку «Generate graphic trainer» пользователю открываются два окна. В одном окне создается трейнер. В другом окне демонстрируется визуализация трейнера, а также, прописываются горячие клавиши.
В строке «Processname» прописывается класс процессов, которые будет выполнять трейнер. Для взлома программ используется процесс cheatengine-x86_64.exe.
Ниже расположена опция для установки горячей клавиши вызова трейнера. Пользователем выбирается сочетание клавиш по собственному усмотрению.
Добавить горячие клавиши
Создание трейнера заключается в выборе горячих клавиш для параметров взлома. Эти клавиши игрок будет нажимать, чтобы взломать интересующий процесс во время игры. Этот параметр настраивается посредством опции Add Hotkey. Как показано на рисунке ниже, автор статьи выбрал параметр Hp, который отвечает за восстановление здоровья игрового персонажа.
После нажатия кнопки «Ok» появится окно, в котором проставляется значение горячей клавиши для выбранного параметра взлома. Затем автор статьи выбрал горячие клавиши для параметра «Godmode» ( Бессмертие). В окне демонстрации процессов появились 2 новых описания.
В строках «Title» и «About text» прописывается название трейнера и добавляется описание параметров, которые улучает плагин.
В правой части панели инструментов расположена настройка запуска трейнера «Stop playing when». По умолчанию, трейнер активируется одновременно с запуском игры. Вместе с тем, игрок может отключать трейнер.
Ниже, расположена кнопка уведомления об использовании трейнера. В шутерах и других «шумных» играх, звуковое сопровождение трейнера помогает игроку, так как игрок получает уведомление, сообщающее, что его персонаж получил дополнительные силы.
Теперь осталось нажать кнопку «Generate trainer» и трейнер будет готов.
На что надо обращать внимания при создании трейнера?
Создание трейнера требует внимательности и знания особенностей компьютерной игры, которую предстоит взламывать. В панели инструментов программы Cheat Engine представлены инструменты для создания оригинальных кодов для взлома. Однако, создания таких кодов требует навыки в программировании, либо умение использовать скрипты, найденные в интернете. Большинство игроков находят параметры взлома в формате exe в интернете, загружают такие файлы на компьютер и используют в трейнерах, как сделал это автор статьи с кодом для «Бессмертия» и «Здоровья».