Гайд Как писать читы на C# (BunnyHop)

Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
Всему YouGame привет! В этом гайде я решил показать, как писать читы на C#. Конечно же мы не будем с нуля писать методы для чтения и записи в память процесса, мы будем использовать библиотеку NativeManager, которая хранится в моем репозитории на GitHub. Ссылку на нее я оставлю ниже.
Ну давайте приступим)

Я не буду объяснять, как создавать проекты в VisualStudio и тому подобное, будем считать, что те, кто читают этот гайд, хотя бы немного разбираются в том, как создавать и работать с проектами в визуалке.

1)Первым делом нужно скачать библиотеку на GitHub:
Пожалуйста, авторизуйтесь для просмотра ссылки.

2)Скомпилируйте эту библиотеку у себя на компьютере
3)Создайте свой проект с будущим читом
4)Через ссылки добавьте NativeManager в свой проект
5)Приступаем к разработке!!!!

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Чит мы будем создавать на примере игры CS:GO

1)После того как мы создали проект с читом, нам нужно добавить ссылки на пространства имен нашего NativeManager'a
using System.MemoryInteraction;

2)В NativeManager есть 2 класса для работы с памятью
  1. SimpleMemoryManager
  2. MemoryManager(Производный класс от SimpleMemoryManager)
Мы будем использовать класс MemoryManager, так как в нем реализованы методы, которые позволяют нам без дополнительных усилий прочитать данные из памяти процесса.

3)Пишем код для присоединения к процессу игры
ВАЖНО!!!
Игра должна быть запущена раньше чита, иначе мы словим исключение, что такого процесса не существует!
C#:
Process process = Process.GetProcessesByName("csgo")[0];
MemoryManager memory = process.GetMemoryManager();
В первой строчке кода мы указали, что нам нужен процесс с именем "CSGO".
Во второй строчке кода мы указали, что нам нужно получить экземпляр MemoryManager для работы с виртуальной памятью процесса.

4)Следующим этапом нам нужно получить модули процесса, с которыми нам нужно работать, что бы прочитать нужные нам данные
C#:
IntPtr client = process.GetModule("client.dll").BaseAddress;
5)Создаем бесконечный цикл для того, что бы наш чит постоянно читал данные из игры и мог так же в нее записывать.
C#:
while(true)
{

}
6)Теперь нам нужно получить локального игрока из игры. Для этого в цикле нам нужно написать вот такой код
C#:
IntPtr localPlayer = memory.Read<IntPtr>(client + 0xD3FC5C);
Число 0xD3FC5C может меняться с каждым обновлением игры. Следить за обновлением оффсетов можно на GitHub по этой ссылке:
Пожалуйста, авторизуйтесь для просмотра ссылки.


7)Мы получили локального игрока, теперь нам нужно получить его флаг. С помощью него мы будем понимать в прыжке он или нет
C#:
 int flag = memory.Read<int>(localPlayer + 0x104);
8)Для начала сделаем проверку на нажатие кнопки пробела
Этот код нужно добавить в любой из классов
C#:
[DllImport("user32.dll")]
static extern bool GetAsyncKeyState(int vKey);
А этот код в наш цикл после получения флага
C#:
if (GetAsyncKeyState(32))
{

}
9)Теперь нам нужно сделать проверку, находится игрок в воздухе или на земле. Для этого нужно добавить этот код в условие проверки нажатия клавиши пробел
C#:
 if(flag == 256 || flag == 262)
{

}
10)В этом условии нам нужно сделать запись в память игры, что бы делать прыжок, когда мы оказываемся на земле
C#:
if (flag == 256 || flag == 262)
{
     memory.Write(client + 0x51FE22C, 4);
}
else
{
     memory.Write(client + 0x51FE22C, 5);
}
На этом все. Мы написали такой маленький и легкий код, с помощью которого наш персонаж может прыгать без остановок.
Надеюсь, я объяснил все доходчиво и понятно. Если будут какие то вопросы, то с удовольствием отвечу вам на них в комментариях.
А вот подарок тем, кто не хочет копировать код по частям.

C#:
            Process process = Process.GetProcessesByName("csgo")[0];
            MemoryManager memory = process.GetMemoryManager();

            IntPtr client = process.GetModule("client.dll").BaseAddress;

            while(true)
            {
                IntPtr localPlayer = memory.Read<IntPtr>(client + 0xD3FC5C);

                int flag = memory.Read<int>(localPlayer + 0x104);

                if (GetAsyncKeyState(32))
                {
                    if (flag == 256 || flag == 262)
                    {
                        memory.Write(client + 0x51FE22C, 4);
                    }
                    else
                    {
                        memory.Write(client + 0x51FE22C, 5);
                    }
                }

                Thread.Sleep(1);
            }
 
Забаненный
Статус
Оффлайн
Регистрация
8 Авг 2020
Сообщения
23
Реакции[?]
2
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А нахуй оно надо?
 
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
26 Июл 2017
Сообщения
5
Реакции[?]
0
Поинты[?]
0
Можно ли написать бхоп на шарпе с нуля без всяких библиотек? Было бы интересно посмотреть
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
Можно ли написать бхоп на шарпе с нуля без всяких библиотек? Было бы интересно посмотреть
Можно, если не хочешь использовать вообще никакие сторонние библиотеки, что бы был один exe в папке. То можно использовать только kernel32.dll, которая лежит в самой винде. Тогда все ее функции можешь брать из импорта. Получится один exe с библиотекой, которая будет находиться в корне винды, а не рядом с твоим exe.
 
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,825
Реакции[?]
1,852
Поинты[?]
24K
Можно ли написать бхоп на шарпе с нуля без всяких библиотек? Было бы интересно посмотреть
Enigma VirtualBox в помощь, и не нужно ничего придумывать. Программа будет открываться чуть дольше, но вы этого не заметите
 
Участник
Статус
Оффлайн
Регистрация
27 Фев 2019
Сообщения
1,125
Реакции[?]
395
Поинты[?]
50K
С флагами можно было провернуть отдельную функу, но и так сойдёт) Годно)
 
Начинающий
Статус
Оффлайн
Регистрация
26 Июл 2017
Сообщения
5
Реакции[?]
0
Поинты[?]
0
Можно, если не хочешь использовать вообще никакие сторонние библиотеки, что бы был один exe в папке. То можно использовать только kernel32.dll, которая лежит в самой винде. Тогда все ее функции можешь брать из импорта. Получится один exe с библиотекой, которая будет находиться в корне винды, а не рядом с твоим exe.
А можно ли самому написать эти функции и поместить их просто в свой проект?
 
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
А можно ли самому написать эти функции и поместить их просто в свой проект?
Такие же не написать, а может и написать, но с использованием драйвера. Ты можешь только обертку для этих функций написать в своем проекте, это тоже самое, что использовать библиотеку, только весь нужный код из либы можешь прям в свой exe поместить
 
Забаненный
Статус
Оффлайн
Регистрация
30 Июн 2019
Сообщения
81
Реакции[?]
17
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сделай гайд по созданию аима и будет топ
 
вышел покурить
Пользователь
Статус
Оффлайн
Регистрация
17 Май 2018
Сообщения
387
Реакции[?]
100
Поинты[?]
0
А можно ли самому написать эти функции и поместить их просто в свой проект?
Здравствуйте. Если вы не недавно знакомы с C#, то c помощью IlRepack и старенкого ILMerge склеить exe с любой шарповской длл-кой(только IlMerge не дружит с библиотеками, имеющие ресурсы).
 
Пользователь
Статус
Оффлайн
Регистрация
1 Апр 2020
Сообщения
91
Реакции[?]
105
Поинты[?]
0
что это нам даст? просто вернет 256 либо 262 флаг?
Ну ты же сам спросил, в прошлом ответе ЧТО НАПРИМЕР? Когда человек написал, что можно сделать отдельную функцию, вот я написал отдельную функцию, это дает true или false в зависимости от того, стоим мы на земле или в присяде(Если я правильно помню). Надеюсь, что я ответил на твой вопрос
 
Новичок
Статус
Оффлайн
Регистрация
7 Май 2020
Сообщения
2
Реакции[?]
0
Поинты[?]
0
У меня есть вопросы он в vs code делается. 2 Можешь помочь в vs code у меня код не запускается я только начинаю покорять знания програмирования). ( тип у меня чёто не находит, не открыта папка и т.д.
 
Начинающий
Статус
Оффлайн
Регистрация
18 Янв 2019
Сообщения
50
Реакции[?]
7
Поинты[?]
0
Компилятор ошибок не выдает, сигнатуры сменил на новые, но оно не прыгает...
 
Сверху Снизу