Вы можете прочитать память отладчика с помощью Win32 API.Для этого вам нужно импортировать две функции kernel32.dll в ваш класс C #: ReadProcessMemory и OpenProcess
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool ReadProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
[Out] byte[] lpBuffer,
int dwSize,
out int lpNumberOfBytesRead
);
[DllImport("kernel32.dll")]
public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
[Flags]
enum ProcessAccessFlags : uint
{
All = 0x001F0FFF,
Terminate = 0x00000001,
CreateThread = 0x00000002,
VMOperation = 0x00000008,
VMRead = 0x00000010,
VMWrite = 0x00000020,
DupHandle = 0x00000040,
SetInformation = 0x00000200,
QueryInformation = 0x00000400,
Synchronize = 0x00100000
}
Идентификатор процесса можно получить из вашего экземпляра DTE и адреса памяти путем оценки & myobject.
int pid = _applicationObject.Debugger.CurrentProcess.ProcessID;
IntPtr phandle = OpenProcess((int)ProcessAccessFlags.VMRead, true, pid);
byte[] buffer = new byte[size];
int read;
ReadProcessMemory(phandle, (IntPtr)addr, buffer, (int)size, out read);
Имейте в виду, что это работает только в том случае, если ваш заемщик является 32-битным процессом.В противном случае вы можете использовать 64-битный вспомогательный процесс для чтения памяти вашего дебютанта (почему Visual Studio все еще 32-битный процесс?).Используйте сокеты для связи с этим процессом.