
Внешний оверлей для игр, доступный только для чтения, для Linux. Производные смещения, составные скелеты, опциональный модуль ядра для чтения памяти независимо от ptrace и ввод на уровне указателей.
Внешний оверлей для THE FINALS на Linux.
Он читает память игры из отдельного процесса, рисует прозрачное окно без перехвата кликов поверх игры и предоставляет аим-ассист и триггербот. В игру ничего не инжектится и ничего не записывается обратно; инструмент читает память и двигает мышь — и это всё.
Создан с нуля на Linux: каждый игровой оффсет в этом репозитории был получен путём наблюдения за запущенным процессом, а не скопирован из опубликованного SDK-дампа.
https://github.com/user-attachments/assets/674baa52-3006-4767-a263-29178bed3a31
Arch / CachyOS
sudo pacman -S --needed base-devel cmake sfml libx11 libxext
paru -S imgui-sfml
Ubuntu 24.04+ / Debian 13+
sudo apt install build-essential cmake libsfml-dev libx11-dev libxext-dev
pkg-config --modversion sfml-graphics # должно быть 3.x
ImGui-SFML там не упакован, и его нужно собирать из исходников.
В REQUIREMENTS.md описано остальное: сборка SFML 3 и ImGui-SFML из исходников, заголовки ядра для модуля, Secure Boot, ptrace_scope и как проверить рабочую конфигурацию.
CachyOS ядро 7.1.2-3-cachyos, собрано с clang 22.1.6
KDE Plasma 6.7.2 сессия Wayland, оверлей работает через XWayland
SFML 3.1.0 CMake 4.3.4, GCC 16.1.1
Intel UHD + RTX 4060 игра под Proton, Windowed
Две части этого стоит выделить, потому что это неудобные случаи:
Это рабочая машина разработчика, поэтому это единственная конфигурация, которая реально проверена. Ожидается, что другие дистрибутивы, рабочие столы и ядра, собранные с GCC, будут работать, но они не тестировались.
chmod +x build.sh run.sh # при скачивании zip-архивом теряется бит исполняемости
./build.sh # настройка и сборка
./build.sh clean # из свежего каталога сборки
Бинарник записывается в build/TheFinals.
CMake хранит абсолютный путь к исходникам в своём кеше, поэтому каталог сборки, перенесённый при перемещении или переименовании, перестаёт работать. build.sh замечает это и перенастраивается сам, так что о перемещении проекта можно не думать.
kmod/ собирает небольшой модуль, который делает инструмент значительно тише в системе. Он полностью опционален: без него всё тоже работает, используя перечисленные ниже фолбэки в пользовательском пространстве.
access_process_vm() в пространстве ядра, поэтому ptrace_scope не применяется. Инструменту не нужен sudo, ничто не должно подключаться к игре, и yama не нужно ослаблять для всей системы./proc/bus/input/devices для любого, кому захочется посмотреть. С модулем дополнительного устройства нет вообще.cd kmod && make
sudo insmod suite_kmod.ko
Модуль должен быть собран тем же компилятором, что и ядро, в которое он загружается. Makefile читает это из конфигурации самого ядра и сам задаёт тулчейн, так что обычный make корректен и на ядре с GCC, и на ядре с clang:
kernel 7.1.2-3-cachyos
toolchain clang (LLVM=1)
Переопределите с помощью make LLVM=0 или make LLVM=1, если он вдруг ошибётся. Если заголовки ядра отсутствуют, он сообщит об этом и выведет команду установки для вашего дистрибутива.
При включённом Secure Boot неподписанный модуль не загрузится: подпишите его, отключите Secure Boot или просто пропустите модуль.
Загружайте его до запуска инструмента; бэкенд выбирается один раз, при старте.
Проверьте, какой бэкенд активен, в меню или в логе:
[mem] kernel backend: /dev/suite_kmod
[vmouse] kernel injection into the real pointer
Выгрузите с помощью sudo rmmod suite_kmod.
Сначала переключите игру в режим Windowed. В Fullscreen игра полностью владеет дисплеем, и ничто не может рисовать поверх неё, так что оверлей будет работать корректно, но оставаться невидимым.
Оверлей находит окно игры и подстраивается под его позицию и размер, перепроверяя по ходу дела, так что он следует за окном, если вы его перемещаете или меняете размер, и адаптируется к любому разрешению.
./run.sh # сам находит PID игры
./run.sh 12345 # или укажите его вручную
./run.sh -q # тихий режим: только несколько строк статуса
Запускайте когда угодно, в том числе в меню. Он заново резолвит свои объекты при начале или конце матча, так что перезапуск между раундами не нужен.
| Клавиша | Действие |
|---|---|
INSERT | Переключение меню настроек. Пока оно открыто, оверлей перехватывает клики мыши; пока закрыто — клики проходят в игру. |
HOME | Переключение аим-ассиста. |
End | Выход, когда оверлей в фокусе. Ctrl-C в терминале тоже работает. |
Настройки редактируются в меню и сохраняются в settings.cfg при выходе из инструмента, так что он возвращается в том виде, в котором вы его оставили.
Боксы, скелеты, имена, полоски здоровья, дистанция и снаплайны. Цвета отрядов различают команды, а общий ползунок непрозрачности управляет всем, что рисуется.
Скелет составляется из собственной иерархии костей меша, поэтому он следует за анимацией, а не аппроксимируется из капсулы.
Тянет к цели, пока зажата выбранная кнопка мыши.
Стреляет, когда прицел на цели.
Игроки, которых игра в данный момент не отрисовывает, перечёркиваются и затемняются, а аим-ассисту и триггерботу можно отдельно указать игнорировать их.
Это выводится из собственной временной метки рендера движка, поэтому по своей природе консервативно: игра отсекает по ограничивающему боксу, который больше игрока, а запросы окклюзии отстают на кадр-два. Ожидайте, что враг будет помечен как видимый чуть раньше, чем полностью выйдет из-за угла. Ползунок допуска управляет тем, как быстро кто-то выпадает из видимых после потери линии видимости.
Каждый игровой адрес находится в offsets.cfg, который читается при старте из рабочего каталога или на один уровень выше.
Инструмент отказывается запускаться без него и называет всё, чего не хватает. Это намеренно: оффсет, который молча равен нулю, даёт пустой экран без объяснений, что диагностировать гораздо хуже, чем явный сбой.
Обновление игры сдвигает их. Когда это происходит, инструмент запускается, но ничего не находит. Выведите оффсеты заново и скопируйте новый offsets.cfg сюда. Пересборка не нужна.
README.md этот файл
REQUIREMENTS.md зависимости и как их установить
LICENSE GPL-2.0
build.sh скрипт сборки
run.sh лаунчер
banner.txt стартовый баннер
offsets.cfg игровые оффсеты (обязательно)
CMakeLists.txt
src/
main.cpp точка входа, окно оверлея, цикл рендера
mem.hpp чтение памяти процесса
cheat.hpp поток чтения, список сущностей
render.hpp отрисовка ESP, аим-ассист, триггербот, меню
global.hpp состояние, общее для потоков чтения и рендера
structs.hpp типы движка и проекция мир-на-экран
skeleton.hpp композиция иерархии костей
settings.hpp загрузка и сохранение settings.cfg
vmouse.hpp вывод мыши
offsets.hpp фиксированные константы раскладки движка
runtime_offsets.hpp загрузчик offsets.cfg
gobjects_direct.hpp декодирование массива объектов
kmod/
suite_kmod.c модуль ядра: чтение памяти и инжект мыши
suite_kmod.h общий ioctl-контракт
Makefile
settings.cfg создаётся при первом выходе из инструмента.
offsets.cfg not found: запускайте из каталога проекта или держите файл рядом с бинарником.
offsets.cfg is present but incomplete: оффсеты, которые он называет, равны нулю. Скорее всего, игра обновилась; выведите их заново.
На экране ничего не появляется, но лог выглядит здоровым: вероятно, игра в Fullscreen, который не даёт ничему рисовать поверх. Переключите её в Windowed. Строка лога game window at X,Y WxH - overlay will match подтверждает, что оверлей нашёл окно и подстроился под него.
Оверлей перехватывает ваши клики мышью: при сборке отсутствовала libXext, поэтому клики насквозь были выключены на этапе компиляции. Шаг настройки предупреждает об этом; ищите XShape click-through: enabled. Установите libxext/libxext-dev и пересоберите.
Оверлей не на месте или клики не проходят насквозь: оверлею нужен X11. Под Wayland принудительно включите XWayland:
DISPLAY=:0 WAYLAND_DISPLAY= ./run.sh
Игра не найдена: передайте PID напрямую. Под Proton процесс называется Discovery-d.exe, а правильный поток — GameThread.
Во время матча ничего не рисуется: оффсеты устарели после обновления игры.
Аим-ассист ничего не делает: проверьте, что меню сообщает о бэкенде мыши. Если включено «visible only» и все враги за укрытием, цели намеренно нет.
Модуль ядра не собирается: он должен быть скомпилирован тем же тулчейном, что и ваше работающее ядро. На ядре, собранном с clang: make LLVM=1.
Этот инструмент читает память другого процесса и инжектит ввод мыши. Он не модифицирует игру, но использование его в онлайн-матче нарушает условия обслуживания игры и может стоить вам аккаунта. Это ваше решение; принимайте его осознанно.
GNU General Public License, версия 2. См. LICENSE.
Вы можете использовать, изучать, модифицировать и распространять это. Если вы распространяете модифицированную версию, вы должны поставлять её исходный код под той же лицензией, чтобы каждый, кто её получает, сохранял те же свободы. Гарантий нет.
GPLv2, а не v3, намеренно: модуль ядра в kmod/ — это модуль ядра Linux, ядро — только GPL-2.0, а MODULE_LICENSE("GPL") означает версию 2. Лицензирование всего проекта тем же образом сохраняет совместимость пользовательского инструмента и модуля друг с другом и с ядром, без необходимости разбираться в расщеплении.
Copyright © 2026 Ymsniper.