Пишем чит для Counter-Strike или как работать с памятью в C++
Сёркииис! Сегодня затронем почти не обсуждаемую тему в рунете — как написать чит на C++. Я не призываю вас писать читы для игр, эту тему я затрагиваю лишь в познавательных целях.
Вчера мне предложили написать чит для игры, опыта в этом у меня конечно нет, но из любопытства я сразу же «побежал» читать забугорные сайты на эту тему, так в итоге я написал свой «чит» для накрутки денег в CS 1.6:
Идея такая, ищем процесс с игрой, заходим в его память и меняем нужные нам данные. Как можно заметить, я явно указываю адрес в памяти, который хранит деньги, чтобы сэкономить вам время чтения этого поста (кому интересно, здесь можно посмотреть, как перебирать ячейки памяти процесса). Весь код прокомментирован и думаю, у вас не должно быть проблем с его понимаем, ведь в C++ невероятно удобно работать с памятью.

53 поста 4.6K подписчика
Правила сообщества
Соблюдайте правила Pikabu:
Помимо этого ЗАПРЕЩЕНО:
— Размещать в сообществе посты стиля «Подскажите как удалить вирус», «Подскажите как установить программу», «Подскажите как починить монитор/телевизор/мышь/тостер/стиральную машину» или «Напишите за меня лабу в универ». Пожалуйста размещайте такие посты вне этого сообщества или в соответствующих для этого сообществах.
Да это-то хуйня, чё там писать-то.
Проблема адрес с текущими деньгами получить.
Почему не пользовать artmoney?

Ответ на пост «Как полезно и важно порой чувствовать себя идиотом»
На мой взгляд, проблема обучения программированию, что дают знания не обучая отладке, особенно в универе. Редко кто говорит о типичных ошибках начинающих программистов. Редко задачу дробят, чтобы объяснить (Особенно при вложенных циклах for). Никогда не забуду про операции с матрицами в C. Редко делают разбор нескольких сложных задач. На обычных курсах дают пару тривиальных примеров , а в домашнем задании примеры не соответствуют уровню пройденного занятия и сложность задач растет в геометрической прогрессии. Частая проблема новичков в невнимательности и преподавателей это сильно раздражает. Программирование на С/С++ в начале 00-ых мне далось очень тяжело, сказалось отсутствие ПК дома. Преподаватель по С (по совместительству бывший завкафедры и к.т.н) при группе сказал , что такие как я не доучиваются (ладно бы если сам про себя сказал,а тут публично считай назвали идиотом), но так получилось я всё-таки доучился , а те кто знал лучше меня C далеко не все доучились. Я тогда взял себе за правило, если буду когда-либо помогать в обучении, то всегда буду относиться обучающемуся с уважением (без снобизма, подколок), если возникает непонимание, переформулировать иначе и кроме того я обучал на реальных задачах. Если студент не понял и/или ошибается, это не только проблема студента, но и того кто обучает. Сейчас немного программирую на Python, занимаюсь парсингом при помощи xpath и regex. Иногда помогаю в изучении питона знакомому школьнику. По его словам обучение со мной оказалось гораздо интереснее и полезнее чем с преподавателем. К счастью или к сожалению, программирование начинается сколько не с программирования , а прежде всего с умения анализировать (в точнее умении декомпозировать задачу), умении сконцентрироваться и не отвлекаться (по началу списать код с учебника без ошибок сложно), многократном повторении пройденного материала, в самостоятельном поиске информации, умении задавать правильные вопросы и запросы в поисковой системе.
[Гайд] Как сделать свой приватный чит с привязкой и undetect
Всем привет пастеры или просто люди,которые хотят создать свой приватный чит в CS:GO.Сегодня я вас научу как это делается,даже знания языков не понадобится.
1.Мы конечно же должны скачать программу для создания программ — Visual Studio

4.Теперь,как у вас открылся проект,возможно попросит изменить версию на v141,нажимаете ок.
5.Теперь нажимаем ctrl + f,в открывшемся окне поиска пишем yandere(название чита),нажимаем найти далее и так заменяем все что оранжевым отмеченно,на название вашего чита!


Если компиляция завершилась удачно,то будет написано: сборка:успешно: 1
Теперь достаем скопиленную длл,она находится в папке с исходниками чита и далее там папка Release.
7.Теперь если хотите играть на серверах вак и чтобы чит был undetect,нужно скачать программу Protect
Делаем чит на КС ГО
Привет, сегодня мы создадим наш первый External-чит для ксго. Создавать мы будем вх, так как вх — идеален, чтобы рассматривать его как основу. Я постараюсь расписать все максимально понятно и по шагам, чтобы вы поняли как что работает, а не просто спастили код и ничему не научились.
Итак, приступим.
1. Создаем простой C++ проект в Visual Studio.
2. Создаем файл main.cpp, здесь и будет весь наш код.
3. Пишем в начало файла следующий код:
здесь мы подключили нужные библиотеки для работы, если у вас какой-то нет, то скачайте или подключите через параметры проекта (можете посмотреть в интернете уроки, если не знаете, как это делать, их полно).
4. Теперь самое время сделать переменные с оффсетами. Почему именно переменные? Да потому что их легко обновлять, и не нужно лазить по всему коду и вспоминать, какой оффсет для чего и где.
разберем каждое ключевое слово в коде:
const — мы делаем именно константы (не переменные), чтобы им нельзя было присвоить другие значения, кроме тех, которые мы уже задали.
DWORD — класс. Переменные имеют тип экземляра именно класса DWORD.
5. Сейчас мы определим переменные, с которыми мы будем работать на протяжении всего написания чита.
Мы объявили необходимые переменные, комментарии, обозначающие «что зачем и почему» я написал в самом коде.
6. Что же, теперь приступим к написанию нашего чита непосредственно.
Первое, что нам нужно — это возможность включать или выключать те или иные функции (в нашем случае — вх).
Если вы подумали о переменной типа boolean, определяющей статус функции — вы правы.
Мы объявили переменную, которая определяет статус функции, по умолчание вх выключено, значит значение переменной false.
7. Так как мы создаем External-чит, нам нужно читать память и изменять ее.
Добавим следующий код, необходимый нашему читу. Что и зачем расскажу по ходу делал.
данный код находит в нашей оперативной памяти именно то приложение, которое нам нужно (по его id — pid, который передается функции).
эти стандартные функции читают и пишут память, именно с помощью них мы будем взаимодействовать с игрой.
8. Теперь создадим входную точку, без которой не будет работать ни одно приложение C++. Это int main().
весь код с комментариями, его нам еще придется обновлять. Что мы в нем сделали? Мы нашли ксго, интегрировали чит с игрой, получили необходимые базы (клиент и движок).
9. Теперь пора создать сам вх. Создадим метод (пусть будет wallhack())
10. Теперь нам нужно где-то вызывать наш метод. Конечно же в main()!
Теперь вызовем наш метод:
std::thread whThread(wallhack)
И создадим в нашем главном методе бесконечный цикл.
CS Source кратко о создании чита All in One
Решил поделиться, с Вами, своим небольшим опытом создании чита для Counter-Strike Source v34. Данное приложение было написано исключительно ради спортивного интереса(служит, исключительно, для ознакомления), так как в годы своей юности (изрядно убил времени за этой игрой :() всегда интересовало как же устроены эти программы, хотя теоретически знал как они работают. И вот спустя пол десятка лет (в 2010 году), после игры с коллегами в канун одного из праздников я опять вспомнил о своем давнем *интересе*…
Думаю с прелюдиями стоит закончить, скучно это, переходим к практике.
Будет много кода.
Полных исходников выкладывать не буду, а отдам только абстрактные куски кода, но это рабочие фрагменты.
Для раззадоривания скажу, что в данном чите реализована функция, позволяющая стрелять в любое место и убивать противников которые могут находиться где угодно, главное, чтобы был прострел (можно бежать и убивать всех за спиной), ее я назвал AssShot — для настоящих читеров, не привыкших скрываться (что наглядно продемонстрировано в видео). VAC его не обнаруживает, но это пока кто-то не выложит его в свободный доступ.
Видео записалось с низким фпс, извиняюсь — камтазия, а так никаких фризов модуль не вызывает.
И так, для начала нам понадобится:
Microsoft DirectX — менюшки, есп, имя, хелсы, кросхайр рисовать.
Microsoft Detours — как нетрудно догадаться для подмены вызовов, как собрать и работать с данной либой есть на хабре , я на этом останавливаться не буду.
Source SDK — SDK CSS оно облегчит нам процесс.
Приступим. Создаем новый проект из Source SDK. Удаляем весь хлам в нем — все *.cpp, они нам не нужны.
И так в точке входа создаем свой виток, в котором запускаем бесконечный цикл (для хоткеев) и подменяем вызовы DX:
DllMain.cpp
А вот и самая грязная функция, она то и подменяет вызовы CSS:
Как вы помните мы переопредилили вызов iEndScene, которым и воспользуемся для отрисовки menu, esp, wallHack и Anti flash/smoke/fog:
Для wallHack и Anti то/се нам требуется получит материалы:
И говорим рисуем/игнорируем их или нет:
Переопределенной функцией new_CreateMove воспользуемся для aimBot и, совсем забыл, bunnyHop:
В классе аимбота отслеживаем жертву (удостоверившись, что это игрок противоположной команды), перебирая кости находи нужную часть тела (в нашем случае голова) и перемещаем центр экрана в эту точку, делаем выстрел, попутно гася отдачу (antiRecoil). Да забыл сказать, что если включен assShot то возвращаем нашего персонажа в положение до стрельбы (так вот он работает).
Вот в принципе самые главные части кода. Конечно есть небольшой пучек вспомогательных функций, а также классы для отрисовки меню, чтения файла настроек (у меня это setings.ini) и рисования esp, но в них вроде и так все понятно. На SpeedHack энтузиазма у меня уже не хватило, но подскажу — нужно баловаться с таймингами (правда чревато подвисаниями при плохом пинге).
И так перейдем к инъекции нашей сборки в процесс игры, 2 варианта c++ по хендлу окна или c# по процессу