Я пишу программу, которая создает процесс, а затем читает некоторые биты из его памяти.Чтобы получить адрес, я использовал отладчик OllyDbg.
using System;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace winapi
{
class Program
{
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool ReadProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
[Out] byte[] lpBuffer,
int dwSize,
out UInt32 lpNumberOfBytesRead
);
static void Main()
{
Console.WriteLine("WinAPI test");
Console.WriteLine("---");
Console.WriteLine();
var startInfo = new ProcessStartInfo { FileName = "Program.exe" };
Process p = Process.Start(startInfo);
var bytes = new byte[4];
uint read = 0;
p.WaitForInputIdle();
//
while (read == 0)
{
ReadProcessMemory(p.MainWindowHandle, (IntPtr)0x052f820, bytes, bytes.Length, out read);
System.Threading.Thread.Sleep(10);
}
Console.WriteLine(read.ToString());
Console.ReadLine();
}
}
}
после начала процесса мой цикл никогда не заканчивается.данные отладчика:
0052F820 | 75 2F 3F 72 61 67 65 5F 69 64 3D 31 33
где моя ошибка?