Различные дампы памяти, созданные внутренним / внешним процессом - PullRequest
2 голосов
/ 06 мая 2011

В последнее время я поиграл с дампом памяти и наткнулся на то, что я до конца не понял.

Если у меня есть процесс и дамп содержимого его памяти с использованием VirtualQueryEx & ReadProcessMemory для получения данных исбросьте его в файл, все в порядке.Тем временем я пытался сделать то же самое, будучи внутренним по отношению к процессу и выполняя VirtualQuery и просто сбрасывая содержимое возвращаемых указателей.Я смог сделать это, передав одну из библиотек DLL процесса, на котором я тестирую.Теперь проблема в том, что эти два дампа памяти различны (отсутствуют области из дампа, созданного внутри процесса). Может ли кто-нибудь объяснить мне, почему это происходит?Windows XP SP3 + Visual Studio 2008 Большое спасибо.

1 Ответ

0 голосов
/ 06 мая 2011

Что тебе нужно сбросить?Говоря обо всех страницах памяти, которые выделяются процессом, я думаю, что вы можете получить разные значения из-за внутреннего состояния процесса, которое (в общем) уникально для времени.Кроме того, если вы выгружаете память процесса за пределы процесса, тогда код демппера не находится в адресном пространстве процесса демпинга, а если вы выгружаете процесс изнутри процесса, процесс теперь включает код демпфера.Поэтому может быть полезно сбросить только определенное количество страниц, принадлежащих приложению процесса или DLL.

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