Начинающий
- Статус
- Оффлайн
- Регистрация
- 27 Фев 2026
- Сообщения
- 11
- Реакции
- 3
• Писался лично мной полторы недели на плюсах без вайбкодинга и прочей хуйни
• Идеально подойдет для детального разбора джуниорам (позже расшифрую все, что в начинке)
• Для сборки требуется DirectX SDK, ImGui и nlohmann/json.
НАЧИНКА (или же почему мой код хорош):
-инициалка окна CreateWindowEx и DirectX ручная ---> прямая работа с WinAPI
-XOR-шифрование строк
-низкоуровневый доступ к памяти через вызовы ntdll
-дефолтные JSON-конфиги
-хорошая оптимизация через std::atomic
-разделено получение controller и pawn для предотвращения ошибок в чтении памяти
В чите фулл приоритет идет на легитное ESP и ничего больше нет. Глубокая оптимизация чамсов, скелета и snapline.
МИНУСЫ :
-сохранение на каждый клик по чекбоксу
-неправильно реализована логика прозрачности окна для оверлея (мне просто впадлу пиздец)
ПРИМЕЧАНИЕ :
Оффсеты подгружать надо очевидно самостоятельно, берите ток проверенные источники (дампер с югейма/гитхаба)
JSON-библиотека -
Dear ImGui -
ИНСТРУКЦИЯ ДЛЯ ЧАЙНИКОВ МАКСИМАЛЬНОГО УРОВНЯ, ПОШАГОВО КАК ЗАПУСКАТЬ ЧИТ :
--КОД--
• Идеально подойдет для детального разбора джуниорам (позже расшифрую все, что в начинке)
• Для сборки требуется DirectX SDK, ImGui и nlohmann/json.
НАЧИНКА (или же почему мой код хорош):
-инициалка окна CreateWindowEx и DirectX ручная ---> прямая работа с WinAPI
-XOR-шифрование строк
-низкоуровневый доступ к памяти через вызовы ntdll
-дефолтные JSON-конфиги
-хорошая оптимизация через std::atomic
-разделено получение controller и pawn для предотвращения ошибок в чтении памяти
В чите фулл приоритет идет на легитное ESP и ничего больше нет. Глубокая оптимизация чамсов, скелета и snapline.
МИНУСЫ :
-сохранение на каждый клик по чекбоксу
-неправильно реализована логика прозрачности окна для оверлея (мне просто впадлу пиздец)
ПРИМЕЧАНИЕ :
Оффсеты подгружать надо очевидно самостоятельно, берите ток проверенные источники (дампер с югейма/гитхаба)
JSON-библиотека -
Пожалуйста, авторизуйтесь для просмотра ссылки.
Dear ImGui -
Пожалуйста, авторизуйтесь для просмотра ссылки.
ИНСТРУКЦИЯ ДЛЯ ЧАЙНИКОВ МАКСИМАЛЬНОГО УРОВНЯ, ПОШАГОВО КАК ЗАПУСКАТЬ ЧИТ :
установи visual studio community через официальный инсталлер
при установке выбери галочку "разработка классических приложений на c++"
скачай библиотеку nlohmann json файл json.hpp с гитхаба (ссылки указал выше)
скачай файлы imgui из основного репозитория это все .cpp и .h файлы в корне (ссылки указал выше)
скачай из папки backends файлы imgui_impl_dx11 и imgui_impl_win32
создай в студии пустой проект c++
создай файл main.cpp в проекте и вставь код
открой папку проекта в проводнике и закинь туда все файлы imgui и json.hpp
в самой студии нажми добавить существующий элемент и выбери все закинутые файлы
в коде замени все скобки в инклюдах imgui на кавычки чтобы было "imgui.h"
в верхней панели студии смени debug на release и x86 на x64
нажми правой кнопкой на проект и выбери свойства
в разделе c++ язык выбери стандарт c++17 или выше
в разделе компоновщик система выбери подсистему windows
в разделе компоновщик ввод добавь d3d11.lib и dwmapi.lib в дополнительные зависимости
нажми сочетание клавиш ctrl+shift+b для запуска
забирай готовый exe в папке x64/release внутри папки твоего проекта
при установке выбери галочку "разработка классических приложений на c++"
скачай библиотеку nlohmann json файл json.hpp с гитхаба (ссылки указал выше)
скачай файлы imgui из основного репозитория это все .cpp и .h файлы в корне (ссылки указал выше)
скачай из папки backends файлы imgui_impl_dx11 и imgui_impl_win32
создай в студии пустой проект c++
создай файл main.cpp в проекте и вставь код
открой папку проекта в проводнике и закинь туда все файлы imgui и json.hpp
в самой студии нажми добавить существующий элемент и выбери все закинутые файлы
в коде замени все скобки в инклюдах imgui на кавычки чтобы было "imgui.h"
в верхней панели студии смени debug на release и x86 на x64
нажми правой кнопкой на проект и выбери свойства
в разделе c++ язык выбери стандарт c++17 или выше
в разделе компоновщик система выбери подсистему windows
в разделе компоновщик ввод добавь d3d11.lib и dwmapi.lib в дополнительные зависимости
нажми сочетание клавиш ctrl+shift+b для запуска
забирай готовый exe в папке x64/release внутри папки твоего проекта
--КОД--
flex-project ESP by wannaflex:
#include <windows.h>
#include <d3d11.h>
#include <dwmapi.h>
#include <vector>
#include <string>
#include <thread>
#include <atomic>
#include <fstream>
#include <imgui.h>
#include <imgui_impl_dx11.h>
#include <imgui_impl_win32.h>
#include <nlohmann/json.hpp>
#pragma comment(lib, "d3d11.lib")
#pragma comment(lib, "dwmapi.lib")
#pragma comment(lib, "winmm.lib")
using json = nlohmann::json;
namespace Flex {
struct {
std::atomic<bool> active{ true };
bool menu_open = true;
bool esp_master = true;
bool esp_skeleton = true;
int box_type = 1;
bool draw_snaplines = false;
bool draw_distance = true;
float col_tiffany[4] = { 0.04f, 0.73f, 0.71f, 1.00f };
float col_box[4] = { 0.04f, 0.73f, 0.71f, 1.00f };
float col_skel[4] = { 1.00f, 1.00f, 1.00f, 1.00f };
} cfg;
ID3D11Device* device = nullptr;
ID3D11DeviceContext* context = nullptr;
IDXGISwapChain* swap_chain = nullptr;
ID3D11RenderTargetView* render_view = nullptr;
void save_config() {
json j;
j["esp"] = cfg.esp_master;
j["skel"] = cfg.esp_skeleton;
j["b_type"] = cfg.box_type;
j["snap"] = cfg.draw_snaplines;
j["dist"] = cfg.draw_distance;
for (int i = 0; i < 4; i++) {
j["c_box"][i] = cfg.col_box[i];
j["c_skel"][i] = cfg.col_skel[i];
}
std::ofstream("flex_cfg.json") << j.dump(4);
}
void load_config() {
std::ifstream f("flex_cfg.json");
if (!f.is_open()) return;
json j; f >> j;
cfg.esp_master = j.value("esp", true);
cfg.esp_skeleton = j.value("skel", true);
cfg.box_type = j.value("b_type", 1);
cfg.draw_snaplines = j.value("snap", false);
cfg.draw_distance = j.value("dist", true);
if (j.contains("c_box")) for (int i = 0; i < 4; i++) cfg.col_box[i] = j["c_box"][i];
if (j.contains("c_skel")) for (int i = 0; i < 4; i++) cfg.col_skel[i] = j["c_skel"][i];
}
void setup_style() {
ImGuiStyle& s = ImGui::GetStyle();
s.WindowRounding = 6.f;
s.ChildRounding = 4.f;
s.FrameRounding = 4.f;
s.WindowPadding = ImVec2(12, 12);
s.WindowTitleAlign = ImVec2(0.5f, 0.5f);
ImVec4* c = s.Colors;
ImVec4 tiffany = ImColor(10, 186, 181);
c[ImGuiCol_WindowBg] = ImVec4(0.08f, 0.08f, 0.08f, 0.98f);
c[ImGuiCol_Border] = tiffany;
c[ImGuiCol_TitleBgActive] = tiffany;
c[ImGuiCol_CheckMark] = tiffany;
c[ImGuiCol_SliderGrab] = tiffany;
c[ImGuiCol_SliderGrabActive] = tiffany;
c[ImGuiCol_Button] = ImVec4(0.12f, 0.12f, 0.12f, 1.0f);
c[ImGuiCol_ButtonHovered] = tiffany;
c[ImGuiCol_ButtonActive] = tiffany;
c[ImGuiCol_Header] = tiffany;
c[ImGuiCol_HeaderHovered] = tiffany;
c[ImGuiCol_Tab] = ImVec4(0.12f, 0.12f, 0.12f, 1.0f);
c[ImGuiCol_TabActive] = tiffany;
c[ImGuiCol_TabUnfocusedActive] = tiffany;
}
void draw_menu() {
if (GetAsyncKeyState(VK_INSERT) & 1) {
cfg.menu_open = !cfg.menu_open;
MessageBeep(MB_OK);
}
if (!cfg.menu_open) return;
ImGui::SetNextWindowSize({ 420, 340 }, ImGuiCond_Once);
if (ImGui::Begin("FLEX-PROJECT MARKET", nullptr, ImGuiWindowFlags_NoCollapse)) {
float w = ImGui::GetContentRegionAvail().x;
ImGui::SetCursorPosX((w - ImGui::CalcTextSize("FLEX-PROJECT").x) * 0.5f);
ImGui::TextColored(ImColor(10, 186, 181), "FLEX-PROJECT");
ImGui::Separator();
if (ImGui::BeginTabBar("##main_tabs")) {
if (ImGui::BeginTabItem("VISUALS")) {
ImGui::Checkbox("Master Switch", &cfg.esp_master);
ImGui::Combo("Box Style", &cfg.box_type, "Full Box\0Corner Box\0");
ImGui::Checkbox("Skeleton", &cfg.esp_skeleton);
ImGui::Checkbox("Snaplines", &cfg.draw_snaplines);
ImGui::Checkbox("Distance", &cfg.draw_distance);
ImGui::EndTabItem();
}
if (ImGui::BeginTabItem("COLORS")) {
ImGui::ColorEdit4("Box Color", cfg.col_box);
ImGui::ColorEdit4("Skeleton Color", cfg.col_skel);
if (ImGui::Button("Save Config", { 110, 26 })) save_config();
ImGui::EndTabItem();
}
ImGui::EndTabBar();
}
}
ImGui::End();
}
}
extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
if (ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam)) return true;
if (msg == WM_DESTROY) { PostQuitMessage(0); return 0; }
return DefWindowProc(hWnd, msg, wParam, lParam);
}
int main() {
Flex::load_config();
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0, 0, GetModuleHandle(0), 0, 0, 0, 0, L"FlexClass", 0 };
RegisterClassEx(&wc);
HWND hwnd = CreateWindowEx(WS_EX_TOPMOST | WS_EX_TRANSPARENT | WS_EX_LAYERED, wc.lpszClassName, L"Flex Project", WS_POPUP, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), 0, 0, wc.hInstance, 0);
SetLayeredWindowAttributes(hwnd, 0, 255, LWA_ALPHA);
SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), 0, LWA_COLORKEY);
D3D_FEATURE_LEVEL fl;
DXGI_SWAP_CHAIN_DESC sd = {};
sd.BufferCount = 2;
sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
sd.OutputWindow = hwnd;
sd.SampleDesc.Count = 1;
sd.Windowed = TRUE;
sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
D3D11CreateDeviceAndSwapChain(0, D3D_DRIVER_TYPE_HARDWARE, 0, 0, &fl, 1, D3D11_SDK_VERSION, &sd, &Flex::swap_chain, &Flex::device, 0, &Flex::context);
ID3D11Texture2D* back_buffer;
Flex::swap_chain->GetBuffer(0, IID_PPV_ARGS(&back_buffer));
Flex::device->CreateRenderTargetView(back_buffer, 0, &Flex::render_view);
back_buffer->Release();
ShowWindow(hwnd, SW_SHOW);
ImGui::CreateContext();
ImGui_ImplWin32_Init(hwnd);
ImGui_ImplDX11_Init(Flex::device, Flex::context);
Flex::setup_style();
while (Flex::cfg.active) {
MSG msg;
while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if (GetAsyncKeyState(VK_END) & 1) Flex::cfg.active = false;
ImGui_ImplDX11_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
Flex::draw_menu();
ImGui::Render();
const float clear_color[4] = { 0.f, 0.f, 0.f, 0.f };
Flex::context->OMSetRenderTargets(1, &Flex::render_view, 0);
Flex::context->ClearRenderTargetView(Flex::render_view, clear_color);
ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
Flex::swap_chain->Present(1, 0);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
Flex::save_config();
ImGui_ImplDX11_Shutdown();
ImGui_ImplWin32_Shutdown();
ImGui::DestroyContext();
Flex::render_view->Release();
Flex::swap_chain->Release();
Flex::device->Release();
DestroyWindow(hwnd);
return 0;
}
Вложения
Последнее редактирование: