Гайд Делаем свои читы с нуля. Урок #1. Учимся читать память.

Статус
В этой теме нельзя размещать новые ответы.
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,992
Реакции[?]
1,274
Поинты[?]
4K
Категорически приветствую! Пока я сидел в РО, скажем так в нокауте, я решил заняться полезным делом и в своей голове составил несколько уроков по основам написания собственных читов на языке работях - C++. В этом гайде мы с вами научимся читать память и получим нужные нам значение выведя их на экран.
Первым шагом создадим консольный проект.

Затем вам нужно будет скачать отсюда файл:
Пожалуйста, авторизуйтесь для просмотра ссылки.
и добавить его в ваш проект вот таким образом:
C++:
#include "Memory.h"
Данная библиотека содержит в себе функции на базе WinApi, которые могут помочь нам в работе с памятью.
Создадим переменную типа PMODULE, которая будет содержать базовый адрес client.dll и указатель на структуру memory с названием mem:
Код:
PModule clientAddr;
memory mem;
Теперь с помощью нашей библиотеки внедримся в процесс CS:GO, так как кс 32-битный процесс компилить чит будем в Release x86.
Создадим цикл, который сработает только когда мы удачно аттачнемся в процесс:
C++:
while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
Теперь зададим нашей переменной типа PMODULE базовый адрес client.dll, в которой будут содержаться наши оффсеты:
C++:
clientAddr = mem.GetModule("client.dll");
Создадим бесконечный цикл и наконец начнем работать с памятью:
C++:
    while (true) {
        system("cls");

        system("pause>nul");
    }
    return 0;
Приступим к работе с памятью, для этого нам нужны оффсеты. Их можно найти здесь:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Скачиваем сурсы с гита и открываем csgo.hpp, его нужно добавить в ваш проект, надеюсь объяснять как это делать не надо.
Если есть ошибке в самом csgo.hpp добавьте туда:
C++:
#include <iostream>
Возвращаемся к нашему читу и добавим над объявлением наших переменных использование пространства имен, делается это вот так:
C++:
using namespace hazedumper;
using namespace netvars;
using namespace signatures;
Используем мы это для удобства. Теперь создадим переменные типа DWORD, в нашем случае эти переменные будут содержать базовые адреса из игры, а обращаться к ним мы будем с помощью оффсетов. Для начала создадим переменную, которая будет содержать базовый адрес нашего локального игрока, делается это вот так:
C++:
DWORD LocalPlayer = mem.Read<DWORD>(clientAddr.dwBase + dwLocalPlayer);
Теперь наша переменная содержит в себе базовый адрес игрока, который мы получили из базового адреса переменной clientAddr.
Создадим еще несколько переменных и прочитаем память внутри класса LocalPlayer и затем выведем их на экран:
C++:
DWORD LocalTeam = mem.Read<DWORD>(LocalPlayer + m_iTeamNum);
DWORD LocalHealth = mem.Read<DWORD>(LocalPlayer + m_iHealth);
Выведем полученные значения на экран:
C++:
printf("LocalBase: 0x%X\n", LocalPlayer);
printf("Your Team: %d\n", LocalTeam);
printf("Your HP: %d\n", LocalHealth);
Дальше я для себя добавил немного вывода, чисто для красоты и получилось это.
C++:
#include <iostream>
#include "Memory.h"
#include "offsets.hpp"
using namespace hazedumper;
using namespace netvars;
using namespace signatures;
PModule clientAddr;
memory mem;
int main()
{
    while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
    clientAddr = mem.GetModule("client.dll");
    std::cout << "Initialized";
    while (true) {
        system("cls");
        DWORD LocalPlayer = mem.Read<DWORD>(clientAddr.dwBase + dwLocalPlayer);
        DWORD LocalTeam = mem.Read<DWORD>(LocalPlayer + m_iTeamNum);
        DWORD LocalHealth = mem.Read<DWORD>(LocalPlayer + m_iHealth);
        printf("LocalBase: 0x%X\n", LocalPlayer);
        printf("Your Team: %d\n", LocalTeam);
        printf("Your HP: %d\n", LocalHealth);
        system("pause>nul");
    }
    return 0;
}
Надеюсь это помогло вам разобраться в основах. В следующем уроке мы с вами разберем редактирование памяти и написание соответственного функционала для нашего чита.
Работает ли это?
1622629477607.png
1622629496195.png
Как видите все работает, первое значение это базовый адрес локального игрока, второй наша команда, команда КТ-шников - это номер 3, а также количество нашего здоровья. Всем удачи, задавайте свои вопросы в этой теме, постараюсь ответить.
 

Вложения

Начинающий
Статус
Оффлайн
Регистрация
26 Фев 2018
Сообщения
43
Реакции[?]
1
Поинты[?]
0
есть же стандартные winapi: ReadProcessMemory, GetModuleHandle, OpenProcess. Зачем использовать их из dll?
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,992
Реакции[?]
1,274
Поинты[?]
4K
есть же стандартные winapi: ReadProcessMemory, GetModuleHandle, OpenProcess. Зачем использовать их из dll?
Зачем учить винапи если можно взять готовое? Функционал этой библиотеки в дальнейшем может нам пригодится.
 
Забаненный
Участник
Статус
Оффлайн
Регистрация
23 Сен 2019
Сообщения
1,021
Реакции[?]
190
Поинты[?]
0
Это немного не то, что люди хотят обычно видеть, но всё таки полезная информация!
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,992
Реакции[?]
1,274
Поинты[?]
4K
действительно
Что "действительно"? Не понимаю твоей обидчивости на ровном месте, если ты не смотрел функционал библиотеки рекомендую это сделать, поиск по паттерну, поиск массива паттерна, запись, чтение, получение модуля, аттач, закрытие процесса, выход из процесса, сравнение данных, получение pid по имени процесса.
Полгода играю с самописной версией на базе этой библиотеки, инвентарь на 1к рублей, бана нет.
 
добрые люди
Пользователь
Статус
Оффлайн
Регистрация
2 Мар 2019
Сообщения
379
Реакции[?]
64
Поинты[?]
0
Категорически приветствую! Пока я сидел в РО, скажем так в нокауте, я решил заняться полезным делом и в своей голове составил несколько уроков по основам написания собственных читов на языке работях - C++. В этом гайде мы с вами научимся читать память и получим нужные нам значение выведя их на экран.
Первым шагом создадим консольный проект.

Затем вам нужно будет скачать отсюда файл:
Пожалуйста, авторизуйтесь для просмотра ссылки.
и добавить его в ваш проект вот таким образом:
C++:
#include "Memory.h"
Данная библиотека содержит в себе функции на базе WinApi, которые могут помочь нам в работе с памятью.
Создадим переменную типа PMODULE, которая будет содержать базовый адрес client.dll и указатель на структуру memory с названием mem:
Код:
PModule clientAddr;
memory mem;
Теперь с помощью нашей библиотеки внедримся в процесс CS:GO, так как кс 32-битный процесс компилить чит будем в Release x86.
Создадим цикл, который сработает только когда мы удачно аттачнемся в процесс:
C++:
while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
Теперь зададим нашей переменной типа PMODULE базовый адрес client.dll, в которой будут содержаться наши оффсеты:
C++:
clientAddr = mem.GetModule("client.dll");
Создадим бесконечный цикл и наконец начнем работать с памятью:
C++:
    while (true) {
        system("cls");

        system("pause>nul");
    }
    return 0;
Приступим к работе с памятью, для этого нам нужны оффсеты. Их можно найти здесь:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Скачиваем сурсы с гита и открываем csgo.hpp, его нужно добавить в ваш проект, надеюсь объяснять как это делать не надо.
Если есть ошибке в самом csgo.hpp добавьте туда:
C++:
#include <iostream>
Возвращаемся к нашему читу и добавим над объявлением наших переменных использование пространства имен, делается это вот так:
C++:
using namespace hazedumper;
using namespace netvars;
using namespace signatures;
Используем мы это для удобства. Теперь создадим переменные типа DWORD, в нашем случае эти переменные будут содержать базовые адреса из игры, а обращаться к ним мы будем с помощью оффсетов. Для начала создадим переменную, которая будет содержать базовый адрес нашего локального игрока, делается это вот так:
C++:
DWORD LocalPlayer = mem.Read<DWORD>(clientAddr.dwBase + dwLocalPlayer);
Теперь наша переменная содержит в себе базовый адрес игрока, который мы получили из базового адреса переменной clientAddr.
Создадим еще несколько переменных и прочитаем память внутри класса LocalPlayer и затем выведем их на экран:
C++:
DWORD LocalTeam = mem.Read<DWORD>(LocalPlayer + m_iTeamNum);
DWORD LocalHealth = mem.Read<DWORD>(LocalPlayer + m_iHealth);
Выведем полученные значения на экран:
C++:
printf("LocalBase: 0x%X\n", LocalPlayer);
printf("Your Team: %d\n", LocalTeam);
printf("Your HP: %d\n", LocalHealth);
Дальше я для себя добавил немного вывода, чисто для красоты и получилось это.
C++:
#include <iostream>
#include "Memory.h"
#include "offsets.hpp"
using namespace hazedumper;
using namespace netvars;
using namespace signatures;
PModule clientAddr;
memory mem;
int main()
{
    while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
    clientAddr = mem.GetModule("client.dll");
    std::cout << "Initialized";
    while (true) {
        system("cls");
        DWORD LocalPlayer = mem.Read<DWORD>(clientAddr.dwBase + dwLocalPlayer);
        DWORD LocalTeam = mem.Read<DWORD>(LocalPlayer + m_iTeamNum);
        DWORD LocalHealth = mem.Read<DWORD>(LocalPlayer + m_iHealth);
        printf("LocalBase: 0x%X\n", LocalPlayer);
        printf("Your Team: %d\n", LocalTeam);
        printf("Your HP: %d\n", LocalHealth);
        system("pause>nul");
    }
    return 0;
}
Надеюсь это помогло вам разобраться в основах. В следующем уроке мы с вами разберем редактирование памяти и написание соответственного функционала для нашего чита.
Работает ли это?
Посмотреть вложение 152162
Посмотреть вложение 152163
Как видите все работает, первое значение это базовый адрес локального игрока, второй наша команда, команда КТ-шников - это номер 3, а также количество нашего здоровья. Всем удачи, задавайте свои вопросы в этой теме, постараюсь ответить.
чел спасибо ебать, я пока только новичёк в с++ и доп. материал к моему курсу самое то, жду продолжения :BlessRNG: :BlessRNG: :BlessRNG:
 
money++
Разработчик
Статус
Оффлайн
Регистрация
14 Июн 2018
Сообщения
638
Реакции[?]
339
Поинты[?]
22K
> ГАЙД - Делаем СВОИ читы с НУЛЯ

> Надо скачать файлик, в котором по сути за вас написано все что надо, чтобы читать и перезаписывать память процесса
> Ну и оффсеты давайте тоже чужие возьмем, СВОИ читы же пишем
> Объяснять про то, как устроена память, что такое оффсеты, адреса и т.д. я не буду, с НУЛЯ ведь
 
..................................................
Участник
Статус
Онлайн
Регистрация
13 Авг 2020
Сообщения
990
Реакции[?]
249
Поинты[?]
25K
Гайд легче;
Скачать легендвар,
Изменить legendware на своё,
собрать.
Всё, вы кодер круче эзотерика


А если по теме, то реально полезно
 
Последнее редактирование:
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,992
Реакции[?]
1,274
Поинты[?]
4K
> ГАЙД - Делаем СВОИ читы с НУЛЯ

> Надо скачать файлик, в котором по сути за вас написано все что надо, чтобы читать и перезаписывать память процесса
> Ну и оффсеты давайте тоже чужие возьмем, СВОИ читы же пишем
> Объяснять про то, как устроена память, что такое оффсеты, адреса и т.д. я не буду, с НУЛЯ ведь
Хорошо, по твоей логике проще скачать легендвар нахуй и не париться, ведь использовать библиотеку для редактирования памяти это пиздец зашквар, да?
Ну да, давайте пойдем дампить игру и искать адреса в IDA, хотя все уже давным давно лежит под рукой.
Что тебе нужно конкретно объяснить? Сказан был максимум из того, что тебе понадобиться в этом уроке, x86 разрядность, обращение к памяти процесса с помощью оффсета, тебе нужно больше информации, чтобы прочитать и вывести значение или что?
Не понимаю вашего клоунского мнения, ведь по логике некоторых проще сразу не изучая ничего перескочить к кернел кодингу под какой нибудь Vanguard, а уж только потом изучить необходимый минимум. В этом гайде была сказана вся полезная информация для начинающего человека, с помощью этого "необходимого минимума" обычный юзер сможет написать свой простенькой Glow ESP, благодаря минимуму полученных в этом уроке знаний. Это первый урок, здесь не должно быть ничего сложного, если я хочу дальше использовать готовую библиотеку, да бы мне было проще я сделаю это. А уж те люди, которым действительно хотелось понять работу читов и они хотя бы читали гайд все будет понятно, а не тем бездарям, которые не зная даже что такое указатель на структуру ставят реакцию клоуна.
 
Пользователь
Статус
Оффлайн
Регистрация
10 Ноя 2019
Сообщения
839
Реакции[?]
135
Поинты[?]
0
Гайд не очень, использование memory не делает с нуля весь процесс, лучше бы просто разъясненил обычное использование winapi без доп библиотек, так же легче будет, а потом писать уже, да и темы такие уже есть и на форуме и в инете
 
Пользователь
Статус
Оффлайн
Регистрация
24 Окт 2019
Сообщения
81
Реакции[?]
82
Поинты[?]
0
Хорошо, по твоей логике проще скачать легендвар нахуй и не париться, ведь использовать библиотеку для редактирования памяти это пиздец зашквар, да?
Ну да, давайте пойдем дампить игру и искать адреса в IDA, хотя все уже давным давно лежит под рукой.
Что тебе нужно конкретно объяснить? Сказан был максимум из того, что тебе понадобиться в этом уроке, x86 разрядность, обращение к памяти процесса с помощью оффсета, тебе нужно больше информации, чтобы прочитать и вывести значение или что?
Не понимаю вашего клоунского мнения, ведь по логике некоторых проще сразу не изучая ничего перескочить к кернел кодингу под какой нибудь Vanguard, а уж только потом изучить необходимый минимум. В этом гайде была сказана вся полезная информация для начинающего человека, с помощью этого "необходимого минимума" обычный юзер сможет написать свой простенькой Glow ESP, благодаря минимуму полученных в этом уроке знаний. Это первый урок, здесь не должно быть ничего сложного, если я хочу дальше использовать готовую библиотеку, да бы мне было проще я сделаю это. А уж те люди, которым действительно хотелось понять работу читов и они хотя бы читали гайд все будет понятно, а не тем бездарям, которые не зная даже что такое указатель на структуру ставят реакцию клоуна.
Гайд не бесполезен, тут ты прав, ведь есть люди которым даже эти вещи незнакомы, НО! Это не создание чита с чистого листа, с **нуля**, ведь ты испольуешь уже готовый ряд инструментов для написания БАЗЫ. Хоть это и будет полезно начинающим, я ожидал чего-то большего.
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,992
Реакции[?]
1,274
Поинты[?]
4K
Гайд не бесполезен, тут ты прав, ведь есть люди которым даже эти вещи незнакомы, НО! Это не создание чита с чистого листа, с **нуля**, ведь ты испольуешь уже готовый ряд инструментов для написания БАЗЫ. Хоть это и будет полезно начинающим, я ожидал чего-то большего.
Я тебя услышал, вот тебе что-то поинтереснее https://yougame.biz/threads/206773/
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,418
Реакции[?]
657
Поинты[?]
16K
Я возможно наглею, но можно сделать что-то не для ЕБУЧЕЙ БЛЯТЬ КС НАХУЙ ПИЗДЕЦ
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,992
Реакции[?]
1,274
Поинты[?]
4K
money++
Разработчик
Статус
Оффлайн
Регистрация
14 Июн 2018
Сообщения
638
Реакции[?]
339
Поинты[?]
22K
Хорошо, по твоей логике проще скачать легендвар нахуй и не париться, ведь использовать библиотеку для редактирования памяти это пиздец зашквар, да?
Ну да, давайте пойдем дампить игру и искать адреса в IDA, хотя все уже давным давно лежит под рукой.
Что тебе нужно конкретно объяснить? Сказан был максимум из того, что тебе понадобиться в этом уроке, x86 разрядность, обращение к памяти процесса с помощью оффсета, тебе нужно больше информации, чтобы прочитать и вывести значение или что?
Не понимаю вашего клоунского мнения, ведь по логике некоторых проще сразу не изучая ничего перескочить к кернел кодингу под какой нибудь Vanguard, а уж только потом изучить необходимый минимум. В этом гайде была сказана вся полезная информация для начинающего человека, с помощью этого "необходимого минимума" обычный юзер сможет написать свой простенькой Glow ESP, благодаря минимуму полученных в этом уроке знаний. Это первый урок, здесь не должно быть ничего сложного, если я хочу дальше использовать готовую библиотеку, да бы мне было проще я сделаю это. А уж те люди, которым действительно хотелось понять работу читов и они хотя бы читали гайд все будет понятно, а не тем бездарям, которые не зная даже что такое указатель на структуру ставят реакцию клоуна.
Я только хочу сказать что "с нуля" значит с нуля. Ну или надо выкатывать список вещей, которые понадобятся. Но человек который в этом ни бум-бум не знает что такое оффсет например. Надо в таком случае или вставлять ссылки на хорошие темы, либо не говорить "я научу вас делать читы с нуля". В этом гайде ты показал как читать память, а не как создавать читы с нуля.

То что ты сейчас сделал можно представить как если бы кто-то начал учить людей трюкам на велосипедах с нуля и сказал "Вот вам BMX, вот так на нем можно подпрыгнуть". Но целевая аудитория-то не знает как педали крутить...
 
Забаненный
Статус
Оффлайн
Регистрация
3 Июн 2021
Сообщения
33
Реакции[?]
4
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет а каким оффсетом я могу получить активное оружие которое я держу?
 
Забаненный
Статус
Оффлайн
Регистрация
3 Июн 2021
Сообщения
33
Реакции[?]
4
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
4 Апр 2021
Сообщения
234
Реакции[?]
132
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Окей, постарался, молодец, но все гайды по программированию нужно начинать абсолютно по-другому.
В первом гайде желательно рассказать что за язык будет использоваться, в чем его плюсы,что такое память, откуда оффсеты, что такое оффсеты, как в целом работает память.
По другому этот туториал можно назвать "СДЕЛАЙТЕ ТАК, ТАК, ВОТ ТАК, СКАЧАЙТЕ ВОТ ЭТО, НУ И ВСЕ"

Нужно вспомнить как обучался ты этому и примерно представить как бы тебе было легче усвоить эту информацию.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу