SkillAgentSearch skills...

MemoryModule.NET

Loads a native Windows assembly... right from your .NET embedded resources. Works on all modern .NET platforms.

Install / Use

/learn @trungnt2910/MemoryModule.NET
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

MemoryModule.NET

Discord Invite  BuildStatus | Package | Version | | ---- | ---- | | Cross platform | CrossPlatformShield | | Windows | WindowsShield | | Linux | Coming soon (see the Abstractions branch) | | MacOS | Coming soon (see the Abstractions branch) |

Loads unmanaged libraries right from your embedded resources! Works on Windows and Linux only, both on .NET Framework and .NET Core (and of course .NET 5.0+)

Features:

  • Load x86 and x64 assemblies, right from the memory. No P/Invoke, no temporary files.
  • Correctly resolves loaded unmanaged libraries, and exposes a AssemblyResolve event for users to manually handle it.
  • Linux x86 (32 and 64 bit) support, through interoperation with glibc.

Sample code:

using MemoryModule;

        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
        delegate int addNumberProc(int a, int b);

            var asmBytes = File.ReadAllBytes($"SampleDLL.dll");

            var asm = NativeAssembly.Load(asmBytes);

            Console.WriteLine("Successfully loaded library.");
            var addNumberFunc = asm.GetDelegate<addNumberProc>("addNumbers");
            var rand = new Random();
            int num1 = rand.Next(0, 20);
            int num2 = rand.Next(0, 20);
            Console.WriteLine($"{num1}+{num2}={addNumberFunc(num1, num2)}");

            var greetFunc = asm.GetDelegate<GreetProc>("Greet");
            greetFunc();

            asm.Dispose();

See the DemoApp for more details.

Packages

Integration with OS internals

MemoryModule.NET, unlike other projects of the MemoryModule family, aims to have a simple design and a consistent interface across platforms. (see the Abstractions branch for an overview of the future of MemoryModule.NET).

Therefore, features requiring a high amount of integration, like TLS support (#34) or Interoperability with native APIs (#42) will not be included in MemoryModule.NET in the foreseeable future.

However, MemoryModule.NET should be able to bootstrap other native MemoryModules. For example, C# applications targeting only Windows can enjoy the above features by bootstrapping MemoryModulePP, as demonstrated in this repo.

Known issues

  • Windows: Beware of ~~64-bit~~ dll files compiled using g++: https://github.com/fancycode/MemoryModule/issues/108. These files must be compiled using -static-libgcc and -static-libstdc++ to load properly, in both the original C version and this version.
  • Windows: Resources are not supported.
  • Linux: Support is limited. While basic C/C++ libraries, such as libcurl, can be properly loaded, MemoryModule.NET may not work with other advanced libraries that contain unknown ELF relocations. If that's the case, please open an issue.
  • Linux: As MemoryModule.NET relies on certain glibc data structures, it may fail on systems that use beta/custom glibc version. Please open an issue for support.

Community

This repo is a part of Project Reality.

Need help using this project? Join me on Discord, and let's find a solution together.

Related Skills

View on GitHub
GitHub Stars48
CategoryDevelopment
Updated1mo ago
Forks13

Languages

C#

Security Score

95/100

Audited on Feb 17, 2026

No findings