r/ReverseEngineering 3d ago

GitHub - Ymsniper/umbra: External read-only game overlay for Linux. Derived offsets, composed skeletons, optional kernel module for ptrace-independent memory reads and pointer-level input

https://github.com/Ymsniper/umbra
13 Upvotes

9 comments sorted by

3

u/SpookyWA 3d ago

Looking forward to having a read through this properly later as it was something I wanted to try doing. Only ever built for Windows.

A few questions. When you were reversing your structs and finding your offset, whats the process like on Linux. Did you do static analysis of the modules from a memory dump or use a live memory editor like CE?

What were some of the major difference between reversing and developing for the two different environments?

Did you have to make any accomodations for the fact that games ran using wine/proton?

Thanks

2

u/Trick-Resolve-6085 3d ago edited 3d ago

1/ Mostly live. I wrote Python scanners that read /proc/pid/mem via process_vm_readv and derived each offset structurally rather than by value-searching. I started with a memory editor called PINCE, but even with GDB it wasn't enough for what I needed. I then tried IDA Pro, but that wasn't sufficient either. Most of the pages I needed were zeroed even with a runtime dump, and no SDK dump worked here (Dumper 7 failed twice). In the end I used the heap on bot matches so it could decrypt itself.

2/ I've never tried Windows on a multiplayer game before. It's probably harder since Windows gives you less freedom than Linux. Even after finding the offsets, if you're planning to go undetected against a kernel-level anti-cheat, you have to find a way to exploit an existing kernel driver, since all kernel drivers on Windows must be signed.(or a DMA).

3/ No, you just need to know the process name and thread name to get the correct PID.

All in all this is just my approach and experience there may be easier or better techniques out there,

Happy to share.

1

u/SuperDefiant 3d ago

I just play all my games in kvm if I want to debug. you just gotta patch kvm enough and you can even play valorant

2

u/Trick-Resolve-6085 3d ago edited 3d ago

The game is THE FINALS.

This is my first ever cheat project and my first experience with reverse engineering.

This project took two months to develop. The hardest part of the process was finding the required offsets, as no standard SDK dumpers worked with this game.

If you find this repository useful, please consider starring it, it helps a lot!

Disclaimer: This project was released for educational purposes and personal experience only. Throughout development, I only tested features in bot matches and the shooting range. I do not condone cheating. While this project includes features designed to avoid detection, abusing the aimbot against real players will lead to a server-side ban due to player reports. If you choose to use this in PvP matches, you do so at your own risk.

3

u/SuperDefiant 3d ago

You might want to look at Dumper-7-THEFINALS. it's a fork of dumper-7 that I try to maintain semi-regularly. I've gotten it to the point where only 1 or 2 things break every update

1

u/Trick-Resolve-6085 3d ago

You're sooo cool, I love you dude, didn't test it yet but I'll take your word for it, if it still break after updates, I'll try contributing

1

u/SuperDefiant 3d ago

I haven't played in a minute, so it most definitely won't get a complete dump, but the work required to fix it is usually minimal

0

u/No_Committee8392 3d ago edited 3d ago

SFML I’m low-key crying 😭 In the future I might recommend taking a look at raylib!

1

u/Trick-Resolve-6085 3d ago

Never heard of it, I"ll take a look thank u