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.1Using .NET CLI
dotnet add package NProcess -Version 1.0.1Using Package Reference
<PackageReferenceInclude="NProcess"Version="1.0.1" />Read/Write remote process memory using static address and offsets
publicstaticvoidMain(string[]args){// Find our target processProcesssource=Process.GetProcessesByName("NostaleClientX").FirstOrDefault();if(source==null){return;}// Create new RemoteProcess instance to interact with previously found processusing(varprocess=newRemoteProcess(source)){// Get process main moduleIModulemodule=process.MainModule;// Get pointers using static address and offsetsIntPtrhpPointer=module.GetPointer(newIntPtr(0x895898),0xC4,0x4C);// Read value from pointerinthp=module.ReadMemory<int>(hpPointer);// Write value to pointermodule.WriteMemory<int>(hpPointer,2500);}}Read/Write local process memory using pattern and offsets
publicstaticvoidMain(string[]args){// Create new LocalProcess to interact with our process (used if you dll is injected into process)using(varprocess=newLocalProcess()){// Get process main moduleIModulemodule=process.MainModule;// Get pointer using pattern and offsetsIntPtrmpPointer=module.GetPointer(newPattern("8D 55 E0 A1 ?? ?? ?? ?? 8B 00 8B 80",4),0xC8,0x4C);// Read value from pointerintmp=module.ReadMemory<int>(mpPointer);// Write value to pointermodule.WriteMemory<int>(mpPointer,2500);}}Interact with window/keyboard/mouse
publicstaticvoidMain(string[]args){// Find our target processProcesssource=Process.GetProcessesByName("NostaleClientX").FirstOrDefault();if(source==null){return;}using(IProcessprocess=newRemoteProcess(source)){// Get window using window nameIWindowwindow=process.GetWindow("NosTale");if(window==null){return;}// Change window titlewindow.Title="NProcess";// Press enter key and release it directlywindow.Keyboard.Press(Key.Enter);// Hold A key pressed for 3 secondswindow.Keyboard.Hold(Key.A,TimeSpan.FromSeconds(3));// Click using left button at 200/200 position in windowwindow.Mouse.LeftClick(200,200);}}