Как определить, где исполняемый код процесса начинается и заканчивается при загрузке в память? - PullRequest
1 голос
/ 04 января 2012

Скажите, что у меня есть приложение TestApp.exe Пока запущен TestApp.exe, я хочу, чтобы отдельная программа могла читать исполняемый код, который находится в памяти. Я хотел бы игнорировать стек, кучу и все остальное, что является тангенциальным.

Другими словами, я спрашиваю, как определить, где находится со стороны памяти эквивалент двоичных данных .exe на диске. Я понимаю, что это не вставка в память 1: 1.

Редактировать: я думаю, что то, что я прошу, показано как Изображение на следующем скриншоте vmmap.exe http://i.imgur.com/bARgC.png

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

Редактировать: Кроме того, не уверен, почему я на -1 для этого вопроса. Если мне нужно что-то прояснить, пожалуйста, дайте мне знать.

Ответы [ 3 ]

0 голосов
/ 08 января 2012

нет необходимости вводить DLL использовать родной API, подключая API

0 голосов
/ 17 февраля 2012

Я изучил тонну, делая этот проект.Я закончил разбор PE-заголовка и использовал эту информацию для маршрутизации.В конце концов, я выполнил то, что поставил перед собой, и в результате стал более осведомленным.

0 голосов
/ 05 января 2012

Внедрить DLL в целевой процесс и вызвать GetModuleHandle с именем исполняемого файла. Это будет указывать на его PE-заголовок, который был загружен в память. Получив эту информацию, вы можете вручную проанализировать PE-заголовок и найти, где находится раздел .text относительно основного адреса изображения в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...