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

Статус
В этой теме нельзя размещать новые ответы.
bluedream.ltd
bluedream.ltd
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
3,063
Реакции
1,288
Категорически приветствую! Пока я сидел в РО, скажем так в нокауте, я решил заняться полезным делом и в своей голове составил несколько уроков по основам написания собственных читов на языке работях - C++. В этом гайде мы с вами научимся читать память и получим нужные нам значение выведя их на экран.
Первым шагом создадим консольный проект.
image.png

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

        system("pause>nul");
    }
    return 0;
Приступим к работе с памятью, для этого нам нужны оффсеты. Их можно найти здесь: https://github.com/frk1/hazedumper/blob/master/csgo.hpp
Скачиваем сурсы с гита и открываем csgo.hpp, его нужно добавить в ваш проект, надеюсь объяснять как это делать не надо.
Если есть ошибке в самом csgo.hpp добавьте туда:
C++:
Expand Collapse Copy
#include <iostream>
Возвращаемся к нашему читу и добавим над объявлением наших переменных использование пространства имен, делается это вот так:
C++:
Expand Collapse Copy
using namespace hazedumper;
using namespace netvars;
using namespace signatures;
Используем мы это для удобства. Теперь создадим переменные типа DWORD, в нашем случае эти переменные будут содержать базовые адреса из игры, а обращаться к ним мы будем с помощью оффсетов. Для начала создадим переменную, которая будет содержать базовый адрес нашего локального игрока, делается это вот так:
C++:
Expand Collapse Copy
DWORD LocalPlayer = mem.Read<DWORD>(clientAddr.dwBase + dwLocalPlayer);
Теперь наша переменная содержит в себе базовый адрес игрока, который мы получили из базового адреса переменной clientAddr.
Создадим еще несколько переменных и прочитаем память внутри класса LocalPlayer и затем выведем их на экран:
C++:
Expand Collapse Copy
DWORD LocalTeam = mem.Read<DWORD>(LocalPlayer + m_iTeamNum);
DWORD LocalHealth = mem.Read<DWORD>(LocalPlayer + m_iHealth);
Выведем полученные значения на экран:
C++:
Expand Collapse Copy
printf("LocalBase: 0x%X\n", LocalPlayer);
printf("Your Team: %d\n", LocalTeam);
printf("Your HP: %d\n", LocalHealth);
Дальше я для себя добавил немного вывода, чисто для красоты и получилось это.
C++:
Expand Collapse Copy
#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, а также количество нашего здоровья. Всем удачи, задавайте свои вопросы в этой теме, постараюсь ответить.
 

Вложения

  • 1622629498405.png
    1622629498405.png
    2.9 MB · Просмотры: 296
есть же стандартные winapi: ReadProcessMemory, GetModuleHandle, OpenProcess. Зачем использовать их из dll?
 
есть же стандартные winapi: ReadProcessMemory, GetModuleHandle, OpenProcess. Зачем использовать их из dll?
Зачем учить винапи если можно взять готовое? Функционал этой библиотеки в дальнейшем может нам пригодится.
 
Это немного не то, что люди хотят обычно видеть, но всё таки полезная информация!
 
действительно
Что "действительно"? Не понимаю твоей обидчивости на ровном месте, если ты не смотрел функционал библиотеки рекомендую это сделать, поиск по паттерну, поиск массива паттерна, запись, чтение, получение модуля, аттач, закрытие процесса, выход из процесса, сравнение данных, получение pid по имени процесса.
Полгода играю с самописной версией на базе этой библиотеки, инвентарь на 1к рублей, бана нет.
 
Категорически приветствую! Пока я сидел в РО, скажем так в нокауте, я решил заняться полезным делом и в своей голове составил несколько уроков по основам написания собственных читов на языке работях - C++. В этом гайде мы с вами научимся читать память и получим нужные нам значение выведя их на экран.
Первым шагом создадим консольный проект.
image.png

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

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

Скачиваем сурсы с гита и открываем csgo.hpp, его нужно добавить в ваш проект, надеюсь объяснять как это делать не надо.
Если есть ошибке в самом csgo.hpp добавьте туда:
C++:
Expand Collapse Copy
#include <iostream>
Возвращаемся к нашему читу и добавим над объявлением наших переменных использование пространства имен, делается это вот так:
C++:
Expand Collapse Copy
using namespace hazedumper;
using namespace netvars;
using namespace signatures;
Используем мы это для удобства. Теперь создадим переменные типа DWORD, в нашем случае эти переменные будут содержать базовые адреса из игры, а обращаться к ним мы будем с помощью оффсетов. Для начала создадим переменную, которая будет содержать базовый адрес нашего локального игрока, делается это вот так:
C++:
Expand Collapse Copy
DWORD LocalPlayer = mem.Read<DWORD>(clientAddr.dwBase + dwLocalPlayer);
Теперь наша переменная содержит в себе базовый адрес игрока, который мы получили из базового адреса переменной clientAddr.
Создадим еще несколько переменных и прочитаем память внутри класса LocalPlayer и затем выведем их на экран:
C++:
Expand Collapse Copy
DWORD LocalTeam = mem.Read<DWORD>(LocalPlayer + m_iTeamNum);
DWORD LocalHealth = mem.Read<DWORD>(LocalPlayer + m_iHealth);
Выведем полученные значения на экран:
C++:
Expand Collapse Copy
printf("LocalBase: 0x%X\n", LocalPlayer);
printf("Your Team: %d\n", LocalTeam);
printf("Your HP: %d\n", LocalHealth);
Дальше я для себя добавил немного вывода, чисто для красоты и получилось это.
C++:
Expand Collapse Copy
#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:
 
> ГАЙД - Делаем СВОИ читы с НУЛЯ

> Надо скачать файлик, в котором по сути за вас написано все что надо, чтобы читать и перезаписывать память процесса
> Ну и оффсеты давайте тоже чужие возьмем, СВОИ читы же пишем
> Объяснять про то, как устроена память, что такое оффсеты, адреса и т.д. я не буду, с НУЛЯ ведь
 
Гайд легче;
Скачать легендвар,
Изменить legendware на своё,
собрать.
Всё, вы кодер круче эзотерика


А если по теме, то реально полезно
 
Последнее редактирование:
> ГАЙД - Делаем СВОИ читы с НУЛЯ

> Надо скачать файлик, в котором по сути за вас написано все что надо, чтобы читать и перезаписывать память процесса
> Ну и оффсеты давайте тоже чужие возьмем, СВОИ читы же пишем
> Объяснять про то, как устроена память, что такое оффсеты, адреса и т.д. я не буду, с НУЛЯ ведь
Хорошо, по твоей логике проще скачать легендвар нахуй и не париться, ведь использовать библиотеку для редактирования памяти это пиздец зашквар, да?
Ну да, давайте пойдем дампить игру и искать адреса в IDA, хотя все уже давным давно лежит под рукой.
Что тебе нужно конкретно объяснить? Сказан был максимум из того, что тебе понадобиться в этом уроке, x86 разрядность, обращение к памяти процесса с помощью оффсета, тебе нужно больше информации, чтобы прочитать и вывести значение или что?
Не понимаю вашего клоунского мнения, ведь по логике некоторых проще сразу не изучая ничего перескочить к кернел кодингу под какой нибудь Vanguard, а уж только потом изучить необходимый минимум. В этом гайде была сказана вся полезная информация для начинающего человека, с помощью этого "необходимого минимума" обычный юзер сможет написать свой простенькой Glow ESP, благодаря минимуму полученных в этом уроке знаний. Это первый урок, здесь не должно быть ничего сложного, если я хочу дальше использовать готовую библиотеку, да бы мне было проще я сделаю это. А уж те люди, которым действительно хотелось понять работу читов и они хотя бы читали гайд все будет понятно, а не тем бездарям, которые не зная даже что такое указатель на структуру ставят реакцию клоуна.
 
Гайд не очень, использование memory не делает с нуля весь процесс, лучше бы просто разъясненил обычное использование winapi без доп библиотек, так же легче будет, а потом писать уже, да и темы такие уже есть и на форуме и в инете
 
Хорошо, по твоей логике проще скачать легендвар нахуй и не париться, ведь использовать библиотеку для редактирования памяти это пиздец зашквар, да?
Ну да, давайте пойдем дампить игру и искать адреса в IDA, хотя все уже давным давно лежит под рукой.
Что тебе нужно конкретно объяснить? Сказан был максимум из того, что тебе понадобиться в этом уроке, x86 разрядность, обращение к памяти процесса с помощью оффсета, тебе нужно больше информации, чтобы прочитать и вывести значение или что?
Не понимаю вашего клоунского мнения, ведь по логике некоторых проще сразу не изучая ничего перескочить к кернел кодингу под какой нибудь Vanguard, а уж только потом изучить необходимый минимум. В этом гайде была сказана вся полезная информация для начинающего человека, с помощью этого "необходимого минимума" обычный юзер сможет написать свой простенькой Glow ESP, благодаря минимуму полученных в этом уроке знаний. Это первый урок, здесь не должно быть ничего сложного, если я хочу дальше использовать готовую библиотеку, да бы мне было проще я сделаю это. А уж те люди, которым действительно хотелось понять работу читов и они хотя бы читали гайд все будет понятно, а не тем бездарям, которые не зная даже что такое указатель на структуру ставят реакцию клоуна.
Гайд не бесполезен, тут ты прав, ведь есть люди которым даже эти вещи незнакомы, НО! Это не создание чита с чистого листа, с **нуля**, ведь ты испольуешь уже готовый ряд инструментов для написания БАЗЫ. Хоть это и будет полезно начинающим, я ожидал чего-то большего.
 
Гайд не бесполезен, тут ты прав, ведь есть люди которым даже эти вещи незнакомы, НО! Это не создание чита с чистого листа, с **нуля**, ведь ты испольуешь уже готовый ряд инструментов для написания БАЗЫ. Хоть это и будет полезно начинающим, я ожидал чего-то большего.
Я тебя услышал, вот тебе что-то поинтереснее https://yougame.biz/threads/206773/
 
Я возможно наглею, но можно сделать что-то не для ЕБУЧЕЙ БЛЯТЬ КС НАХУЙ ПИЗДЕЦ
 
Хорошо, по твоей логике проще скачать легендвар нахуй и не париться, ведь использовать библиотеку для редактирования памяти это пиздец зашквар, да?
Ну да, давайте пойдем дампить игру и искать адреса в IDA, хотя все уже давным давно лежит под рукой.
Что тебе нужно конкретно объяснить? Сказан был максимум из того, что тебе понадобиться в этом уроке, x86 разрядность, обращение к памяти процесса с помощью оффсета, тебе нужно больше информации, чтобы прочитать и вывести значение или что?
Не понимаю вашего клоунского мнения, ведь по логике некоторых проще сразу не изучая ничего перескочить к кернел кодингу под какой нибудь Vanguard, а уж только потом изучить необходимый минимум. В этом гайде была сказана вся полезная информация для начинающего человека, с помощью этого "необходимого минимума" обычный юзер сможет написать свой простенькой Glow ESP, благодаря минимуму полученных в этом уроке знаний. Это первый урок, здесь не должно быть ничего сложного, если я хочу дальше использовать готовую библиотеку, да бы мне было проще я сделаю это. А уж те люди, которым действительно хотелось понять работу читов и они хотя бы читали гайд все будет понятно, а не тем бездарям, которые не зная даже что такое указатель на структуру ставят реакцию клоуна.
Я только хочу сказать что "с нуля" значит с нуля. Ну или надо выкатывать список вещей, которые понадобятся. Но человек который в этом ни бум-бум не знает что такое оффсет например. Надо в таком случае или вставлять ссылки на хорошие темы, либо не говорить "я научу вас делать читы с нуля". В этом гайде ты показал как читать память, а не как создавать читы с нуля.

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

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