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