Awesome Open Source
Awesome Open Source


A Windows virtual memory editing library with support for pattern scanning.


  • Allocate memory
  • Free memory
  • Protect memory
  • Read memory
  • Write memory

Pattern Scanning Features

  • Support for wildcard bytes
  • A Bower-Moore-Horspool algorithm implementation for fast scanning, particularly for large patterns


  • Download and install Jupiter using NuGet


The example below describes a basic implementation of the library

using Jupiter;

using (var memoryModule = new MemoryModule(processName))
    // Allocate a region of virtual memory in the process

    var regionAddress = memoryModule.AllocateVirtualMemory(sizeof(int), MemoryProtection.ReadWrite);

    // Write a value into the newely allocated region

    memoryModule.WriteVirtualMemory(regionAddress, 25);

    // Scan for the value we just wrote into memory

    var patternAddresses = memoryModule.PatternScan(BitConverter.GetBytes(25));

    // Read the value back

    var value = memoryModule.ReadVirtualMemory<int>(regionAddress);

    // Free the region of virtual memory



You can use a process ID instead of a process name.

var memoryModule = new MemoryModule(processId)

You can specify an address in which you want to allocate a region of virtual memory.

var regionAddress = memoryModule.AllocateVirtualMemory(pointer, sizeof(int), MemoryProtection.ReadWrite);

You can read an array of bytes instead of a structure.

var bytes = memoryModule.ReadVirtualMemory(regionAddress, bytesToRead);

You can write an array of bytes instead of a structure.

memoryModule.WriteVirtualMemory(regionAddress, new byte[] {0x19, 0xF0, 0x00, 0x2A});

You can use a string with wildcards as the pattern for pattern scanning.

memoryModule.PatternScan("19 F0 ?? 2A");

You can specify a base address in which the pattern scanning should start at to allow quicker scans.

memoryModule.PatternScan(pointer, BitConverter.GetBytes(25));


  • If no memory protection constant is specified when allocating virtual memory, ExecuteReadWrite will be used.

  • Pattern scanning with a small pattern may take a long time depending on the speed of your CPU.


Pull requests are welcome.

For large changes, please open an issue first to discuss what you would like to contribute.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
c-sharp (11,112
reverse-engineering (423
memory (97

Find Open Source By Browsing 7,000 Topics Across 59 Categories