Скажите, что у меня есть приложение TestApp.exe
Пока запущен TestApp.exe, я хочу, чтобы отдельная программа могла читать исполняемый код, который находится в памяти. Я хотел бы игнорировать стек, кучу и все остальное, что является тангенциальным.
Другими словами, я спрашиваю, как определить, где находится со стороны памяти эквивалент двоичных данных .exe на диске. Я понимаю, что это не вставка в память 1: 1.
Редактировать: я думаю, что то, что я прошу, показано как Изображение на следующем скриншоте vmmap.exe
Редактировать: я могу получить из памяти всю память, помеченную любым флагом защиты Execute * (PAGE_EXECUTE и т. Д.), Используя VirtualQueryEx и ReadProcessMemory. Есть несколько проблем с этим. Сначала я собираю около 2 мегабайт данных для notepad.exe, который представляет собой файл размером 189 килобайт на диске. Все, что я хватаю, имеет флаг защиты PAGE_EXECUTE. Во-вторых, если я запускаю его на другой 64-битной машине Win7, я получаю те же данные, только разделенные пополам и в другом порядке. Я мог бы использовать некоторые экспертные рекомендации. :)
Редактировать: Кроме того, не уверен, почему я на -1 для этого вопроса. Если мне нужно что-то прояснить, пожалуйста, дайте мне знать.