Contributors Forks Issues


apexsky

DMA/KVM external game mod


UnknownCheats thread ยท Report Bug ยท Request Feature


Main View

About The Project

External game mod for Apex Legends.

The project is powered by ohosky, a universal game mod loader that was born from this project.

It accesses game memory via DMA or virtual machine.

Features

Mod Features

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:

./skyrun.exe --load apex1.spk --load apex1_sg.spk

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 mod program on the Linux host.

    • Using Memflow

      sudo ./skyrun --load apex1.spk --load apex1_sg.spk kvm
      
    • Using LeechCore

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

      sudo ./skyrun --load apex1.spk --load apex1_sg.spk vmm 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 ./skyrun --load apex1.spk --load apex1_sg.spk vmm qemu://hugepage-pid=5678,qmp=/tmp/qmp-win11.sock
      

      See details at https://github.com/ufrisk/LeechCore/wiki/Device_QEMU

Select target game variant:

Default: game_dx12.exe

To target game.exe (DX11), edit settings.toml and set game_ver_dx11 to true.

Start menu only:

./skyrun --load apex1.spk mod-menu

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.~~

A more user-friendly installation method is still under development.

To make mods:

Currently, mods can be written in Rust, C++, or JavaScript. To write mods in Python, please raise an issue to discuss support for Python.

Refer to the provided examples for writing mods in different languages:

The current mod API provides a unified interface for accessing the target process memory and the ability to share data between mods. All mods loaded will run at the same time and will share DMA device connections and caches.

Use ohosky_mod_packer to pack mods

./ohosky_mod_packer path/to/output.spk path/to/mod/manifest.json

Download

  1. Download the mod loader and libraries for accessing memory

    • skyrun: Find the precompiled skyrun.

    • memflow libs: ~~Ensure the corresponding memflow connector plugin files are in ~/.local/lib/memflow/ or the current directory~~

      No need to download memflow libs anymore.

    • vmm lib: If using MemProcFS or LeechCore, extract files to ~/.local/lib/memprocfs/ or the current directory:

  2. Download apexsky mods

    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 the toolchain for compiling webassembly components:

rustup target add wasm32-wasip2

Install Build Dependencies:

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 apex1_offsets_parser
cargo build --release --target wasm32-wasip2
cd ..

cd apexsky_overlay
cargo build --release
cd ..

Pack mods:

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)