-
Автор темы
- #1
Всему YouGame привет! В этом гайде я решил показать, как писать читы на C#. Конечно же мы не будем с нуля писать методы для чтения и записи в память процесса, мы будем использовать библиотеку NativeManager, которая хранится в моем репозитории на GitHub. Ссылку на нее я оставлю ниже.
Ну давайте приступим)
Я не буду объяснять, как создавать проекты в VisualStudio и тому подобное, будем считать, что те, кто читают этот гайд, хотя бы немного разбираются в том, как создавать и работать с проектами в визуалке.
1)Первым делом нужно скачать библиотеку на GitHub:
2)Скомпилируйте эту библиотеку у себя на компьютере
3)Создайте свой проект с будущим читом
4)Через ссылки добавьте NativeManager в свой проект
5)Приступаем к разработке!!!!
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Чит мы будем создавать на примере игры CS:GO
1)После того как мы создали проект с читом, нам нужно добавить ссылки на пространства имен нашего NativeManager'a
2)В NativeManager есть 2 класса для работы с памятью
3)Пишем код для присоединения к процессу игры
ВАЖНО!!!
Игра должна быть запущена раньше чита, иначе мы словим исключение, что такого процесса не существует!
В первой строчке кода мы указали, что нам нужен процесс с именем "CSGO".
Во второй строчке кода мы указали, что нам нужно получить экземпляр MemoryManager для работы с виртуальной памятью процесса.
4)Следующим этапом нам нужно получить модули процесса, с которыми нам нужно работать, что бы прочитать нужные нам данные
5)Создаем бесконечный цикл для того, что бы наш чит постоянно читал данные из игры и мог так же в нее записывать.
6)Теперь нам нужно получить локального игрока из игры. Для этого в цикле нам нужно написать вот такой код
Число 0xD3FC5C может меняться с каждым обновлением игры. Следить за обновлением оффсетов можно на GitHub по этой ссылке:
7)Мы получили локального игрока, теперь нам нужно получить его флаг. С помощью него мы будем понимать в прыжке он или нет
8)Для начала сделаем проверку на нажатие кнопки пробела
Этот код нужно добавить в любой из классов
А этот код в наш цикл после получения флага
9)Теперь нам нужно сделать проверку, находится игрок в воздухе или на земле. Для этого нужно добавить этот код в условие проверки нажатия клавиши пробел
10)В этом условии нам нужно сделать запись в память игры, что бы делать прыжок, когда мы оказываемся на земле
На этом все. Мы написали такой маленький и легкий код, с помощью которого наш персонаж может прыгать без остановок.
Надеюсь, я объяснил все доходчиво и понятно. Если будут какие то вопросы, то с удовольствием отвечу вам на них в комментариях.
А вот подарок тем, кто не хочет копировать код по частям.
Ну давайте приступим)
Я не буду объяснять, как создавать проекты в VisualStudio и тому подобное, будем считать, что те, кто читают этот гайд, хотя бы немного разбираются в том, как создавать и работать с проектами в визуалке.
1)Первым делом нужно скачать библиотеку на GitHub:
Пожалуйста, авторизуйтесь для просмотра ссылки.
2)Скомпилируйте эту библиотеку у себя на компьютере
3)Создайте свой проект с будущим читом
4)Через ссылки добавьте NativeManager в свой проект
5)Приступаем к разработке!!!!
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Чит мы будем создавать на примере игры CS:GO
1)После того как мы создали проект с читом, нам нужно добавить ссылки на пространства имен нашего NativeManager'a
using System.MemoryInteraction;
2)В NativeManager есть 2 класса для работы с памятью
- SimpleMemoryManager
- MemoryManager(Производный класс от SimpleMemoryManager)
3)Пишем код для присоединения к процессу игры
ВАЖНО!!!
Игра должна быть запущена раньше чита, иначе мы словим исключение, что такого процесса не существует!
C#:
Process process = Process.GetProcessesByName("csgo")[0];
MemoryManager memory = process.GetMemoryManager();
Во второй строчке кода мы указали, что нам нужно получить экземпляр MemoryManager для работы с виртуальной памятью процесса.
4)Следующим этапом нам нужно получить модули процесса, с которыми нам нужно работать, что бы прочитать нужные нам данные
C#:
IntPtr client = process.GetModule("client.dll").BaseAddress;
C#:
while(true)
{
}
C#:
IntPtr localPlayer = memory.Read<IntPtr>(client + 0xD3FC5C);
Пожалуйста, авторизуйтесь для просмотра ссылки.
7)Мы получили локального игрока, теперь нам нужно получить его флаг. С помощью него мы будем понимать в прыжке он или нет
C#:
int flag = memory.Read<int>(localPlayer + 0x104);
Этот код нужно добавить в любой из классов
C#:
[DllImport("user32.dll")]
static extern bool GetAsyncKeyState(int vKey);
C#:
if (GetAsyncKeyState(32))
{
}
C#:
if(flag == 256 || flag == 262)
{
}
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);
}