using System;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Process.NET;
using Process.NET.Memory;
class Program
{
static async Task Main(string[] args)
{
// стартаем процесс если он не заущен
Process process = Process.GetProcessesByName("process.exe").FirstOrDefault();
if (process == null)
{
process = Process.Start("process.exe"); // свой процесс
await Task.Delay(2000);
}
// гетаем экземпляр чтобы в дальнейшем над ним работать
using (var processSharp = new ProcessSharp(process, MemoryType.Remote))
{
// модуль по имени
var module = processSharp.ModuleFactory.GetModuleByName("YourModuleName.dll");
if (module == null)
{
Console.WriteLine("Модуль не найден");
return;
}
// ищем по указателям
IntPtr baseAddress = module.BaseAddress;
var memory = processSharp.Memory;
int offset1 = 0x123456; // твои оффсеты
int offset2 = 0x789ABC;
IntPtr pointerAddress = memory.Read<IntPtr>(baseAddress + offset1);
IntPtr finalAddress = pointerAddress + offset2;
int value = memory.Read<int>(finalAddress);
Console.WriteLine($"value - {value}");
}
}
}