2017-02-19 05:48:36 +00:00
|
|
|
/*******************************************************************************
|
|
|
|
*
|
2019-03-21 05:12:02 +00:00
|
|
|
* (C) COPYRIGHT AUTHORS, 2014 - 2019
|
2017-02-19 05:48:36 +00:00
|
|
|
*
|
|
|
|
* TITLE: BASIC.C
|
|
|
|
*
|
2019-03-21 05:12:02 +00:00
|
|
|
* VERSION: 1.40
|
2017-02-19 05:48:36 +00:00
|
|
|
*
|
2019-03-21 05:12:02 +00:00
|
|
|
* DATE: 19 Mar 2019
|
2017-02-19 05:48:36 +00:00
|
|
|
*
|
|
|
|
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
|
|
* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
|
|
|
|
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
|
|
* PARTICULAR PURPOSE.
|
|
|
|
*
|
|
|
|
*******************************************************************************/
|
|
|
|
#include "global.h"
|
|
|
|
|
|
|
|
/*
|
|
|
|
* ScanBasicUacData
|
|
|
|
*
|
|
|
|
* Purpose:
|
|
|
|
*
|
|
|
|
* Query UserSharedData flags, UAC registry values.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
VOID ScanBasicUacData(
|
2019-03-21 05:12:02 +00:00
|
|
|
OUTPUTCALLBACK OutputCallback
|
2017-02-19 05:48:36 +00:00
|
|
|
)
|
|
|
|
{
|
2017-03-02 04:19:49 +00:00
|
|
|
ULONG Flags = 0;
|
2017-02-19 05:48:36 +00:00
|
|
|
LRESULT lRet;
|
|
|
|
HKEY hKey = NULL;
|
|
|
|
|
|
|
|
UAC_BASIC_DATA Data;
|
|
|
|
|
|
|
|
if (OutputCallback == NULL)
|
|
|
|
return;
|
|
|
|
|
2018-07-14 17:15:02 +00:00
|
|
|
if (!NT_SUCCESS(RtlQueryElevationFlags(&Flags)))
|
|
|
|
return;
|
2017-02-19 05:48:36 +00:00
|
|
|
|
|
|
|
RtlSecureZeroMemory(&Data, sizeof(Data));
|
|
|
|
|
2017-03-02 04:19:49 +00:00
|
|
|
Data.Name = T_FLAG_ELEVATION_ENABLED;
|
2017-02-19 05:48:36 +00:00
|
|
|
Data.IsValueBool = TRUE;
|
|
|
|
Data.Value = ((Flags & DBG_FLAG_ELEVATION_ENABLED) > 0);
|
2019-03-21 05:12:02 +00:00
|
|
|
OutputCallback((PVOID)&Data);
|
2017-02-19 05:48:36 +00:00
|
|
|
|
2017-03-02 04:19:49 +00:00
|
|
|
Data.Name = T_FLAG_VIRTUALIZATION_ENABLED;
|
2017-02-19 05:48:36 +00:00
|
|
|
Data.IsValueBool = TRUE;
|
|
|
|
Data.Value = ((Flags & DBG_FLAG_VIRTUALIZATION_ENABLED) > 0);
|
2019-03-21 05:12:02 +00:00
|
|
|
OutputCallback((PVOID)&Data);
|
2017-02-19 05:48:36 +00:00
|
|
|
|
2017-03-02 04:19:49 +00:00
|
|
|
Data.Name = T_FLAG_INSTALLERDETECT_ENABLED;
|
2017-02-19 05:48:36 +00:00
|
|
|
Data.IsValueBool = TRUE;
|
|
|
|
Data.Value = ((Flags & DBG_FLAG_INSTALLER_DETECT_ENABLED) > 0);
|
2019-03-21 05:12:02 +00:00
|
|
|
OutputCallback((PVOID)&Data);
|
2017-02-19 05:48:36 +00:00
|
|
|
|
2017-03-02 04:19:49 +00:00
|
|
|
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, T_UAC_SETTINGS_KEY, 0, KEY_READ, &hKey);
|
2017-02-19 05:48:36 +00:00
|
|
|
if (lRet == ERROR_SUCCESS) {
|
|
|
|
|
2017-03-02 04:19:49 +00:00
|
|
|
RtlSecureZeroMemory(&Data, sizeof(Data));
|
|
|
|
lRet = supRegReadDword(hKey, T_UAC_PROMPT_BEHAVIOR, &Data.Value);
|
2017-02-19 05:48:36 +00:00
|
|
|
if (lRet == ERROR_SUCCESS) {
|
2017-03-02 04:19:49 +00:00
|
|
|
Data.Name = T_UAC_PROMPT_BEHAVIOR;
|
2019-03-21 05:12:02 +00:00
|
|
|
OutputCallback((PVOID)&Data);
|
2017-02-19 05:48:36 +00:00
|
|
|
}
|
|
|
|
|
2017-03-02 04:19:49 +00:00
|
|
|
Data.Value = 0;
|
|
|
|
lRet = supRegReadDword(hKey, T_UAC_RESTRICTED_AUTOAPPROVE, &Data.Value);
|
|
|
|
if (lRet == ERROR_SUCCESS) {
|
|
|
|
Data.Name = T_UAC_RESTRICTED_AUTOAPPROVE;
|
2019-03-21 05:12:02 +00:00
|
|
|
OutputCallback((PVOID)&Data);
|
2017-03-02 04:19:49 +00:00
|
|
|
}
|
2017-02-19 05:48:36 +00:00
|
|
|
|
2017-03-02 04:19:49 +00:00
|
|
|
Data.Value = 0;
|
|
|
|
lRet = supRegReadDword(hKey, T_UAC_AUTOAPPROVEIC, &Data.Value);
|
2017-02-19 05:48:36 +00:00
|
|
|
if (lRet == ERROR_SUCCESS) {
|
2017-03-02 04:19:49 +00:00
|
|
|
Data.Name = T_UAC_AUTOAPPROVEIC;
|
2019-03-21 05:12:02 +00:00
|
|
|
OutputCallback((PVOID)&Data);
|
2017-02-19 05:48:36 +00:00
|
|
|
}
|
|
|
|
|
2018-07-14 17:15:02 +00:00
|
|
|
Data.Value = 0;
|
|
|
|
lRet = supRegReadDword(hKey, T_UAC_AUTOAPPROVEMP, &Data.Value);
|
|
|
|
if (lRet == ERROR_SUCCESS) {
|
|
|
|
Data.Name = T_UAC_AUTOAPPROVEMP;
|
2019-03-21 05:12:02 +00:00
|
|
|
OutputCallback((PVOID)&Data);
|
2018-07-14 17:15:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
Data.Value = 0;
|
|
|
|
lRet = supRegReadDword(hKey, T_UAC_AUTOAPPROVEHARDCLAIMS, &Data.Value);
|
|
|
|
if (lRet == ERROR_SUCCESS) {
|
|
|
|
Data.Name = T_UAC_AUTOAPPROVEHARDCLAIMS;
|
2019-03-21 05:12:02 +00:00
|
|
|
OutputCallback((PVOID)&Data);
|
2018-07-14 17:15:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
Data.Value = 0;
|
|
|
|
lRet = supRegReadDword(hKey, T_UAC_ENABLESECUREUIPATHS, &Data.Value);
|
|
|
|
if (lRet == ERROR_SUCCESS) {
|
|
|
|
Data.Name = T_UAC_ENABLESECUREUIPATHS;
|
2019-03-21 05:12:02 +00:00
|
|
|
OutputCallback((PVOID)&Data);
|
2018-07-14 17:15:02 +00:00
|
|
|
}
|
|
|
|
|
2017-03-02 04:19:49 +00:00
|
|
|
Data.Value = 0;
|
|
|
|
lRet = supRegReadDword(hKey, T_UAC_SECURE_DESKTOP, &Data.Value);
|
2017-02-19 05:48:36 +00:00
|
|
|
if (lRet == ERROR_SUCCESS) {
|
2017-03-02 04:19:49 +00:00
|
|
|
Data.Name = T_UAC_SECURE_DESKTOP;
|
2017-02-19 05:48:36 +00:00
|
|
|
Data.IsValueBool = TRUE;
|
2019-03-21 05:12:02 +00:00
|
|
|
OutputCallback((PVOID)&Data);
|
2017-02-19 05:48:36 +00:00
|
|
|
}
|
2017-03-02 04:19:49 +00:00
|
|
|
|
2017-02-19 05:48:36 +00:00
|
|
|
RegCloseKey(hKey);
|
|
|
|
}
|
|
|
|
}
|