Как делать читы для игр
Перейти к содержимому

Как делать читы для игр

  • автор:

Как научиться кодить? Писать читы для различных игр?

Здравствуйте! Я учусь в 8 классе и по информатике изучаю язык программирования в Pascal(на данный момент изучаем case). Мне очень нравится,как люди пишут разные читы,программы и так далее. Давно мечтал написать свой чит для игры CS:GO,но не знаю где учиться,как учиться и у кого соответственно.Не могли бы подсказать какой-либо сайт,где я бы мог научиться этому? На ютубе видео смотрел,но там не понятно. Буду очень благодарен,если вы поможете мне! Спасибо!

  • Вопрос задан более трёх лет назад
  • 26218 просмотров

6 комментариев

Средний 6 комментариев

Vlad_IT

Давно мечтал написать свой чит для игры CS:GO

Какой вы хороший человек.

Буду очень благодарен,если вы поможете мне!

Обязательно найдется такой же хороший человек, и поможет вам.

myjcom

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

Начинает нравится программирование поучаствуйте в олимпиадах, решайте задачки — для мозга полезнее будет.

Pavel_Dryndin @Pavel_Dryndin Автор вопроса
Владимир Проскурин, нет,руки у меня некривые,это для себя)
Андрей @poslannikD
Pavel_Dryndin, gamehacklab.ru

советую почитать как работает мозг, начать изучать другие языки как пайтон или C++/C#, паскаль умер лет 20 назад если не больше, в целом идея варится в той среде в которой вы хотите быть, что автоматически повысит уровень знаний, но к сожалению не повысит личные качества. и чтобы что то ломать для начала надо понимать как это работает и на чем это пишут и как например работает память и тд и тп

ElenaIcemen

Ольга Йсмен @ElenaIcemen
на это уйдёт не один год
Решения вопроса 0
Ответы на вопрос 2
Saboteur @saboteur_kiev Куратор тега IT-образование
software engineer

1. Читы это просто программы. Не нужно учиться писать читы, нужно учиться программировать. Тем более, начинать с сетевой игры типа CS:GO — не для начинающих.

2. Просто пишите много разных программ. Сперва простых, потом усложняйте.

Программирование — штука сложная. Требует много усилий и много времени. Нельзя посмотреть годик ютуб и стать программистом. Нужно несколько лет потратить на написание программ различной сложности. Чтобы вам стало понятнее, case — это оператор. В программировании это настолько простая вещь, что умение пользоваться подобными вещами даже не считается за обучение. Даже начинающий программист, который способен пройти собеседование на джуниора, может за 10 минут научиться пользоваться оператором case для любого языка программирования, даже если он его впервые видит (ну может за исключением извращений типа brainfuck).

Хотите стать программистом — парралельно с паскалем начните учить что-то из современного. Питон, php, java, c++, javascript
пробуйте все школьные задачи написать на этих языках. Через полгодика-год решите какой язык вам понравился больше и дальше углубляйтесь в него.

P.S. И да, терпение. Его нужно много.

Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать

tsarevfs

C++ developer

Если вам интересна тема игр, можно двигаться в эту сторону.
Читы дело не очень хорошее. Будем честны, большого вреда вы не нанесете в первое время, все взломают и без вас. Но вот на всевозможные баны нарваться будет обидно.
Хорошей практикой может стать создание модов и расширений. Говорят достаточно легко начинать с minecraft + python. Начать может даже ребенок, а возможности у языка и игры почти неограниченные.

Как делаются читы для игр?

twobomb

Что никогда не пользовался ArtMoney или CheatEngine? Отсеиваем значения, находим определенный адрес в памяти приложения в котором например хранится значение золота и меняем его. В онлайн играх конечно это бывает не так просто сделать, так как идет синхронизация с серверами, и ваш хак может оказаться только визуальным, но даже там есть свои лазейки.

Egorian

Egorian @Egorian Автор вопроса
twobomb, можно с лазейками поподробнее?
Сергей @sabramovskikh

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

zamboga

twobomb, ещё был game wizard под dos =)
Решения вопроса 1

Griboks

Существуют три разных подхода:
1) изменение значений ячеек памяти
1a) изменение кода/сохранения на диске
2) прокси сетевого трафика
3) подмена ввода/вывода

Ответ написан более трёх лет назад
Нравится 4 2 комментария
это все в тех случаях, когда сервер не идентифицирует клиент и не проверяет целостность?

Griboks

Bwn_z, это в любых случаях.
Ответы на вопрос 3
Хакинг памяти игры.
Ответ написан более трёх лет назад

Egorian

Egorian @Egorian Автор вопроса
Типа CheatEngine?

borisdenis

Довольный Айтишникъ @borisdenis

Как это возможно если, допустим та же игра на клиент-серверной основе. Ведь, когда входишь в игру идет проверка по хэшсуммам или типа того. Чтобы добавлять вещи используется какой-то другой метод. Ведь хакинг памяти игры работает только на локальном клиенте. Так?

a13xsus

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

automatik, я о этом и говорю, так что не понимаю, про какой хакинг памяти можно говорить. Сейчас 21 век, почти все игры подключается к серверу для идентификации и проверки целостности, даже чтобы поиграть в «сюжетку». Хакинг памяти был актуален, где-то 4-6 лет назад.

было бы большой ошибкой думать

В сетевой игре можно «чит» сделать только на то, что сервером отдаётся на откуп клиенту.
Если, например, здоровье контролируется на сервере, ничего поделать нельзя.
Всё зависит от конкретной игры. Есть разработчики, которые люто орудуют банхаммером за даже подозрение на чит, а есть те, которым похер.
В стрелялках можно сделать aim-bota, например, чтобы каждая пуля летела в голову противнику (даже если стреляешь спиной к нему), в стратегиях популярны map hacking — когда вся карта (и юниты противника) становятся видны, и т. д.
Если игра оффлайновая — тут дозволено всё. Лезем в память процесса и модифицируем что душе угодно.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

coremission

Сергей Кормишин @coremission
Профессиональный программист игр.

Совсем недавно рассказывал о кодах в играх для блога: для чего их создают разработчики игр и почему в последнее время их становится все меньше?

Гайд Что нужно знать, чтобы начать писать читы?

Не находил на этом форуме толковых тем с ответом на данный вопрос. Думаю, пора бы одну такую написать.

И так, первое: будьте готовы, что на вдумчивое обучение уйдёт несколько месяцев. Так уж сложилось, что никаких книг по геймхакингу нет (upd. всё же есть — «Game Hacking — Developing Autonomous Bots for Online Games». Совсем забыл о ней. My bad), статей — почти нет. Есть только несколько каналов на YT (в том числе, как минимум 2 — русскоязычных, но там освещаются довольно простые вещи), от них и придётся плясать.
Второе: не думайте, что на все игры читы писать также просто, как на CS. Нет, далеко не все игры имеют хоть какой-то SDK. Придётся долго и кропотливо реверсить всё самому, вообще всё.

А теперь о том, что непосредственно необходимо знать:
1) Язык программирования (ЯП). Можно выбирать любой (буквально), но лучше C++. Для него есть огромное количество всевозможных библиотек, гайдов и прочего-прочего. К тому же, большинство читов пишутся именно на C++. Один из его плюсов, в отличие от того же C# — недекомпилируемость. Да, от реверсинга никто не защищён, но по крайней мере Ваш код не будет нагло скопирован Васей из интернета и запихнут в «его» приватный чит, продаваемый за деньги.
2) ASM. Он нужен Вам как для возможных asm-вставок в своём коде, так и для реверсинга в процессе создания чита. Реверсинг — 50% работы, или даже больше, если речь идёт о чите.
3) Собственно, само умение реверсить. Есть переведённый курс от Рикардо Нарваха, написанная на русском книга RE4B, множество другого материала по данной теме. Остаётся только курить.
4) Понимание структуры PE-файлов. Легко гуглится, прочесть стоит.
5) Наставник. Необязательно, но желательно, чтобы был человек, готовый отвечать на Ваши глупые вопросы 😀 (спасибо, Hardee)
6) Умение работать со следующим софтом (перечислю то, с чем сам работал):
1. IDA Pro — очень удобный дизассемблер с плагином HexRays, позволяющим приводить код функций к псевдо-коду на Си. Также имеется и множество других плагинов. В отличие от Ghydra, нормально находит энтрипоинты, распознает API-структуры, без каких-либо проблем дебажит и вообще работает намного быстрее. В этой программе Вы будете реверсить то, что Вам необходимо, изучать, как работает та или иная программа, а также отлаживать программу при надобности.
2. Сканер памяти — выбирайте любой. Сканер нужен для поиска адресов в памяти/оффсетов. Для иного я его не использовал, хотя можно, если хочется.
3. ReClass — удобная программа для реверса структур и классов.

И что мы имеем? Наверное, по крайней мере полгода обучения всему тому, что я перечислил выше. А теперь подумайте, действительно ли Вы так хотите писать читы? 🙂

Хорошо, допустим, вы изучили всё, что требуется. Что теперь?
Начните с простых вещей:
1) Запись Вашего значения в адрес памяти игры
2) Хуки отдельных функций и целых ВМТ (о хуках также стоит почитать)
3) Создание автооффсета для поиска в памяти какого-то определённого значения в регулярно обновляющейся игре (тут нужно смотреть в сторону сигнатурного сканирования)

Ну вот и всё. Если вы прошлись по всему изложенному, то можете считать, что готовы начать писать читы. Это увлекательное, хоть и требуемое времени (частенько — нервов) занятие. Надеюсь, пост был не слишком сумбурным. Чао!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Полезные ссылки:

Это читерство! Учимся взламывать игры и писать читы на простом примере

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

Виды читов и применяемые тактики

Существуют разные виды читов. Можно разделить их на несколько групп.

    External — внешние читы, которые работают в отдельном процессе. Если же мы скроем наш external-чит, загрузив его в память другого процесса, он превратится в hidden external.

Есть три основные тактики модификации поведения игры.

  1. Изменение памяти игры. API операционной системы используется для поиска и изменения участков памяти, содержащих нужную нам информацию (например, жизни, патроны).
  2. Симуляция действий игрока: приложение повторяет действия игрока, нажимая мышкой в заранее указанных местах.
  3. Перехват трафика игры. Между игрой и сервером встает чит. Он перехватывает данные, собирая или изменяя информацию, чтобы обмануть клиент или сервер.

Большинство современных игр написаны для 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-чита выглядит так:

  1. Найти ID процесса.
  2. Получить дескриптор к этому процессу с нужными правами.
  3. Найти адреса в памяти.
  4. Пропатчить что-то, если нужно.
  5. Отрисовать GUI, если он имеется.
  6. Считывать или изменять память по мере надобности.

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

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

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

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