Просмотреть контекст активации Windows запущенного процесса?

Есть ли способ просмотреть контекст активации работающего процесса Windows?

В идеале, когда я говорю "просмотреть", я имею в виду проверить его понятным для человека способом, например, чтобы увидеть / подтвердить, какие DLL были загружены и т. Д.

Я воображаю, что какой-то отладчик может подключиться к запущенному процессу и затем отобразить эту информацию. Но может пригодиться любой инструмент - отладчик, файл журнала, даже использование API контекста активации для проверки и т. Д.

1 ответ

Одним из основных способов получения подробностей контекста активации является использование QueryActCtxW() API. Этот API может использоваться для запроса множества деталей. Хороший образец доступен здесь.

В примере кода обратите внимание на нижнюю строку.

// Request the first file in the root assembly
QueryIndex.ulAssemblyIndex = 1;

QueryActCtxW() API можно вызывать многократно, увеличивая значение ulAssemblyIndex до тех пор, пока он возвращает успех. Каждый успешный вызов вернет запрошенные детали сборки, представленной ulAssemblyIndex,

Выше будет работать, когда QueryActCtxW() вызывается изнутри процесса.

Теперь, если вы хотите получить подробную информацию о другом процессе, одна идея - обернуть логику извлечения контекста активации в DLL. DLL может записать данные в файл на диске или передать его в Viewer. Затем внедрите эту DLL в данный процесс с помощью методов, таких как DLL Injection или с помощью API CreateRemoteThread ().

Другие вопросы по тегам