
Externes schreibgeschütztes Spiel-Overlay für Linux. Abgeleitete Offsets, zusammengesetzte Skelette, optionales Kernelmodul für ptrace-unabhängige Speicherzugriffe und Eingaben auf Zeigerebene
Ein externes Overlay für THE FINALS unter Linux.
Es liest den Speicher des Spiels aus einem separaten Prozess, zeichnet ein transparentes, klickdurchlässiges Fenster darüber und bietet eine Zielhilfe (Aim Assist) sowie einen Triggerbot. Es wird nichts in das Spiel injiziert und niemals etwas zurückgeschrieben; das Tool liest Speicher und bewegt die Maus – das ist alles.
Von Grund auf unter Linux entwickelt: Jeder Spiel-Offset in diesem Repository wurde durch Beobachtung des laufenden Prozesses abgeleitet, nicht aus einem veröffentlichten SDK-Dump kopiert.
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 # muss 3.x sein
ImGui-SFML ist dort nicht paketiert und muss aus dem Quellcode gebaut werden.
REQUIREMENTS.md deckt den Rest ab: das Bauen von SFML 3 und
ImGui-SFML aus dem Quellcode, Kernel-Header für das Modul, Secure Boot,
ptrace_scope, und wie man ein funktionierendes Setup verifiziert.
CachyOS Kernel 7.1.2-3-cachyos, gebaut mit clang 22.1.6
KDE Plasma 6.7.2 Wayland-Sitzung, Overlay läuft über XWayland
SFML 3.1.0 CMake 4.3.4, GCC 16.1.1
Intel UHD + RTX 4060 Spiel unter Proton, Fenstermodus
Zwei Teile davon sind erwähnenswert, weil sie die schwierigen Fälle sind:
Dies ist die Entwicklungsmaschine, also die einzige tatsächlich verifizierte Konfiguration. Andere Distributionen, Desktops und mit GCC gebaute Kernel sollten funktionieren, sind aber ungetestet.
chmod +x build.sh run.sh # ein Zip-Download entfernt das Ausführungsbit
./build.sh # konfigurieren und bauen
./build.sh clean # aus einem frischen Build-Verzeichnis
Die Binärdatei wird nach build/TheFinals geschrieben.
CMake speichert den absoluten Quellpfad in seinem Cache, sodass ein Build-Verzeichnis,
das über eine Verschiebung oder Umbenennung hinweg mitgeführt wird, nicht mehr funktioniert.
build.sh bemerkt das und konfiguriert von selbst neu, sodass Sie sich um das Verschieben
des Projekts keine Gedanken machen müssen.
kmod/ baut ein kleines Modul, das das Tool auf dem System erheblich leiser macht.
Es ist vollständig optional: Ohne es funktioniert weiterhin alles, unter Verwendung der
unten genannten Userspace-Fallbacks.
access_process_vm() im Kernelspace, sodass
ptrace_scope nicht greift. Das Tool benötigt kein sudo, nichts muss sich an das
Spiel anhängen, und yama muss nicht für das gesamte System gelockert werden./proc/bus/input/devices für alles, was hinschauen
möchte. Mit dem Modul gibt es überhaupt kein zusätzliches Gerät.cd kmod && make
sudo insmod suite_kmod.ko
Ein Modul muss mit demselben Compiler gebaut werden wie der Kernel, in den es geladen wird.
Die Makefile liest das aus der eigenen Konfiguration des Kernels und setzt die Toolchain
selbst, sodass einfaches make sowohl auf einem GCC-Kernel als auch auf einem clang-Kernel korrekt ist:
kernel 7.1.2-3-cachyos
toolchain clang (LLVM=1)
Überschreiben Sie mit make LLVM=0 oder make LLVM=1, falls es jemals falsch rät. Wenn
die Kernel-Header fehlen, wird das gemeldet und der Installationsbefehl für Ihre Distribution ausgegeben.
Mit aktiviertem Secure Boot wird ein unsigniertes Modul nicht geladen: Signieren Sie es, deaktivieren Sie Secure Boot oder überspringen Sie das Modul einfach.
Laden Sie es vor dem Start des Tools; das Backend wird einmalig beim Start gewählt.
Bestätigen Sie im Menü oder im Log, welches Backend aktiv ist:
[mem] kernel backend: /dev/suite_kmod
[vmouse] kernel injection into the real pointer
Entladen mit sudo rmmod suite_kmod.
Stellen Sie das Spiel zuerst auf Fenstermodus. Im Vollbild besitzt das Spiel das Display vollständig und nichts kann darüber zeichnen, sodass das Overlay korrekt läuft und trotzdem unsichtbar ist.
Das Overlay findet das Fenster des Spiels und gleicht dessen Position und Größe an, wobei es kontinuierlich neu prüft, sodass es dem Fenster folgt, wenn Sie es verschieben oder die Größe ändern, und sich an jede Auflösung anpasst.
./run.sh # findet die Spiel-PID selbst
./run.sh 12345 # oder geben Sie eine an
./run.sh -q # ruhig: nur ein paar Statuszeilen
Starten Sie es, wann immer Sie möchten, auch im Menü. Es löst seine Objekte neu auf, wenn ein Match beginnt oder endet, sodass es zwischen den Runden nicht neu gestartet werden muss.
| Taste | Aktion |
|---|---|
INSERT | Schaltet das Einstellungsmenü um. Während es geöffnet ist, nimmt das Overlay Mausklicks entgegen; während es geschlossen ist, gehen Klicks an das Spiel durch. |
HOME | Schaltet die Zielhilfe (Aim Assist) um. |
Einstellungen werden im Menü bearbeitet und beim Beenden des Tools in settings.cfg gespeichert,
sodass es so zurückkehrt, wie Sie es verlassen haben.
Boxen, Skelette, Namen, Gesundheitsbalken, Entfernung und Snaplines. Squad-Farben unterscheiden Teams, und ein Master-Transparenzregler steuert alles Gezeichnete.
Das Skelett wird aus der eigenen Knochenhierarchie des Meshes zusammengesetzt, sodass es der Animation folgt, statt aus einer Kapsel approximiert zu werden.
Zieht zu einem Ziel, während die gewählte Maustaste gedrückt gehalten wird.
Feuert, wenn sich das Fadenkreuz auf dem Ziel befindet.
Spieler, die vom Spiel gerade nicht gezeichnet werden, werden durchgestrichen und ausgeblendet, und die Zielhilfe und der Triggerbot können jeweils angewiesen werden, sie zu ignorieren.
Dies wird aus dem eigenen Render-Zeitstempel der Engine abgeleitet, ist also von Natur aus konservativ: Das Spiel verwirft anhand einer Begrenzungsbox, die größer als der Spieler ist, und Okklusionsabfragen hinken ein oder zwei Frames hinterher. Erwarten Sie, dass ein Gegner kurz bevor er eine Ecke vollständig freigibt, als sichtbar markiert wird. Der Toleranzregler steuert, wie schnell jemand nach dem Verlust der Sichtlinie aus „sichtbar“ herausfällt.
Jede spielspezifische Adresse befindet sich in offsets.cfg, gelesen beim Start aus dem
Arbeitsverzeichnis oder eine Ebene darüber.
Das Tool weigert sich, ohne sie zu starten und benennt alles Fehlende. Dies ist beabsichtigt: Ein Offset, das stillschweigend null ist, erzeugt einen leeren Bildschirm ohne Erklärung, was weitaus schwerer zu diagnostizieren ist als ein klarer Fehler.
Ein Spielupdate verschiebt diese. Wenn das passiert, startet das Tool, findet aber nichts.
Leiten Sie die Offsets neu ab und kopieren Sie die neue offsets.cfg hierher. Kein Neubau ist nötig.
README.md diese Datei
REQUIREMENTS.md Abhängigkeiten und wie man sie installiert
LICENSE GPL-2.0
build.sh Build-Skript
run.sh Launcher
banner.txt Startbanner
offsets.cfg Spiel-Offsets (erforderlich)
CMakeLists.txt
src/
main.cpp Einstiegspunkt, Overlay-Fenster, Render-Schleife
mem.hpp Prozessspeicher-Lesezugriffe
cheat.hpp Leser-Thread, Entitätsliste
render.hpp ESP-Zeichnung, Zielhilfe, Triggerbot, Menü
global.hpp Zustand, der zwischen Lese- und Render-Threads geteilt wird
structs.hpp Engine-Typen und Welt-zu-Bildschirm-Projektion
skeleton.hpp Zusammensetzung der Knochenhierarchie
settings.hpp Laden und Speichern von settings.cfg
vmouse.hpp Mausausgabe
offsets.hpp feste Engine-Layout-Konstanten
runtime_offsets.hpp Lader für offsets.cfg
gobjects_direct.hpp Dekodierung des Objekt-Arrays
kmod/
suite_kmod.c Kernel-Modul: Speicherzugriffe und Mausinjektion
suite_kmod.h gemeinsamer ioctl-Vertrag
Makefile
settings.cfg wird beim ersten Beenden des Tools erstellt.
offsets.cfg not found: Führen Sie es aus dem Projektverzeichnis aus oder halten Sie die Datei
neben der Binärdatei.
offsets.cfg is present but incomplete: Die darin genannten Offsets sind null. Das
Spiel wurde höchstwahrscheinlich aktualisiert; leiten Sie sie neu ab.
Auf dem Bildschirm erscheint nichts, aber das Log sieht gesund aus: Das Spiel befindet sich
wahrscheinlich im Vollbild, das nichts darüber zeichnen lässt. Wechseln Sie es in den Fenstermodus.
Die Logzeile game window at X,Y WxH - overlay will match bestätigt, dass das
Overlay das Fenster gefunden und angeglichen hat.
Das Overlay frisst Ihre Mausklicks: libXext fehlte beim Bauen, sodass die
Klickdurchlässigkeit herauskompiliert wurde. Der Konfigurationsschritt warnt davor; suchen Sie nach
XShape click-through: enabled. Installieren Sie libxext/libxext-dev und bauen Sie neu.
Overlay an der falschen Stelle oder Klicks gehen nicht durch: Das Overlay benötigt X11. Erzwingen Sie unter Wayland XWayland:
DISPLAY=:0 WAYLAND_DISPLAY= ./run.sh
Spiel nicht gefunden: Übergeben Sie die PID direkt. Unter Proton ist der Prozess
Discovery-d.exe und der korrekte Thread ist GameThread.
Während eines Matches wird nichts gezeichnet: Offsets sind nach einem Spielupdate veraltet.
Zielhilfe tut nichts: Prüfen Sie, ob das Menü ein Maus-Backend meldet. Wenn „nur sichtbar“ aktiviert ist und jeder Gegner hinter Deckung ist, gibt es bewusst kein Ziel.
Kernel-Modul lässt sich nicht bauen: Es muss mit derselben Toolchain wie Ihr laufender
Kernel kompiliert werden. Auf einem mit clang gebauten Kernel: make LLVM=1.
Dies liest den Speicher eines anderen Prozesses und injiziert Mauseingaben. Es modifiziert das Spiel nicht, aber die Verwendung in einem Online-Match verstößt gegen die Nutzungsbedingungen des Spiels und kann Sie das Konto kosten. Das ist Ihre Entscheidung; treffen Sie sie bewusst.
GNU General Public License, Version 2. Siehe LICENSE.
Sie dürfen dies verwenden, studieren, modifizieren und weiterverbreiten. Wenn Sie eine modifizierte Version weiterverbreiten, müssen Sie deren Quellcode unter derselben Lizenz mitliefern, damit jeder, der sie erhält, dieselben Freiheiten behält. Es gibt keine Garantie.
GPLv2 statt v3 bewusst: Das Kernel-Modul in kmod/ ist ein Linux-Kernel-Modul, der Kernel
ist GPL-2.0-only, und MODULE_LICENSE("GPL") bedeutet Version 2. Die Lizenzierung des gesamten
Projekts auf dieselbe Weise hält das Userspace-Tool und das Modul miteinander und mit dem Kernel
kompatibel, ohne dass über eine Aufteilung nachgedacht werden muss.
Copyright © 2026 Ymsniper.
End |
Beenden, mit fokussiertem Overlay. Ctrl-C im Terminal funktioniert ebenfalls. |