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

Статус
В этой теме нельзя размещать новые ответы.
Участник
Статус
Оффлайн
Регистрация
21 Сен 2019
Сообщения
594
Реакции[?]
250
Поинты[?]
23K
Гайд для новичков, которые вообще 0 в гейм хакинге, а то и в программировании - мусор.
Ты абсолютно ничего не рассказал о функциях WinApi, как читать память, записывать в память, находить ID процесса по имени, открывать процесс, и т.п. И это я не говорю ещё о том, что ты должен был рассказать, что такое адресс в памяти, как работает память, что такое бит, что такое байт, сколько занимает int, char, и другие типы данных байтов в памяти.
По факту весь твой гайд это код из 25 строчек в котором ты просто взаимодействуешь с готовыми функциями из твоего класса.
Так новички ничем не научаться. Посмотрев твой гайд, и попробовав действительно все с нуля написать - они ничего не смогут. Они не знают даже, как выглядят самые базовые функции WinApi, OpenProcess, ReadProcessMemory, и WriteProcessMemory. Не говоря уже о создании класса и создании в нем функций OP, RPM, WPM, и т.д. С таким гайдом ты бы мог сразу рассказать о функции VirtualProtect(Ex), все равно никто из нулёвых пастеров или не пастеров не поймет ничего.
Если кто-то лезет в гейм хакинг, то ему предстоит не простой и очень долгий путь, чтобы действительно уметь писать читы с нуля aka polak, esoterik, и т.д. На самом деле настоящих хороших кодеров в кс, которые не пастят можно пересчитать по пальцам.

UPD: Если кто-то хочет влиться в гейм-хакинг без пастинга(то есть быть действительно настоящим "хакером" в мире игр), то во первых вы должны хотя бы знать основы C++, иметь мозг, и очень много терпения, т.к предстоит изучить много чего углублённого(по типу, что такое память, как она работает, что такое адрес памяти, различия между шестнадцатеричной системой исчисления, десятеричной, и т.д). Если вы все это имеете, то могу посоветовать во первый переведённый гайд камазика, который вас затянет в это: https://yougame.biz/threads/191134/, а после идти по пути учебников ресурса GuidedHacking(не реклама), он на английском языке, но лично мне очень понравился, и благодаря ему я сам до сих-пор учусь геймхакингу, и у меня действительно получается писать простенькие экстернал читы самостоятельно.
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
4 Апр 2021
Сообщения
234
Реакции[?]
132
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Гайд для новичков, которые вообще 0 в гейм хакинге, а то и в программировании - мусор.
Ты абсолютно ничего не рассказал о функциях WinApi, как читать память, записывать в память, находить ID процесса по имени, открывать процесс, и т.п. И это я не говорю ещё о том, что ты должен был рассказать, что такое адресс в памяти, как работает память, что такое бит, что такое байт, сколько занимает int, char, и другие типы данных байтов в памяти.
По факту весь твой гайд это код из 25 строчек в котором ты просто взаимодействуешь с готовыми функциями из твоего класса.
Так новички ничем не научаться. Посмотрев твой гайд, и попробовав действительно все с нуля написать - они ничего не смогут. Они не знают даже, как выглядят самые базовые функции WinApi, OpenProcess, ReadProcessMemory, и WriteProcessMemory. Не говоря уже о создании класса и создании в нем функций OP, RPM, WPM, и т.д. С таким гайдом ты бы мог сразу рассказать о функции VirtualProtect(Ex), все равно никто из нулёвых пастеров или не пастеров не поймет ничего.
Если кто-то лезет в гейм хакинг, то ему предстоит не простой и очень долгий путь, чтобы действительно уметь писать читы с нуля aka polak, esoterik, и т.д. На самом деле настоящих хороших кодеров в кс, которые не пастят можно пересчитать по пальцам.

UPD: Если кто-то хочет влиться в гейм-хакинг без пастинга(то есть быть действительно настоящим "хакером" в мире игр), то во первых вы должны хотя бы знать основы C++, иметь мозг, и очень много терпения, т.к предстоит изучить много чего углублённого(по типу, что такое память, как она работает, что такое адрес памяти, различия между шестнадцатеричной системой исчисления, десятеричной, и т.д). Если вы все это имеете, то могу посоветовать во первый переведённый гайд камазика, который вас затянет в это: https://yougame.biz/threads/191134/, а после идти по пути учебников ресурса GuidedHacking(не реклама), он на английском языке, но лично мне очень понравился, и благодаря ему я сам до сих-пор учусь геймхакингу, и у меня действительно получается писать простенькие экстернал читы самостоятельно.
я бы добавил что желательно сверху изучить тригонометрию.
без тригонометрии любого кодера можно считать бесполезным(почти что) пастером.
также сверху можно выучить алгебру и геометрию за 8-9 класс.нет ничего невозможного.
 
Начинающий
Статус
Оффлайн
Регистрация
24 Окт 2017
Сообщения
52
Реакции[?]
6
Поинты[?]
0
давайте пойдем дампить игру и искать адреса в IDA
Вот это неплохо было бы сделать. На экстернале далеко не уедешь.
Ждем как найти/реверсить разные структуры, как сделать своё SDK.
Вот например вопрос у меня есть.
В слитом сдк есть класс, с чисто виртуальными функциями.
В иде я могу найти этот класс, но как мне понять, что за функции в этой виртуальной таблице, чтобы я мог к ним обращаться позже?
При условии, что плагин, который ассоциирует строки с функциями там ничего не выводит.

Зря низкоуровневую часть упускаешь. Программирование это только 45% это всего процесса геймхакинга.
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
4 Июн 2021
Сообщения
15
Реакции[?]
5
Поинты[?]
0
Довольно полезный гайд. Челик молодец заморочился
 
:-|
Пользователь
Статус
Оффлайн
Регистрация
13 Май 2021
Сообщения
120
Реакции[?]
38
Поинты[?]
2K
Категорически приветствую! Пока я сидел в РО, скажем так в нокауте, я решил заняться полезным делом и в своей голове составил несколько уроков по основам написания собственных читов на языке работях - 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, а также количество нашего здоровья. Всем удачи, задавайте свои вопросы в этой теме, постараюсь ответить.
Хм, а почему ты не хочешь заюзать просто ReadProcessMemory/WriteProcessMemory ?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу