-
Автор темы
- #1
Категорически приветствую! Пока я сидел в РО, скажем так в нокауте, я решил заняться полезным делом и в своей голове составил несколько уроков по основам написания собственных читов на языке работях - C++. В этом гайде мы с вами научимся читать память и получим нужные нам значение выведя их на экран.
Первым шагом создадим консольный проект.
Затем вам нужно будет скачать отсюда файл:
Данная библиотека содержит в себе функции на базе WinApi, которые могут помочь нам в работе с памятью.
Создадим переменную типа PMODULE, которая будет содержать базовый адрес client.dll и указатель на структуру memory с названием mem:
Теперь с помощью нашей библиотеки внедримся в процесс CS:GO, так как кс 32-битный процесс компилить чит будем в Release x86.
Создадим цикл, который сработает только когда мы удачно аттачнемся в процесс:
Теперь зададим нашей переменной типа PMODULE базовый адрес client.dll, в которой будут содержаться наши оффсеты:
Создадим бесконечный цикл и наконец начнем работать с памятью:
Приступим к работе с памятью, для этого нам нужны оффсеты. Их можно найти здесь:
Скачиваем сурсы с гита и открываем csgo.hpp, его нужно добавить в ваш проект, надеюсь объяснять как это делать не надо.
Если есть ошибке в самом csgo.hpp добавьте туда:
Возвращаемся к нашему читу и добавим над объявлением наших переменных использование пространства имен, делается это вот так:
Используем мы это для удобства. Теперь создадим переменные типа DWORD, в нашем случае эти переменные будут содержать базовые адреса из игры, а обращаться к ним мы будем с помощью оффсетов. Для начала создадим переменную, которая будет содержать базовый адрес нашего локального игрока, делается это вот так:
Теперь наша переменная содержит в себе базовый адрес игрока, который мы получили из базового адреса переменной clientAddr.
Создадим еще несколько переменных и прочитаем память внутри класса LocalPlayer и затем выведем их на экран:
Выведем полученные значения на экран:
Дальше я для себя добавил немного вывода, чисто для красоты и получилось это.
Надеюсь это помогло вам разобраться в основах. В следующем уроке мы с вами разберем редактирование памяти и написание соответственного функционала для нашего чита.
Работает ли это?
Как видите все работает, первое значение это базовый адрес локального игрока, второй наша команда, команда КТ-шников - это номер 3, а также количество нашего здоровья. Всем удачи, задавайте свои вопросы в этой теме, постараюсь ответить.
Первым шагом создадим консольный проект.
Затем вам нужно будет скачать отсюда файл:
Пожалуйста, авторизуйтесь для просмотра ссылки.
и добавить его в ваш проект вот таким образом:
C++:
#include "Memory.h"
Создадим переменную типа PMODULE, которая будет содержать базовый адрес client.dll и указатель на структуру memory с названием mem:
Код:
PModule clientAddr;
memory mem;
Создадим цикл, который сработает только когда мы удачно аттачнемся в процесс:
C++:
while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
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;
C++:
DWORD LocalPlayer = mem.Read<DWORD>(clientAddr.dwBase + dwLocalPlayer);
Создадим еще несколько переменных и прочитаем память внутри класса 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;
}
Работает ли это?
Как видите все работает, первое значение это базовый адрес локального игрока, второй наша команда, команда КТ-шников - это номер 3, а также количество нашего здоровья. Всем удачи, задавайте свои вопросы в этой теме, постараюсь ответить.
Вложения
-
2.9 MB Просмотры: 244