• 1. Как делать читы: Читинг утилитами для работы с памятью



    В этой статье я попробую объяснить основные принципы читинга, т.е. как он действует, в одиночной или сетевой игре. Этот урок больше теоретический, чем практический, ссылки на уроки где идет практическое применение этой методики вы найдете после того как прочтете эту статью до конца.;-)

    Попробую максимально просто сформулировать, хотя эта формулировка будет не совсем корректной. В первую очередь игра это самая обычная программа под Windows, т.е. файл формата PE Exe (Portable Executable), программа при запуске просит у системы памяти для себя, в которой потом и работает. Программа (обычно) работает только в рамках того диапазона памяти, который система выделила, туда загружается она сама (исполняемый код), статические данные жестко в нее вшитые, динамические библиотеки (их код), а так же области памяти с которыми производятся операции чтения и записи. Более подробно мы углубляться пока не будем чтоб не забивать себе голову, но если кто хочет узнать об этом подробнее, советую посмотреть книгу Джеффри РИХТЕР. Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows. , Раздел III: Управление памятью.

    Собственно подведя под вышесказанным черту, в каждом процессе есть участки памяти следующих основных видов:
    1. Код - непосредственно исполняемый участок программы который и приводит в действие ее
    2. Статические данные вшитые в программу - это разные определенные программистами константы, текстовые строки и т.д. которые потом используются программой
    3. Участки для чтения/записи - это то, куда непосредственно пишутся данные о том, сколько у вас например жизни, патронов в автомате, денег или чего либо другого.

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

    Можно сформулировать процесс так:
    1. Игра считывает из памяти сколько денег у вас есть
    2. Игра проверяет достаточно ли суммы имеющихся денег чтобы купить то, что вам нужно
    3. Если да, добавляет вам купленный предмет в инвентарь
    4. Записывает туда же в память остаток денег который остался после покупки

    Потом опять считывает и так происходит циклически. Хотя в этом утверждении есть неточность, это касается пожалуй больше одиночных игр, в сетевой игре может быть несколько по-другому:
    1. С сервера приходит пакет который сообщает вашей игре сколько у вас денег
    2. Игра проверяет достаточно ли суммы имеющихся денег чтобы купить то, что вам нужно
    3. Если да, добавляет вам купленный предмет в инвентарь
    4. Отправляет серверу сообщение о том, сколько денег вы потратили
    5. Сервер снова шлет вам пакет в котором сообщает сколько денег у вас осталось

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

    Здесь и появляется возможность почитерить, раз сервер не проверяет всего, то значит где-то можно его просто обходить, проще говоря игнорировать то что он присылает. Как это можно сделать? Есть несколько вариантов, прежде всего нужно найти где хранятся эти деньги, а далее можно поступить следующим образом на выбор:
    1. Записывать периодически туда то что вам нужно
    2. Сделать так чтобы туда постоянно записывалось то что нужно
    3. Сделать так, чтобы программа не смотрела что там записано, а брала в учет то что будет указано.

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

    Первые два варианта в принципе можно и объединить с помощью таких программ как ArtMoney или GameHack, на этом мы и остановимся подробнее в этой статье.

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

    Запускаем игру, запускаем ArtMoney, изначально нам дается 10000 руб. Давайте пока приостановим игру, и переключимся в ArtMoney.

    Выберем поиск точного значения и найдем в памяти интересующего нас процесса (игры) интересующее нас число 10000. ArtMoney умеет работать с разными типами данных, BYTE (байт), WORD (слово), DoubleWORD (двойное слово), текстовые данные, данные с плавающей точкой и т.д., для того чтобы понимать что это такое, советую обратиться к википедии. Так же может работать с хитрыми данными которые хранятся в шифрованном виде и производить гибкий поиск значений в диапазоне между минимально возможным и максимально возможным, что может очень пригодиться в случае, если то что вы будете искать, не отображается цифрой, а идет по шкале на которой нет измерителей, в общем очень функциональная вещь, рекомендую почитать от нее помощь, там на русском языке все доступно написано.

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

    Пробовать какое из найденных значений нужно менять, придется методом научного тыка, т.е. вручную изменяя количество денег. Жмем редактировать значение, и вписываем например 20000, возвращаемся в игру, и смотрим, не изменилось ли у нас количество денег, если нет, то идем снова в ArtMoney и исправляем следующее значение, таким образом рано или поздно мы найдем ту ячейку в памяти, которая и есть нашими денежками в игре. Как только вы ее нашли, и вернувшись в игру обнаружили что у вас стало 20000, можно обрадоваться.;-)

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

    Мерцание происходит потому что заморозка памяти понятие относительное, это не заморозка как таковая, это просто ArtMoney будет например каждую секунду, записывать туда миллион, а сервер будет присылать раз 5 секунд что у вас 9500, и так и будет идти борьба добра и зла.;-) Но зачастую все-таки удается в момент покупки жмакнуть кнопочку тогда, когда в памяти будет именно 1000000, он все-таки чаще будет находиться в памяти чем приходить пакеты с сервера, но можете и не попадать, а попасть на тот момент когда будет именно 9500, не отчаивайтесь, попробуйте жмакнуть еще разочек.

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

    Ссылки на уроки практических работ:
    1. От ученика GTX7 - Как писать читы: №1 Ищем нужное значение с помощью Cheat Engine
    2. Видео урок (нашел SKY) - Работа в Cheat Engine: чит для PointBlank
    Эта статья изначально была опубликована в теме форума: 1. Как делать читы: Читинг утилитами для работы с памятью автор темы ShadowAGT Посмотреть оригинальное сообщение
    Комментарии 6 Комментарии
    1. Аватар для LiNuKS
      Ничего нового не узнал.
    1. Аватар для Серж34
      спасибо за инфу
    1. Аватар для kakaxaX
      Спасибо)
    1. Аватар для Денис_55
      лучше подробное видео выложи что да как делть и какой прогой
    1. Аватар для Pasta
      Чёт ссылка на Джефри выдаёт Page not found
    1. Аватар для Pasta
      Спасибо за статью
  • Архив

    Июнь   2019
    Вс Пн Вт Ср Чт Пт Сб
    1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30