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
Two engines, two workflows, one app. Mono games get injected; IL2CPP games get a loader set up and launched — automatically.
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 game? Zyringe installs MelonLoader or BepInEx, guards against wrong-platform / wrong-variant builds, manages your plugins and launches it.
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.
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.
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.
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.
Not a mockup — the actual dashboard: a live target list, in-memory injection, and a settings panel worth opening.
Zyringe scans /proc for running Unity/Mono games — it never needs to have launched them itself.
Choose a running game from the auto-refreshing list. Mono games are injectable; IL2CPP games open the loader panel.
Point at a .dll and its entry point — Browse methods lists them straight from the assembly — or install a loader and add plugins.
Approve the pkexec prompt and watch the live console. Your mod runs in-process; the game keeps playing.
No hand-waving — here's exactly what Zyringe does and how far it reaches.
dlopen into a running game, on a safe syscall-parked threadmono_image_open_from_data — nothing on disksteam:// launchzyringe-inject is elevated, per injection, then exits/tmp TOCTOU/tmp fallback · leaves no mmap residueVerified pipelines: Mono Attach · Mono Launch · IL2CPP MelonLoader · IL2CPP BepInEx. Tested on EndeavourOS · Linux 6.18 LTS · x86_64 · KDE / X11 · glibc 2.43.
| Target | Injection | Modding | Notes |
|---|---|---|---|
| Native-Linux Mono (Unity) | ✔ Attach + Launch | ✔ | The tested core path |
| Native-Linux IL2CPP | — | ✔ MelonLoader / BepInEx | Loader-based |
| Proton / Windows IL2CPP | — | ✔ Windows loader + Steam setup | Uses the Windows loader build |
| Proton / Windows Mono | ✘ can't attach | — | Runtime is a Windows DLL inside Wine — flagged |
Grab a pre-built package, or build from source on GitHub. Injection needs the tiny privileged helper installed once.
chmod +x Zyringe.AppImage ./Zyringe.AppImage
sudo apt install ./Zyringe.deb
# 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.
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.
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.
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.
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.
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.