Есть адрес памяти 0x7C4540, и я хочу записать/получить из него значение. Как мне это сделать в C#?
Во-первых разрешите "Небезопасный код" в настройках проекта.
Затем создайте функцию помеченную unsafe.
Вот пример считывания числа (int32) из памяти:
private static unsafe void Test()
{
var ptr = (int*) 0x7C4540;
var value = *ptr;
Console.WriteLine($"Считали число: {value}");
}
Для кросс-платформенности вам нужен тип IntPtr.
А дальше... using System.Runtime.InteropServices
Marshal.ReadByte, Marshal.Readxxx, Marshal.Writexxx, и другие ф-ции из Marshal.
IntPtr p = new IntPtr(0xfedcba1);
byte b = Marshal.ReadByte(p); // Может вызвать сбой
Marshal.WriteByte(p,b);// Может вызвать сбой
Не смотря на то, что данный метод позволяет обойтись без пометки unsafe, при неправильной работе получите Access Violation и другие интересные ошибки, и даже креш VM.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости