Просмотреть контекст активации 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 ().