
Linux용 외부 읽기 전용 게임 오버레이. 파생된 오프셋, 구성된 스켈레톤, ptrace 독립적 메모리 읽기 및 포인터 수준 입력을 위한 선택적 커널 모듈.
Linux에서 THE FINALS용 외부 오버레이입니다.
별도 프로세스에서 게임의 메모리를 읽고, 그 위에 투명한 클릭 통과(click-through) 창을 그려서 에임 어시스트와 트리거봇을 제공합니다. 게임에 주입되는 것은 없으며, 기록되는 것도 전혀 없습니다. 이 도구는 메모리를 읽고 마우스를 움직일 뿐입니다.
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 kernel 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, 창 모드에서 실행되는 게임
그중 두 가지는 까다로운 경우이므로 언급할 가치가 있습니다:
이것이 개발 머신이므로 실제로 검증된 유일한 구성입니다. 다른 배포판, 데스크톱 및 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가 필요 없고, 게임에 attach할 필요도 없으며, 시스템 전체에서 yama를 완화할 필요도 없습니다./proc/bus/input/devices에 나타나므로 확인하려는 모든 것이 볼 수 있습니다. 모듈을 사용하면 추가 장치가 전혀 없습니다.cd kmod && make
sudo insmod suite_kmod.ko
모듈은 로드되는 커널과 동일한 컴파일러로 빌드되어야 합니다. Makefile은 이를 커널 자체 구성에서 읽고 툴체인을 직접 설정하므로, GCC 커널과 clang 커널 모두에서 일반 make가 올바릅니다:
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로 언로드합니다.
먼저 게임을 창 모드로 설정하십시오. 전체 화면에서는 게임이 디스플레이를 완전히 소유하므로 그 위에 아무것도 그릴 수 없어서, 오버레이가 올바르게 실행 중이어도 보이지 않습니다.
오버레이는 게임 창을 찾아 위치와 크기를 일치시키고, 이동하면서 다시 확인하므로 창을 이동하거나 크기를 조정하면 따라가며 모든 해상도에 적응합니다.
./run.sh # 게임 PID를 자체적으로 찾습니다
./run.sh 12345 # 또는 직접 지정
./run.sh -q # 조용한 모드: 상태 줄 몇 개만 표시
메뉴를 포함해 언제든 시작할 수 있습니다. 매치가 시작되거나 끝날 때 객체를 다시 해석하므로 라운드 사이에 재시작할 필요가 없습니다.
| 키 | 동작 |
|---|---|
INSERT | 설정 메뉴 전환. 열려 있는 동안 오버레이가 마우스 클릭을 받고, 닫혀 있는 동안 클릭은 게임으로 전달됩니다. |
HOME | 에임 어시스트 전환. |
End | 오버레이가 포커스된 상태에서 종료. 터미널에서 Ctrl-C도 작동합니다. |
설정은 메뉴에서 편집되고 도구가 종료될 때 settings.cfg에 저장되므로, 마지막 상태 그대로 다시 시작됩니다.
박스, 스켈레톤, 이름, 체력 바, 거리 및 스냅라인. 분대 색상으로 팀을 구분하며, 마스터 불투명도 슬라이더가 그려지는 모든 것을 제어합니다.
스켈레톤은 메시 자체의 본 계층 구조로 구성되므로 캡슐에서 근사하는 대신 애니메이션을 따릅니다.
선택한 마우스 버튼을 누르고 있는 동안 대상 쪽으로 끌어당깁니다.
조준점이 대상 위에 있을 때 발사합니다.
현재 게임이 그리지 않는 플레이어는 취소선과 페이드 처리되며, 에임 어시스트와 트리거봇이 각각 이를 무시하도록 설정할 수 있습니다.
이는 엔진 자체의 렌더 타임스탬프에서 파생되므로 본질적으로 보수적입니다. 게임은 플레이어보다 큰 경계 상자로 컬링하고, 폐색 쿼리는 한두 프레임 지연됩니다. 적이 모서리를 완전히 벗어나기 약간 전에 표시된 것으로 표시될 것으로 예상하십시오. 허용 오차 슬라이더는 시야가 끊긴 후 누군가가 표시 상태에서 벗어나는 속도를 제어합니다.
모든 게임별 주소는 offsets.cfg에 있으며, 시작 시 작업 디렉토리 또는 한 단계 위에서 읽습니다.
도구는 이 파일 없이는 시작을 거부하고 누락된 항목을 지정합니다. 이는 의도적입니다. 조용히 0이 된 오프셋은 설명 없이 빈 화면을 생성하며, 이는 명확한 실패보다 진단하기 훨씬 어렵습니다.
게임 업데이트는 이러한 값을 변경합니다. 그런 일이 발생하면 도구는 시작되지만 아무것도 찾지 못합니다. 오프셋을 다시 도출하고 새 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: 지정된 오프셋이 0입니다. 게임이 업데이트되었을 가능성이 높으므로 다시 도출하십시오.
화면에 아무것도 나타나지 않지만 로그는 정상으로 보임: 게임이 전체 화면 모드일 가능성이 높으며, 이 경우 그 위에 아무것도 그릴 수 없습니다. 창 모드로 전환하십시오. 로그 줄 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가 아닌 GPLv2입니다: kmod/의 커널 모듈은 Linux 커널 모듈이고, 커널은 GPL-2.0 전용이며, MODULE_LICENSE("GPL")은 버전 2를 의미합니다. 전체 프로젝트를 동일한 방식으로 라이선스하면 사용자 공간 도구와 모듈이 서로 및 커널과 호환되며, 분할에 대해 고민할 필요가 없습니다.
Copyright © 2026 Ymsniper.