Skip to content
forked from MonoMod/MonoMod

C# modding swiss army knife, powered by cecil (WASM port)

License

Notifications You must be signed in to change notification settings

r58Playz/MonoMod

This branch is 14 commits ahead of, 33 commits behind MonoMod/MonoMod:reorganize.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0a6edb8 · Feb 24, 2025
Sep 6, 2024
Nov 13, 2024
May 11, 2020
Nov 13, 2024
Sep 6, 2024
Sep 6, 2024
Nov 13, 2024
Feb 24, 2025
Sep 9, 2024
May 15, 2024
Mar 11, 2024
Jun 13, 2024
Nov 9, 2022
Mar 28, 2022
Jan 10, 2024
Mar 28, 2022
Dec 5, 2020
Sep 9, 2024
Mar 28, 2022
Jan 27, 2025
Nov 13, 2024
Aug 29, 2022
May 15, 2024

Repository files navigation

MonoMod

MonoMod Discord General purpose .NET assembly modding "basework", powered by cecil.
MIT-licensed.

Sections


WASM

Usage instructions:

  • Add a NativeFileReference to liba.o from my FNA-WASM-Build fork and use the patched threaded runtime from there.
  • Import MonoMod from this repo
  • Use MonoMod normally!

Introduction

MonoMod is a modding "basework" (base tools + framework).
Mods / mod loaders for the following games are already using it in one way or another:

It consists of the following modular components:

  • MonoMod.Patcher: The ahead-of-time MonoMod patcher and relinker.
  • MonoMod.Utils: Utilities and helpers that not only benefit MonoMod, but also mods in general. It contains classes such as PlatformDetection, FastReflectionHelper, DynamicMethodHelper, DynamicMethodDefinition, DynDll and the ModInterop namespace.
  • MonoMod.DebugIL: Enable IL-level debugging of third-party assemblies in Visual Studio / MonoDevelop.
  • MonoMod.Core: The core upon which runtime method detouring is built.
  • MonoMod.RuntimeDetour: A flexible and easily extensible runtime detouring library, supporting x86/x86_64 on .NET Framework, .NET Core, and Mono.
  • MonoMod.RuntimeDetour.HookGen: A utility to generate a "hook helper .dll" for any IL assembly. This allows you to hook methods in runtime mods as if they were events. Built with MonoMod and RuntimeDetour.
  • MonoMod.Backports: A collection of BCL backports, enabling the use of many new language and library features, as far back as .NET Framework 3.5.

Why?

  • Cross-version compatibility, even with obfuscated assemblies.
  • Cross-platform compatibility, even if the game uses another engine (f.e. Celeste uses XNA on Windows, FNA on macOS and Linux).
  • Use language features which otherwise wouldn't be supported (f.e. C# 7 in Unity 4.3).
  • Patch on the player's machine with a basic mod installer. No need to pre-patch, no redistribution of game data, no copyright violations.
  • With HookGen, runtime hooks are as simple as On.Namespace.Type.Method += (orig, a, b, c) => { /* ... */ }
  • With HookGen IL, you can manipulate IL at runtime and even inline C# delegate calls between instructions.
  • Modularity allows you to mix and match. Use only what you need!

Special thanks to my patrons on Patreon:

About

C# modding swiss army knife, powered by cecil (WASM port)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 98.9%
  • Other 1.1%