Blog. Just Blog

Как определить уровень UAC своего процесса

07.08.2022 | Категория: Образ мышления: Assembler | Автор: ManHunter
Как известно, контроль учетных записей (UAC) является основополагающим компонентом общей концепции безопасности Microsoft. UAC помогает уменьшить воздействие вредоносных программ и защищать данные от несанкционированного доступа. Если для работы ваших приложений понадобится доступ к защищенным объектам, то система выдаст соответствующее предупреждение с запросом о предоставлении таких прав. Особенно это актуально для системы Win10 и выше, где Проводник всегда запускается в контексте безопасности обычного пользователя и, соответственно, все запущенные в нем процессы также будут иметь обычные права. Для повышения прав приложения можно запускать от имени Администратора.

Для того, чтобы определить, как именно было запущено ваше приложение, то есть в нормальном режиме или от имени Администратора, есть специальные функции. Но сперва, как обычно, не известные FASM константы.
  1. TOKEN_QUERY_SOURCE = 0x0010
  2. TOKEN_QUERY        = 8h
  3. TokenElevationType = 18
  4.  
  5. TokenElevationTypeDefault = 1
  6. TokenElevationTypeFull    = 2
  7. TokenElevationTypeLimited = 3
Теперь осталось открыть токен текущего процесса при помощи функции OpenProcessToken и затем через функцию GetTokenInformation получить из него информацию об уровне доступа:
  1.         invoke  GetCurrentProcess
  2.         invoke  OpenProcessToken,eax,TOKEN_QUERY,hToken
  3.         invoke  GetTokenInformation,[hToken],TokenElevationType,tet,4,dSize
На выходе получим одно из возможных значений: TokenElevationTypeDefault - UAC совсем отключен или процесс запущен от обычного пользователя, не являющегося Администратором. TokenElevationTypeFull - родительский процесс имеет права обычного пользователя, но дочерний процесс был запущен от имени Администратора. TokenElevationTypeLimited - как родительский процесс, так и запущенный, оба имеют права обычного пользователя.

Читать статью целиком »
Просмотров: 308 | Комментариев: 6

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2022
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.11 сек. / MySQL: 1 (0.0159 сек.) / Память: 4.75 Mb
Наверх