🌐 AI搜索 & 代理 主页
Skip to content
forked from MonoMod/MonoMod

You're probably looking for the main MonoMod repo. GitHub URL redirects broke.

License

Notifications You must be signed in to change notification settings

0x0ade/MonoMod-wip

 
 

Repository files navigation

MonoMod

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

Build and Test

| NuGet: Utils | NuGet: RuntimeDetour | NuGet: HookGen | |--|--|--|--|--| | Utils | RuntimeDetour | HookGen | | Version | Version | Version |

... or download fresh build artifacts for the last commit.

Sections


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!

About

You're probably looking for the main MonoMod repo. GitHub URL redirects broke.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 97.5%
  • Assembly 1.5%
  • JavaScript 0.4%
  • C++ 0.3%
  • Dockerfile 0.1%
  • PowerShell 0.1%
  • Other 0.1%