Ответ 1
То, что вы ищете, это список областей памяти, который в основном представляет собой список адресов пары/области памяти.
Что вы должны сделать:
- получить дескриптор целевого процесса, используя его идентификатор процесса (
PID
), используяOpenProcess
- вызовите функцию
VirtualQueryEx
до тех пор, пока вы не достигнете конца памяти (т.е. когда результат метода больше 0) - закрыть дескриптор процесса, который вы открыли.
Запустите VirtualQueryEx
с lpAddress
как 0x0
. Это вернет структуру MEMORY_BASIC_INFORMATION
, которая содержит как свойства BaseAddress
, так и RegionSize
(это представляет собой пространство памяти, которое вы можете прочитать). Затем увеличьте параметр lpAdress
значением RegionSize
, поэтому следующий вызов VirtualQueryEx
вернет следующую область... и т.д.
Google OpenProcess
, CloseHandle
, VirtualQueryEx
и MEMORY_BASIC_INFORMATION
, чтобы вы могли использовать различные объявления P/Invoke, поэтому вы можете вызывать эти функции Win32 с С#.