CS Source кратко о создании чита All in One

Добрый день.

Решил поделиться, с Вами, своим небольшим опытом создании чита для Counter-Strike Source v34. Данное приложение было написано исключительно ради спортивного интереса(служит, исключительно, для ознакомления), так как в годы своей юности (изрядно убил времени за этой игрой :() всегда интересовало как же устроены эти программы, хотя теоретически знал как они работают. И вот спустя пол десятка лет (в 2010 году), после игры с коллегами в канун одного из праздников я опять вспомнил о своем давнем *интересе*…

Думаю с прелюдиями стоит закончить, скучно это, переходим к практике.

Будет много кода.

Полных исходников выкладывать не буду, а отдам только абстрактные куски кода, но это рабочие фрагменты.

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

Видео записалось с низким фпс, извиняюсь — камтазия, а так никаких фризов модуль не вызывает.

И так, для начала нам понадобится:

Microsoft DirectX — менюшки, есп, имя, хелсы, кросхайр рисовать.

Source SDK — SDK CSS оно облегчит нам процесс.

Приступим. Создаем новый проект из Source SDK. Удаляем весь хлам в нем — все *.cpp, они нам не нужны.

И так в точке входа создаем свой виток, в котором запускаем бесконечный цикл (для хоткеев) и подменяем вызовы DX:

Как вы помните мы переопредилили вызов iEndScene. которым и воспользуемся для отрисовки menu, esp, wallHack и Anti flash/smoke/fog:

Для wallHack и Anti то/се нам требуется получит материалы:

И говорим рисуем/игнорируем их или нет:

Переопределенной функцией new_CreateMove воспользуемся для aimBot и, совсем забыл, bunnyHop:

В классе аимбота отслеживаем жертву (удостоверившись, что это игрок противоположной команды), перебирая кости находи нужную часть тела (в нашем случае голова) и перемещаем центр экрана в эту точку, делаем выстрел, попутно гася отдачу (antiRecoil). Да забыл сказать, что если включен assShot то возвращаем нашего персонажа в положение до стрельбы (так вот он работает).

И так перейдем к инъекции нашей сборки в процесс игры, 2 варианта c++ по хендлу окна или c# по процессу