Есть адрес памяти 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.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Много где читал, но везде или свайп, или просто нажатие на экранКак сделать, чтобы пользователь должен был удерживать палец на экране и перемещать...
Хочу сделать в уголку экрана время которое постоянно обновляется, но при этом чтобы работала основная программаПрограмма это простая менюшка
Необходимо запустить скрипт написанный на Bash из программы написанной на C#net core 2