BETA · Linux x86_64 · GPL-3.0

Mod Unity games on Linux.
No Windows. No scripts.

Zyringe injects .NET / C# mods into running Unity & Mono games — loaded entirely in memory, never written to disk — and provisions IL2CPP mod loaders for you. The native Linux answer to SharpMonoInjector, wrapped in a real, modern UI.

x86_64 Linux · needs pkexec (polkit) for injection · the GUI itself never runs as root

2injection modes
2IL2CPP loaders
4Mono flavors
0bytes to disk
1-click Steam setup
100%unprivileged GUI
Capabilities

Everything you need to mod
Unity on Linux

Two engines, two workflows, one app. Mono games get injected; IL2CPP games get a loader set up and launched — automatically.

Runtime Mono injection

Attach into a live game via ptrace, then load your assembly with SMI-grade in-memory loading — it never touches the disk, and Assembly.Location is set correctly.

IL2CPP mod loaders

IL2CPP game? Zyringe installs MelonLoader or BepInEx, guards against wrong-platform / wrong-variant builds, manages your plugins and launches it.

Entry-point browser

Reads the DLL's .NET metadata directly and lists every Namespace.Class.Method — searchable, badged static / void / args — so you never guess a method name.

Steam set-up, automated

For IL2CPP it writes the correct launch option into Steam's own config (a safe, backed-up edit) and launches the game. Nothing to paste. Non-Steam & Wine get exact guidance.

Unprivileged by design

The GUI never runs as root. Only a tiny helper is elevated per injection via pkexec, and a polkit rule pins its exact path against tampering.

Proton, Wine & cracked

Detects Proton/Wine and non-Steam / OnlineFix layouts, resolves the real game folder every time, and clearly flags targets it can't reach instead of failing silently.

A real app

See it in action

Not a mockup — the actual dashboard: a live target list, in-memory injection, and a settings panel worth opening.

Zyringe main window — running Mono/Unity targets, the injection form, and the live console
The main dashboard — targets, injection form & live console.
Zyringe settings panel — accent theming, refresh interval, and paths
Settings — accent theming, refresh interval & paths.
How it works

Pick · point · inject

Zyringe scans /proc for running Unity/Mono games — it never needs to have launched them itself.

Pick a target

Choose a running game from the auto-refreshing list. Mono games are injectable; IL2CPP games open the loader panel.

Choose your mod

Point at a .dll and its entry point — Browse methods lists them straight from the assembly — or install a loader and add plugins.

Inject or launch

Approve the pkexec prompt and watch the live console. Your mod runs in-process; the game keeps playing.

Under the hood

Serious internals, spelled out

No hand-waving — here's exactly what Zyringe does and how far it reaches.

Injection engine Mono

  • Attach (ptrace) — remote dlopen into a running game, on a safe syscall-parked thread
  • Launch (LD_PRELOAD) — start the game with the mod pre-loaded, no elevation
  • In-memory load via mono_image_open_from_data — nothing on disk
  • String arguments + return value & managed-exception capture
  • Flavors: BleedingEdge · SGen · Mono 2.0 · Boehm

Loader manager IL2CPP

  • MelonLoader & BepInEx — install from GitHub releases or a local zip
  • Smart guards — hides Linux/macOS builds on Proton, non-IL2CPP builds on BepInEx
  • Verified installs — PK-magic + zip-slip-safe extraction, fails loudly on a bad archive
  • Plugin management + one-click open the plugins folder
  • Steam launch-option automation + steam:// launch

Security model polkit

  • Unprivileged GUI — root is never held by the app
  • Only zyringe-inject is elevated, per injection, then exits
  • Path-pinned polkit rule — the privileged binary can't be swapped
  • Cancel flag in your private runtime dir — no /tmp TOCTOU
  • 32-bit reject · noexec-/tmp fallback · leaves no mmap residue

Interface native

  • Custom titlebar dashboard, fully resizable, live accent themes
  • Live console with a staged progress stepper + log export
  • One-click Player.log & in-target helper log
  • Per-game presets, drag-and-drop DLL, right-click menus
  • Tooltips everywhere, a first-run guide, keyboard shortcuts
RustTauri v2React 18TypeScriptC (libc-only helper)ptrace / process_vm_writevECMA-335 metadata
Compatibility

Know exactly what works

Verified pipelines: Mono Attach · Mono Launch · IL2CPP MelonLoader · IL2CPP BepInEx. Tested on EndeavourOS · Linux 6.18 LTS · x86_64 · KDE / X11 · glibc 2.43.

TargetInjectionModdingNotes
Native-Linux Mono (Unity)✔ Attach + Launch✔The tested core path
Native-Linux IL2CPP—✔ MelonLoader / BepInExLoader-based
Proton / Windows IL2CPP—✔ Windows loader + Steam setupUses the Windows loader build
Proton / Windows Mono✘ can't attach—Runtime is a Windows DLL inside Wine — flagged
Get Zyringe

Download & install

Grab a pre-built package, or build from source on GitHub. Injection needs the tiny privileged helper installed once.

AppImage

chmod +x Zyringe.AppImage
./Zyringe.AppImage

Debian / Ubuntu

sudo apt install ./Zyringe.deb

Enable injection (one time)

# installs the polkit-pinned privileged helper
sudo bash install.sh

The GUI is unprivileged; the helper is elevated per-run via pkexec. install.sh ships alongside the downloads.

Questions

Good to know

Is it safe? Does it need root?

The GUI never runs as root. Only a small helper (zyringe-inject) is elevated for the moment of injection via pkexec, guarded by a polkit rule that pins its exact path so it can't be swapped. It uses the same ptrace capability as any debugger.

Does it write my mod to disk?

No. In Attach mode the assembly is loaded straight into the game's memory with SMI-grade in-memory loading — nothing is written to disk, and Assembly.Location is still set correctly for mods that expect a path.

My game is IL2CPP — can I still mod it?

Yes. IL2CPP games have no Mono runtime to inject into, so Zyringe installs and manages a mod loader (MelonLoader or BepInEx) instead, sets the Steam launch option for you, and launches the game.

Does it work with Proton / non-Steam games?

For IL2CPP modding, yes — it detects Proton/Wine and resolves the real game folder even for cracked / non-Steam layouts. Runtime injection into a Windows-Mono game under Proton isn't possible (its runtime is a Windows DLL inside Wine) and is clearly flagged.

Which distros are supported?

Any modern x86_64 Linux with pkexec/polkit. Developed and verified on EndeavourOS (Arch), Linux 6.18 LTS, KDE / X11, glibc 2.43. It's BETA — reports from other distros are welcome.