Нужно ли корректировать привилегии токена для успешного вызова CreateRemoteThread?

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

Техника, которую я использую, заключается в реализации функции в целевом приложении, которая генерирует трассировки стека для всех потоков вместе с другой диагностической информацией. Затем он записывается в файл с отображением в памяти. Я также создаю служебное приложение, которое используется для запуска создания отчета о диагностике, а затем считывания из файла, отображенного в памяти.

Поскольку ожидается, что целевое приложение не работает, служебная программа не может отправить ему сообщение для запуска сбора диагностики. Вместо этого я используюCreateRemoteThread так что я могу быть уверен, что получу живой поток, чтобы сделать работу.

Обратите внимание, что это отличается от методов внедрения DLL, которые обычно используютLoadLibrary в качестве темы для процессаCreateRemoteThread, Моя ветка proc является точкой входа в целевое приложение. Поэтому мне не нужно звонитьWriteProcessMemory.

Я реализовал это, и в моих тестовых средах это работает хорошо. Согласно документацииCreateRemoteThreadМне нужен дескриптор процесса со следующими правами доступа:

PROCESS_CREATE_THREAD, PROCESS_QUERY_INFORMATION, PROCESS_VM_OPERATION, PROCESS_VM_WRITE, and PROCESS_VM_READ

Итак, я передал эти флаги при звонкеOpenProcess.

Теперь, наконец, к моему вопросу: какие привилегии мне нужно иметь, чтобы мой токен был необходим для вызоваOpenProcess преуспеть?

В моей тестовой среде (Windows 7, UAC включен, пользователь с правами администратора) у меня не возникло проблем с токеном по умолчанию. Я видел различные примеры кода, который получаетSE_DEBUG_NAME привилегия перед звонкомOpenProcess, Я думаю, что это необходимо дляWriteProcessMemory при внедрении DLL и что мне не нужна эта привилегия. Существуют ли сценарии, в которых мне нужно было бы настроить привилегии моего токена?

Я ничего не знаю о безопасности Windows, поэтому я был бы очень признателен за мудрые слова от всех, кто это делает!

Ответы на вопрос(1)

Ваш ответ на вопрос