NProcess is a .NET library used to easily interact with local or remote processes.
Since NProcess is still in development, much features will be added later
- Memory reading/writting
- Pattern scanning
- Window/Keyboard/Mouse interaction
Using Package Manager
Install-Package NProcess -Version 1.0.1
Using .NET CLI
dotnet add package NProcess -Version 1.0.1
Using Package Reference
<PackageReference Include="NProcess" Version="1.0.1" />
Read/Write remote process memory using static address and offsets
public static void Main(string[] args) { // Find our target process Process source = Process.GetProcessesByName("NostaleClientX").FirstOrDefault(); if (source == null) { return; } // Create new RemoteProcess instance to interact with previously found process using (var process = new RemoteProcess(source)) { // Get process main module IModule module = process.MainModule; // Get pointers using static address and offsets IntPtr hpPointer = module.GetPointer(new IntPtr(0x895898), 0xC4, 0x4C); // Read value from pointer int hp = module.ReadMemory<int>(hpPointer); // Write value to pointer module.WriteMemory<int>(hpPointer, 2500); } }
Read/Write local process memory using pattern and offsets
public static void Main(string[] args) { // Create new LocalProcess to interact with our process (used if you dll is injected into process) using (var process = new LocalProcess()) { // Get process main module IModule module = process.MainModule; // Get pointer using pattern and offsets IntPtr mpPointer = module.GetPointer(new Pattern("8D 55 E0 A1 ?? ?? ?? ?? 8B 00 8B 80", 4), 0xC8, 0x4C); // Read value from pointer int mp = module.ReadMemory<int>(mpPointer); // Write value to pointer module.WriteMemory<int>(mpPointer, 2500); } }
Interact with window/keyboard/mouse
public static void Main(string[] args) { // Find our target process Process source = Process.GetProcessesByName("NostaleClientX").FirstOrDefault(); if (source == null) { return; } using (IProcess process = new RemoteProcess(source)) { // Get window using window name IWindow window = process.GetWindow("NosTale"); if (window == null) { return; } // Change window title window.Title = "NProcess"; // Press enter key and release it directly window.Keyboard.Press(Key.Enter); // Hold A key pressed for 3 seconds window.Keyboard.Hold(Key.A, TimeSpan.FromSeconds(3)); // Click using left button at 200/200 position in window window.Mouse.LeftClick(200, 200); } }