mirror of
https://github.com/decompals/wibo.git
synced 2025-10-16 15:15:10 +00:00
113 lines
3.6 KiB
C++
113 lines
3.6 KiB
C++
#pragma once
|
|
|
|
#include "common.h"
|
|
|
|
struct ACL {
|
|
BYTE AclRevision;
|
|
BYTE Sbz1;
|
|
WORD AclSize;
|
|
WORD AceCount;
|
|
WORD Sbz2;
|
|
};
|
|
|
|
struct ACE_HEADER {
|
|
BYTE AceType;
|
|
BYTE AceFlags;
|
|
WORD AceSize;
|
|
};
|
|
|
|
struct ACCESS_ALLOWED_ACE {
|
|
ACE_HEADER Header;
|
|
DWORD Mask;
|
|
DWORD SidStart;
|
|
};
|
|
|
|
struct SID_IDENTIFIER_AUTHORITY {
|
|
BYTE Value[6];
|
|
};
|
|
|
|
struct SECURITY_DESCRIPTOR {
|
|
BYTE Revision;
|
|
BYTE Sbz1;
|
|
WORD Control;
|
|
void *Owner;
|
|
void *Group;
|
|
ACL *Sacl;
|
|
ACL *Dacl;
|
|
};
|
|
|
|
using PSECURITY_DESCRIPTOR = SECURITY_DESCRIPTOR *;
|
|
using PACL = ACL *;
|
|
using PSID_IDENTIFIER_AUTHORITY = SID_IDENTIFIER_AUTHORITY *;
|
|
using SECURITY_INFORMATION = DWORD;
|
|
|
|
constexpr DWORD SECURITY_DESCRIPTOR_REVISION = 1;
|
|
constexpr WORD SE_DACL_PRESENT = 0x0004;
|
|
constexpr WORD SE_DACL_DEFAULTED = 0x0008;
|
|
|
|
constexpr BYTE ACL_REVISION1 = 1;
|
|
constexpr BYTE ACL_REVISION2 = 2;
|
|
constexpr BYTE ACL_REVISION3 = 3;
|
|
constexpr BYTE ACL_REVISION4 = 4;
|
|
constexpr BYTE ACL_REVISION = ACL_REVISION2;
|
|
constexpr BYTE ACL_REVISION_DS = ACL_REVISION4;
|
|
constexpr BYTE ACCESS_ALLOWED_ACE_TYPE = 0x00;
|
|
constexpr BYTE SID_MAX_SUB_AUTHORITIES = 15;
|
|
constexpr BYTE SID_REVISION = 1;
|
|
|
|
struct TOKEN_PRIVILEGES;
|
|
using PTOKEN_PRIVILEGES = TOKEN_PRIVILEGES *;
|
|
|
|
enum TOKEN_INFORMATION_CLASS : DWORD {
|
|
TokenUser = 1,
|
|
TokenGroups,
|
|
TokenPrivileges,
|
|
TokenOwner,
|
|
TokenPrimaryGroup,
|
|
TokenDefaultDacl,
|
|
TokenSource,
|
|
TokenType,
|
|
TokenImpersonationLevel,
|
|
TokenStatistics,
|
|
TokenRestrictedSids,
|
|
TokenSessionId,
|
|
TokenGroupsAndPrivileges,
|
|
TokenSessionReference,
|
|
TokenSandBoxInert,
|
|
TokenAuditPolicy,
|
|
TokenOrigin,
|
|
TokenElevationType,
|
|
TokenLinkedToken,
|
|
TokenElevation = 20,
|
|
};
|
|
|
|
namespace advapi32 {
|
|
|
|
BOOL WIN_FUNC InitializeAcl(PACL pAcl, DWORD nAclLength, DWORD dwAclRevision);
|
|
BOOL WIN_FUNC AddAccessAllowedAce(PACL pAcl, DWORD dwAceRevision, DWORD AccessMask, PSID pSid);
|
|
BOOL WIN_FUNC FindFirstFreeAce(PACL pAcl, LPVOID *pAce);
|
|
PSID_IDENTIFIER_AUTHORITY WIN_FUNC GetSidIdentifierAuthority(PSID pSid);
|
|
PUCHAR WIN_FUNC GetSidSubAuthorityCount(PSID pSid);
|
|
PDWORD WIN_FUNC GetSidSubAuthority(PSID pSid, DWORD nSubAuthority);
|
|
BOOL WIN_FUNC ImpersonateLoggedOnUser(HANDLE hToken);
|
|
BOOL WIN_FUNC DuplicateTokenEx(HANDLE hExistingToken, DWORD dwDesiredAccess, void *lpTokenAttributes,
|
|
DWORD ImpersonationLevel, DWORD TokenType, PHANDLE phNewToken);
|
|
BOOL WIN_FUNC CopySid(DWORD nDestinationSidLength, PSID pDestinationSid, PSID pSourceSid);
|
|
BOOL WIN_FUNC InitializeSid(PSID sid, PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount);
|
|
BOOL WIN_FUNC EqualSid(PSID pSid1, PSID pSid2);
|
|
BOOL WIN_FUNC GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbDaclPresent, PACL *pDacl,
|
|
LPBOOL lpbDaclDefaulted);
|
|
BOOL WIN_FUNC SetKernelObjectSecurity(HANDLE Handle, SECURITY_INFORMATION SecurityInformation,
|
|
PSECURITY_DESCRIPTOR SecurityDescriptor);
|
|
BOOL WIN_FUNC InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD dwRevision);
|
|
BOOL WIN_FUNC SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR pSecurityDescriptor, BOOL bDaclPresent, PACL pDacl,
|
|
BOOL bDaclDefaulted);
|
|
BOOL WIN_FUNC GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass,
|
|
LPVOID TokenInformation, DWORD TokenInformationLength, LPDWORD ReturnLength);
|
|
BOOL WIN_FUNC AdjustTokenPrivileges(HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState,
|
|
DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, LPDWORD ReturnLength);
|
|
BOOL WIN_FUNC SetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass,
|
|
LPVOID TokenInformation, DWORD TokenInformationLength);
|
|
|
|
} // namespace advapi32
|