Всему Lolz.guru привет! В этом гайде я решил показать, как писать читы на C#. Конечно же мы не будем с нуля писать методы для чтения и записи в память процесса, мы будем использовать библиотеку NativeManager, которая хранится в моем репозитории на GitHub. Ссылку на нее я оставлю ниже. Ну давайте приступим) Я не буду объяснять, как создавать проекты в VisualStudio и тому подобное, будем считать, что те, кто читают этот гайд, хотя бы немного разбираются в том, как создавать и работать с проектами в визуалке. 1)Первым делом нужно скачать библиотеку на GitHub:NativeManager 2)Скомпилируйте эту библиотеку у себя на компьютере 3)Создайте свой проект с будущим читом 4)Через ссылки добавьте NativeManager в свой проект 5)Приступаем к разработке!!!! Чит мы будем создавать на примере игры CS:GO 1)После того как мы создали проект с читом, нам нужно добавить ссылки на пространства имен нашего NativeManager'a using System.MemoryInteraction; 2)В NativeManager есть 2 класса для работы с памятью SimpleMemoryManager MemoryManager(Производный класс от SimpleMemoryManager) Мы будем использовать класс MemoryManager, так как в нем реализованы методы, которые позволяют нам без дополнительных усилий прочитать данные из памяти процесса. 3)Пишем код для присоединения к процессу игры ВАЖНО!!! Игра должна быть запущена раньше чита, иначе мы словим исключение, что такого процесса не существует! В первой строчке кода мы указали, что нам нужен процесс с именем "CSGO". Во второй строчке кода мы указали, что нам нужно получить экземпляр MemoryManager для работы с виртуальной памятью процесса. 4)Следующим этапом нам нужно получить модули процесса, с которыми нам нужно работать, что бы прочитать нужные нам данные 5)Создаем бесконечный цикл для того, что бы наш чит постоянно читал данные из игры и мог так же в нее записывать. 6)Теперь нам нужно получить локального игрока из игры. Для этого в цикле нам нужно написать вот такой код Число 0xD3FC5C может меняться с каждым обновлением игры. Следить за обновлением оффсетов можно на GitHub по этой ссылке:hazedumper 7)Мы получили локального игрока, теперь нам нужно получить его флаг. С помощью него мы будем понимать в прыжке он или нет 8)Для начала сделаем проверку на нажатие кнопки пробела Этот код нужно добавить в любой из классов А этот код в наш цикл после получения флага 9)Теперь нам нужно сделать проверку, находится игрок в воздухе или на земле. Для этого нужно добавить этот код в условие проверки нажатия клавиши пробел 10)В этом условии нам нужно сделать запись в память игры, что бы делать прыжок, когда мы оказываемся на земле На этом все. Мы написали такой маленький и легкий код, с помощью которого наш персонаж может прыгать без остановок. Надеюсь, я объяснил все доходчиво и понятно. А вот подарок тем, кто не хочет копировать код по частям. 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); } P.s идея не моя