-
Автор темы
- #1
P. S: Адаптированный перевод с guidedhacking.com
UPD:
В этой теме мы научимся делать простой external баннихоп для ксго
Что нужно:
Базовое понимание геймхакинга(как работает память, как игра располагается в памяти)
Базовое понимание C++
IDE: Visual Studio (2017-2019)
1. Создаём проект
Создаём проект с шаблоном "Консольное приложение"
2.Переходим в свойства проекта(правой кнопкой мышки по проекту -> свойства), если у вас Visual Studio 2017 версии, то заходим в: "Свойства конфигурации -> Общие" находим пункт набор символов, у вас по умолчанию должно стоять значение: "Использовать набор символов Юникода", меняем его на: "Использовать многобайтовую кодировку", нажимаем Применить. Если у вас Visual Studio версии 2019 -> Переходим в "Свойства конфигурации -> Дополнительно"
3. Удаляем ненужное(по желанию):
Удаляем папки: Файлы заголовков, Файлы ресурсов
Оставляем папку: Исходные файлы
Т.К. наш проект маленький, нет смысла создавать отдельные папки для заголовочных файлов и т.д.
4. Подключаем файлы к проекту, содержащие класс для работы с памятью
Т. к. Мы хлебушки, класс мы будем использовать уже заранее сделанный, скачать вы его можете внизу, в прикреплённых файлах
Скачиваем, распаковываем архив в любую папку(для удобства - в папку с вашим созданным проектом), в папке будут два файла - MemMan.cpp, MemMan.h
Файл MemMan.cpp мы должны напрямую поместить в наш проект(просто перетащите его в окно справа, в папку "Исходные файлы"), переходим в главный файл нашего проекта(он имеет название, которые вы дали вашему проекту, например: если вы назвали проект: "BHOP", то главный файл будет называться: "BHOP.cpp")
5.
Все эти библиотеки нужны нам для корректной работы с памятью игры
Важно! С любым обновлением ксго тот или иной оффсет может поменяться, поэтому лучше всегда тщательно проверять правильность оффсетов, иначе ничего попросту не будет работать, т.к мы не правильно обращаемся к памяти
Это всё, отпишите в теме, если я что-то сделал неправильно, или у вас есть какие-то проблемы
UPD:
Пожалуйста, авторизуйтесь для просмотра ссылки.
В этой теме мы научимся делать простой external баннихоп для ксго
Что нужно:
Базовое понимание геймхакинга(как работает память, как игра располагается в памяти)
Базовое понимание C++
IDE: Visual Studio (2017-2019)
1. Создаём проект
Создаём проект с шаблоном "Консольное приложение"
2.Переходим в свойства проекта(правой кнопкой мышки по проекту -> свойства), если у вас Visual Studio 2017 версии, то заходим в: "Свойства конфигурации -> Общие" находим пункт набор символов, у вас по умолчанию должно стоять значение: "Использовать набор символов Юникода", меняем его на: "Использовать многобайтовую кодировку", нажимаем Применить. Если у вас Visual Studio версии 2019 -> Переходим в "Свойства конфигурации -> Дополнительно"
3. Удаляем ненужное(по желанию):
Удаляем папки: Файлы заголовков, Файлы ресурсов
Оставляем папку: Исходные файлы
Т.К. наш проект маленький, нет смысла создавать отдельные папки для заголовочных файлов и т.д.
4. Подключаем файлы к проекту, содержащие класс для работы с памятью
Т. к. Мы хлебушки, класс мы будем использовать уже заранее сделанный, скачать вы его можете внизу, в прикреплённых файлах
Скачиваем, распаковываем архив в любую папку(для удобства - в папку с вашим созданным проектом), в папке будут два файла - MemMan.cpp, MemMan.h
Файл MemMan.cpp мы должны напрямую поместить в наш проект(просто перетащите его в окно справа, в папку "Исходные файлы"), переходим в главный файл нашего проекта(он имеет название, которые вы дали вашему проекту, например: если вы назвали проект: "BHOP", то главный файл будет называться: "BHOP.cpp")
5.
C++:
#include <iostream>
#include <Windows.h>
#include <ВАШ ПУТЬ ДО ФАЙЛА MemMan.h>
C++:
MemMan memory;
C++:
struct gameOffsets
{
DWORD oLocalPlayer = 0xD2FB94;
DWORD fJump = 0x51ED760;
DWORD flags = 0x104;
}offsets;
struct values
{
DWORD localPlayer;
DWORD gameModule;
DWORD process;
BYTE flag;
}val;
C++:
int main()
{
val.process = memory.getProcess("csgo.exe"); //Находим процесс с названием csgo.exe
val.gameModule = memory.getModule(val.process, "client_panorama.dll"); //Находим модуль с названием client_panorama.dll
if(val.localPlayer == NULL) //Делаем проверку c циклом на то, есть ли у нас localPlayer, когда мы находимся в меню -> у нас нет localPlayer'а, следовательно, если не сделать цикл, то localPlayer один раз не найдётся, и дальше не будет искаться, даже если мы зайдём на карту
while(val.localPlayer == NULL)
val.localPlayer = memory.readMem<DWORD>(val.gameModule + offsets.oLocalPlayer); //Пытаемся найти localPlayer
while (true)
{
val.flag = memory.readMem<BYTE>(val.localPlayer + offsets.flags); //Находим флаги нашего локального игрока(Находиться на земле, в воздухе, в воде и т.д)
if (GetAsyncKeyState(VK_SPACE) && val.flag & (1 << 0)) //Делаем проверку на клавишу и на флаг(если нажат спейс, и наш локал плеер по флагу находится на земле)
memory.writeMem<DWORD>(val.gameModule + offsets.fJump, 6); //Заставляем локалплеера прыгать, если проверка в верху пройдена
Sleep(1);
}
return 0;
}
Вложения
-
1 KB Просмотры: 517
Последнее редактирование: