Как перечислить модули процесса? - PullRequest
1 голос
/ 19 августа 2010

Мое приложение создает приостановленный процесс, получает информацию о процессе через VirtualQueryEx (), но не может получить информацию о модуле процесса, используя EnumProcessModules ().

Вышеприведенная задача выполняется ТОЛЬКО в том случае, если процесс НЕ создан приостановленным и в отладчике достигнута точка останова (поэтому программа запускается до выполнения вызова).

Я пытаюсь написать очень приличный дизассемблер, и для этого мне нужно запустить целевой процесс приостановленным, но EnumProcessModules () не работает на приостановленных процессах.

Есть ли альтернатива?

1 Ответ

1 голос
/ 19 августа 2010

Я имел дело с чем-то вроде этого несколько лет назад.Если я правильно помню, то, что я в итоге делал, это создание приостановленной задачи, затем GetThreadContext, установите его флаг прерывания, SetThreadContext, возобновите поток (который выполняет одну инструкцию), затем используйте EnumProcessModules.

Конечно, могут быть и другие способы справиться с этим, но, по крайней мере, если память служит, это то, что я придумал в то время, и я, кажется, вспомнил, как она работала.

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