chettoy / apexsky

https://apex.chettoy.com
GNU General Public License v3.0
144 stars 80 forks source link

Contributors Forks Issues


apexsky

DMA/KVM/Linux game mod loader


UnknownCheats thread · Report Bug · Request Feature


Main View


About The Project

The goal of the project is to become a universal game mod loader.

It accesses game memory via DMA or virtual machine, ensuring availability for most games.

Features

Current Supported Games

Overlay Features

apexsky_overlay 🐧Linux 🪟Windows 🌐Web Shareable to teammates
player and health bar ESP
mini-map radar
show player box and skeleton 🚧
show nearby loots and death boxes 🚧
aiming target indicator
fps display
spectator list 🚧
teammate damage list
voice navigator (callouts) 🚧

Please star if you like it. Look forward to your testing and feedback.

Getting Started

Usage

🎮Game Device 2️⃣econd Device note
🎮🖥💻+DMA+2️⃣🖥💻 clean✅ apexsky_dma+apexsky_overlay
2️⃣🐧(Host)+🎮(VM) clean✅ apexsky_dma+apexsky_overlay Requires dual GPU
2️⃣🐧(Host, no GPU)+🎮(VM) clean✅ apexsky_dma No overlay
2️⃣🐧(Host, no GPU)+🎮(VM) apexsky_overlay apexsky_dma Overlay can be detected
2️⃣🐧(Host, no GPU)+🎮(VM) apexsky_overlay🌐 in browser apexsky_dma Difficulty in displaying the graphics on the game
🎮🐧 apexsky_dma+apexsky_overlay Not recommended

Play with DMA:

./apexsky_dma.exe pcileech fpga

Play with VM:

There are really only two steps:

  1. Run the game on a windows guest in a kvm virtual machine.

  2. Run the compiled apexsky_dma program on the Linux host.

    • Using the DMA Library

      Find the virtual machine process PID and QMP address after starting the virtual machine, then run the compiled apexsky_dma program on the Linux host.

      sudo ./apexsky_dma pcileech qemu://hugepage-pid=<PID>,qmp=<QMP_ADDRESS>

      For example, if your VM's PID is 5678 and the QMP address is /tmp/qmp-win11.sock, the command would be:

      sudo ./apexsky_dma pcileech qemu://hugepage-pid=5678,qmp=/tmp/qmp-win11.sock

      For more details, see https://github.com/ufrisk/LeechCore/wiki/Device_QEMU

    • Using Memflow

      sudo ./apexsky_dma kvm

Overlay (optional):

ESP is now implemented as a stand-alone program. The official apexsky_overlay currently supports Linux/Windows/Web platforms.

You can choose apexsky_overlay for any platform or use them both. You can also write your own unofficial overlay program.

[!NOTE] If you are using a resolution other than 1920x1080, save the configuration and then modify the screen_width and screen_height in settings.toml and reload the configuration.

[!NOTE] The default setting only allows connections from localhost. If remote access is required, you need to expose the ESP service port on the network. The listening address can be viewed and edited in settings.toml.

To use overlay, first ensure that the ESP service is enabled, either by enabling it in the menu or by editing the settings file.

You can then connect overlay running on any platforms to apexsky's ESP service.

Press Insert to open the Overlay menu. Press and hold the Insert key to temporarily interact with the overlay.

Click the Connection button to display the address bar, and then click again to connect to the ESP service.

MODs

To install mods:

  1. Create a mods folder in ~/.local/share/apexsky/ or in the current directory.
  2. Place the .spk mod package into the mods folder.
  3. Navigate to the mod menu and install mods.

Download

  1. Download libraries for accessing memory

    • If you're using the memflow connector, ensure you download the corresponding files and place them in ~/.local/lib/memflow/ or the current directory:

    • If you're using MemProcFS or LeechCore, extract them to ~/.local/lib/memprocfs/ or the current directory:

      • Download and extract the files from MemProcFS Releases.

      • FTDI drivers have to be installed if FPGA is used on Windows.

        Download the 64-bit FTD3XX.dll from FTDI and place it alongside leechcore.dll.

        If using the FT2232H instead of the FT601 please download D2XX drivers from ftdichip.

  2. Download apexsky

    Click on Actions to download the auto-built artifacts.

    Or compile it yourself.

Build from source

Requirements:

Install Rust nightly:

Run the following command to install rustup:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Set nightly as the default toolchain:

rustup default nightly

Install Build Dependencies (Ubuntu):

sudo apt install clang protobuf-compiler libusb-1.0-0-dev libzstd-dev pkgconf libx11-dev libasound2-dev libudev-dev libxkbcommon-x11-0 libwayland-dev libxkbcommon-dev lld

Install Build Dependencies (Arch):

sudo pacman -S clang protobuf libusb zstd libx11 pkgconf alsa-lib wayland-protocols wayland lld

Build:

git clone --recurse https://github.com/chettoy/apexsky
cd apexsky
git checkout next
git submodule update --init --recursive
cd apexsky
cargo build --release
cd apexsky_overlay
cargo build --release

FAQ

  1. It seems that the client is still reading the values required for the ESP stuff. If AC is looking for access on those specific memory locations, then IDK if just removing the implementation of the overlay will work in terms of preventing detection. Or is AC simply detecting the presence of the overlay/client itself, and banning due to that?

    First of all, everything related to game state is realized by access on those specific memory locations. So we need to use DMA or VM techniques to access memory covertly. AC detects the overlay client, so we re-implement the overlay outside the game device and remove the client.

  2. How to load new offsets after a game update

    Place a updated offsets.ini in the same directory to automatically load the new offsets instead of the built-in offsets. This may not always be enough to keep up with changes in game updates, but for the most part this will allow play to continue.

Community

Join the apexsky community server at Discord!

Acknowledgments

(back to top)