|
|
@@ -51,273 +51,298 @@ var (
|
|
|
modnetapi32 = NewLazySystemDLL("netapi32.dll")
|
|
|
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
|
|
|
|
|
- procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW")
|
|
|
- procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource")
|
|
|
- procReportEventW = modadvapi32.NewProc("ReportEventW")
|
|
|
- procOpenSCManagerW = modadvapi32.NewProc("OpenSCManagerW")
|
|
|
- procCloseServiceHandle = modadvapi32.NewProc("CloseServiceHandle")
|
|
|
- procCreateServiceW = modadvapi32.NewProc("CreateServiceW")
|
|
|
- procOpenServiceW = modadvapi32.NewProc("OpenServiceW")
|
|
|
- procDeleteService = modadvapi32.NewProc("DeleteService")
|
|
|
- procStartServiceW = modadvapi32.NewProc("StartServiceW")
|
|
|
- procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus")
|
|
|
- procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW")
|
|
|
- procControlService = modadvapi32.NewProc("ControlService")
|
|
|
- procStartServiceCtrlDispatcherW = modadvapi32.NewProc("StartServiceCtrlDispatcherW")
|
|
|
- procSetServiceStatus = modadvapi32.NewProc("SetServiceStatus")
|
|
|
- procChangeServiceConfigW = modadvapi32.NewProc("ChangeServiceConfigW")
|
|
|
- procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW")
|
|
|
- procChangeServiceConfig2W = modadvapi32.NewProc("ChangeServiceConfig2W")
|
|
|
- procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W")
|
|
|
- procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW")
|
|
|
- procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx")
|
|
|
- procNotifyServiceStatusChangeW = modadvapi32.NewProc("NotifyServiceStatusChangeW")
|
|
|
- procGetLastError = modkernel32.NewProc("GetLastError")
|
|
|
- procLoadLibraryW = modkernel32.NewProc("LoadLibraryW")
|
|
|
- procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW")
|
|
|
- procFreeLibrary = modkernel32.NewProc("FreeLibrary")
|
|
|
- procGetProcAddress = modkernel32.NewProc("GetProcAddress")
|
|
|
- procGetVersion = modkernel32.NewProc("GetVersion")
|
|
|
- procFormatMessageW = modkernel32.NewProc("FormatMessageW")
|
|
|
- procExitProcess = modkernel32.NewProc("ExitProcess")
|
|
|
- procIsWow64Process = modkernel32.NewProc("IsWow64Process")
|
|
|
- procCreateFileW = modkernel32.NewProc("CreateFileW")
|
|
|
- procReadFile = modkernel32.NewProc("ReadFile")
|
|
|
- procWriteFile = modkernel32.NewProc("WriteFile")
|
|
|
- procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult")
|
|
|
- procSetFilePointer = modkernel32.NewProc("SetFilePointer")
|
|
|
- procCloseHandle = modkernel32.NewProc("CloseHandle")
|
|
|
- procGetStdHandle = modkernel32.NewProc("GetStdHandle")
|
|
|
- procSetStdHandle = modkernel32.NewProc("SetStdHandle")
|
|
|
- procFindFirstFileW = modkernel32.NewProc("FindFirstFileW")
|
|
|
- procFindNextFileW = modkernel32.NewProc("FindNextFileW")
|
|
|
- procFindClose = modkernel32.NewProc("FindClose")
|
|
|
- procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle")
|
|
|
- procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx")
|
|
|
- procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW")
|
|
|
- procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW")
|
|
|
- procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW")
|
|
|
- procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW")
|
|
|
- procDeleteFileW = modkernel32.NewProc("DeleteFileW")
|
|
|
- procMoveFileW = modkernel32.NewProc("MoveFileW")
|
|
|
- procMoveFileExW = modkernel32.NewProc("MoveFileExW")
|
|
|
- procGetComputerNameW = modkernel32.NewProc("GetComputerNameW")
|
|
|
- procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW")
|
|
|
- procSetEndOfFile = modkernel32.NewProc("SetEndOfFile")
|
|
|
- procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime")
|
|
|
- procGetSystemTimePreciseAsFileTime = modkernel32.NewProc("GetSystemTimePreciseAsFileTime")
|
|
|
- procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation")
|
|
|
- procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort")
|
|
|
- procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus")
|
|
|
- procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus")
|
|
|
- procCancelIo = modkernel32.NewProc("CancelIo")
|
|
|
- procCancelIoEx = modkernel32.NewProc("CancelIoEx")
|
|
|
- procCreateProcessW = modkernel32.NewProc("CreateProcessW")
|
|
|
- procOpenProcess = modkernel32.NewProc("OpenProcess")
|
|
|
- procShellExecuteW = modshell32.NewProc("ShellExecuteW")
|
|
|
- procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath")
|
|
|
- procTerminateProcess = modkernel32.NewProc("TerminateProcess")
|
|
|
- procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess")
|
|
|
- procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW")
|
|
|
- procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess")
|
|
|
- procGetCurrentThread = modkernel32.NewProc("GetCurrentThread")
|
|
|
- procGetProcessTimes = modkernel32.NewProc("GetProcessTimes")
|
|
|
- procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
|
|
|
- procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject")
|
|
|
- procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects")
|
|
|
- procGetTempPathW = modkernel32.NewProc("GetTempPathW")
|
|
|
- procCreatePipe = modkernel32.NewProc("CreatePipe")
|
|
|
- procGetFileType = modkernel32.NewProc("GetFileType")
|
|
|
- procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW")
|
|
|
- procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext")
|
|
|
- procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom")
|
|
|
- procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW")
|
|
|
- procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW")
|
|
|
- procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW")
|
|
|
- procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW")
|
|
|
- procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
|
|
|
- procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
|
|
|
- procGetTickCount64 = modkernel32.NewProc("GetTickCount64")
|
|
|
- procSetFileTime = modkernel32.NewProc("SetFileTime")
|
|
|
- procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW")
|
|
|
- procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW")
|
|
|
- procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW")
|
|
|
- procGetCommandLineW = modkernel32.NewProc("GetCommandLineW")
|
|
|
- procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW")
|
|
|
- procLocalFree = modkernel32.NewProc("LocalFree")
|
|
|
- procSetHandleInformation = modkernel32.NewProc("SetHandleInformation")
|
|
|
- procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers")
|
|
|
- procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW")
|
|
|
- procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW")
|
|
|
- procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW")
|
|
|
- procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW")
|
|
|
- procMapViewOfFile = modkernel32.NewProc("MapViewOfFile")
|
|
|
- procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile")
|
|
|
- procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile")
|
|
|
- procVirtualLock = modkernel32.NewProc("VirtualLock")
|
|
|
- procVirtualUnlock = modkernel32.NewProc("VirtualUnlock")
|
|
|
- procVirtualAlloc = modkernel32.NewProc("VirtualAlloc")
|
|
|
- procVirtualFree = modkernel32.NewProc("VirtualFree")
|
|
|
- procVirtualProtect = modkernel32.NewProc("VirtualProtect")
|
|
|
- procTransmitFile = modmswsock.NewProc("TransmitFile")
|
|
|
- procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW")
|
|
|
- procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW")
|
|
|
- procCertOpenStore = modcrypt32.NewProc("CertOpenStore")
|
|
|
- procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore")
|
|
|
- procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore")
|
|
|
- procCertCloseStore = modcrypt32.NewProc("CertCloseStore")
|
|
|
- procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain")
|
|
|
- procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain")
|
|
|
- procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext")
|
|
|
- procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext")
|
|
|
- procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
|
|
|
- procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW")
|
|
|
- procRegCloseKey = modadvapi32.NewProc("RegCloseKey")
|
|
|
- procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW")
|
|
|
- procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW")
|
|
|
- procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW")
|
|
|
- procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId")
|
|
|
- procGetConsoleMode = modkernel32.NewProc("GetConsoleMode")
|
|
|
- procSetConsoleMode = modkernel32.NewProc("SetConsoleMode")
|
|
|
- procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo")
|
|
|
- procWriteConsoleW = modkernel32.NewProc("WriteConsoleW")
|
|
|
- procReadConsoleW = modkernel32.NewProc("ReadConsoleW")
|
|
|
- procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot")
|
|
|
- procProcess32FirstW = modkernel32.NewProc("Process32FirstW")
|
|
|
- procProcess32NextW = modkernel32.NewProc("Process32NextW")
|
|
|
- procThread32First = modkernel32.NewProc("Thread32First")
|
|
|
- procThread32Next = modkernel32.NewProc("Thread32Next")
|
|
|
- procDeviceIoControl = modkernel32.NewProc("DeviceIoControl")
|
|
|
- procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW")
|
|
|
- procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW")
|
|
|
- procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId")
|
|
|
- procCreateEventW = modkernel32.NewProc("CreateEventW")
|
|
|
- procCreateEventExW = modkernel32.NewProc("CreateEventExW")
|
|
|
- procOpenEventW = modkernel32.NewProc("OpenEventW")
|
|
|
- procSetEvent = modkernel32.NewProc("SetEvent")
|
|
|
- procResetEvent = modkernel32.NewProc("ResetEvent")
|
|
|
- procPulseEvent = modkernel32.NewProc("PulseEvent")
|
|
|
- procCreateMutexW = modkernel32.NewProc("CreateMutexW")
|
|
|
- procCreateMutexExW = modkernel32.NewProc("CreateMutexExW")
|
|
|
- procOpenMutexW = modkernel32.NewProc("OpenMutexW")
|
|
|
- procReleaseMutex = modkernel32.NewProc("ReleaseMutex")
|
|
|
- procSleepEx = modkernel32.NewProc("SleepEx")
|
|
|
- procCreateJobObjectW = modkernel32.NewProc("CreateJobObjectW")
|
|
|
- procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject")
|
|
|
- procTerminateJobObject = modkernel32.NewProc("TerminateJobObject")
|
|
|
- procSetErrorMode = modkernel32.NewProc("SetErrorMode")
|
|
|
- procResumeThread = modkernel32.NewProc("ResumeThread")
|
|
|
- procSetPriorityClass = modkernel32.NewProc("SetPriorityClass")
|
|
|
- procGetPriorityClass = modkernel32.NewProc("GetPriorityClass")
|
|
|
- procSetInformationJobObject = modkernel32.NewProc("SetInformationJobObject")
|
|
|
- procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent")
|
|
|
- procGetProcessId = modkernel32.NewProc("GetProcessId")
|
|
|
- procOpenThread = modkernel32.NewProc("OpenThread")
|
|
|
- procSetProcessPriorityBoost = modkernel32.NewProc("SetProcessPriorityBoost")
|
|
|
- procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW")
|
|
|
- procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW")
|
|
|
- procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW")
|
|
|
- procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW")
|
|
|
- procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW")
|
|
|
- procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW")
|
|
|
- procFindVolumeClose = modkernel32.NewProc("FindVolumeClose")
|
|
|
- procFindVolumeMountPointClose = modkernel32.NewProc("FindVolumeMountPointClose")
|
|
|
- procGetDriveTypeW = modkernel32.NewProc("GetDriveTypeW")
|
|
|
- procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives")
|
|
|
- procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW")
|
|
|
- procGetVolumeInformationW = modkernel32.NewProc("GetVolumeInformationW")
|
|
|
- procGetVolumeInformationByHandleW = modkernel32.NewProc("GetVolumeInformationByHandleW")
|
|
|
- procGetVolumeNameForVolumeMountPointW = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW")
|
|
|
- procGetVolumePathNameW = modkernel32.NewProc("GetVolumePathNameW")
|
|
|
- procGetVolumePathNamesForVolumeNameW = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW")
|
|
|
- procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW")
|
|
|
- procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW")
|
|
|
- procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW")
|
|
|
- procMessageBoxW = moduser32.NewProc("MessageBoxW")
|
|
|
- procExitWindowsEx = moduser32.NewProc("ExitWindowsEx")
|
|
|
- procInitiateSystemShutdownExW = modadvapi32.NewProc("InitiateSystemShutdownExW")
|
|
|
- procSetProcessShutdownParameters = modkernel32.NewProc("SetProcessShutdownParameters")
|
|
|
- procGetProcessShutdownParameters = modkernel32.NewProc("GetProcessShutdownParameters")
|
|
|
- procCLSIDFromString = modole32.NewProc("CLSIDFromString")
|
|
|
- procStringFromGUID2 = modole32.NewProc("StringFromGUID2")
|
|
|
- procCoCreateGuid = modole32.NewProc("CoCreateGuid")
|
|
|
- procCoTaskMemFree = modole32.NewProc("CoTaskMemFree")
|
|
|
- procRtlGetVersion = modntdll.NewProc("RtlGetVersion")
|
|
|
- procRtlGetNtVersionNumbers = modntdll.NewProc("RtlGetNtVersionNumbers")
|
|
|
- procWSAStartup = modws2_32.NewProc("WSAStartup")
|
|
|
- procWSACleanup = modws2_32.NewProc("WSACleanup")
|
|
|
- procWSAIoctl = modws2_32.NewProc("WSAIoctl")
|
|
|
- procsocket = modws2_32.NewProc("socket")
|
|
|
- procsetsockopt = modws2_32.NewProc("setsockopt")
|
|
|
- procgetsockopt = modws2_32.NewProc("getsockopt")
|
|
|
- procbind = modws2_32.NewProc("bind")
|
|
|
- procconnect = modws2_32.NewProc("connect")
|
|
|
- procgetsockname = modws2_32.NewProc("getsockname")
|
|
|
- procgetpeername = modws2_32.NewProc("getpeername")
|
|
|
- proclisten = modws2_32.NewProc("listen")
|
|
|
- procshutdown = modws2_32.NewProc("shutdown")
|
|
|
- procclosesocket = modws2_32.NewProc("closesocket")
|
|
|
- procAcceptEx = modmswsock.NewProc("AcceptEx")
|
|
|
- procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs")
|
|
|
- procWSARecv = modws2_32.NewProc("WSARecv")
|
|
|
- procWSASend = modws2_32.NewProc("WSASend")
|
|
|
- procWSARecvFrom = modws2_32.NewProc("WSARecvFrom")
|
|
|
- procWSASendTo = modws2_32.NewProc("WSASendTo")
|
|
|
- procgethostbyname = modws2_32.NewProc("gethostbyname")
|
|
|
- procgetservbyname = modws2_32.NewProc("getservbyname")
|
|
|
- procntohs = modws2_32.NewProc("ntohs")
|
|
|
- procgetprotobyname = modws2_32.NewProc("getprotobyname")
|
|
|
- procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
|
|
|
- procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree")
|
|
|
- procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W")
|
|
|
- procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
|
|
- procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
|
|
- procGetIfEntry = modiphlpapi.NewProc("GetIfEntry")
|
|
|
- procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo")
|
|
|
- procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes")
|
|
|
- procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW")
|
|
|
- procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses")
|
|
|
- procGetACP = modkernel32.NewProc("GetACP")
|
|
|
- procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar")
|
|
|
- procTranslateNameW = modsecur32.NewProc("TranslateNameW")
|
|
|
- procGetUserNameExW = modsecur32.NewProc("GetUserNameExW")
|
|
|
- procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo")
|
|
|
- procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation")
|
|
|
- procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree")
|
|
|
- procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW")
|
|
|
- procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW")
|
|
|
- procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW")
|
|
|
- procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW")
|
|
|
- procGetLengthSid = modadvapi32.NewProc("GetLengthSid")
|
|
|
- procCopySid = modadvapi32.NewProc("CopySid")
|
|
|
- procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid")
|
|
|
- procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid")
|
|
|
- procIsWellKnownSid = modadvapi32.NewProc("IsWellKnownSid")
|
|
|
- procFreeSid = modadvapi32.NewProc("FreeSid")
|
|
|
- procEqualSid = modadvapi32.NewProc("EqualSid")
|
|
|
- procGetSidIdentifierAuthority = modadvapi32.NewProc("GetSidIdentifierAuthority")
|
|
|
- procGetSidSubAuthorityCount = modadvapi32.NewProc("GetSidSubAuthorityCount")
|
|
|
- procGetSidSubAuthority = modadvapi32.NewProc("GetSidSubAuthority")
|
|
|
- procIsValidSid = modadvapi32.NewProc("IsValidSid")
|
|
|
- procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership")
|
|
|
- procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken")
|
|
|
- procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken")
|
|
|
- procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf")
|
|
|
- procRevertToSelf = modadvapi32.NewProc("RevertToSelf")
|
|
|
- procSetThreadToken = modadvapi32.NewProc("SetThreadToken")
|
|
|
- procLookupPrivilegeValueW = modadvapi32.NewProc("LookupPrivilegeValueW")
|
|
|
- procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges")
|
|
|
- procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups")
|
|
|
- procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation")
|
|
|
- procSetTokenInformation = modadvapi32.NewProc("SetTokenInformation")
|
|
|
- procDuplicateTokenEx = modadvapi32.NewProc("DuplicateTokenEx")
|
|
|
- procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
|
|
|
- procGetSystemDirectoryW = modkernel32.NewProc("GetSystemDirectoryW")
|
|
|
- procGetWindowsDirectoryW = modkernel32.NewProc("GetWindowsDirectoryW")
|
|
|
- procGetSystemWindowsDirectoryW = modkernel32.NewProc("GetSystemWindowsDirectoryW")
|
|
|
- procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken")
|
|
|
- procWTSEnumerateSessionsW = modwtsapi32.NewProc("WTSEnumerateSessionsW")
|
|
|
- procWTSFreeMemory = modwtsapi32.NewProc("WTSFreeMemory")
|
|
|
+ procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW")
|
|
|
+ procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource")
|
|
|
+ procReportEventW = modadvapi32.NewProc("ReportEventW")
|
|
|
+ procOpenSCManagerW = modadvapi32.NewProc("OpenSCManagerW")
|
|
|
+ procCloseServiceHandle = modadvapi32.NewProc("CloseServiceHandle")
|
|
|
+ procCreateServiceW = modadvapi32.NewProc("CreateServiceW")
|
|
|
+ procOpenServiceW = modadvapi32.NewProc("OpenServiceW")
|
|
|
+ procDeleteService = modadvapi32.NewProc("DeleteService")
|
|
|
+ procStartServiceW = modadvapi32.NewProc("StartServiceW")
|
|
|
+ procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus")
|
|
|
+ procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW")
|
|
|
+ procControlService = modadvapi32.NewProc("ControlService")
|
|
|
+ procStartServiceCtrlDispatcherW = modadvapi32.NewProc("StartServiceCtrlDispatcherW")
|
|
|
+ procSetServiceStatus = modadvapi32.NewProc("SetServiceStatus")
|
|
|
+ procChangeServiceConfigW = modadvapi32.NewProc("ChangeServiceConfigW")
|
|
|
+ procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW")
|
|
|
+ procChangeServiceConfig2W = modadvapi32.NewProc("ChangeServiceConfig2W")
|
|
|
+ procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W")
|
|
|
+ procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW")
|
|
|
+ procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx")
|
|
|
+ procNotifyServiceStatusChangeW = modadvapi32.NewProc("NotifyServiceStatusChangeW")
|
|
|
+ procGetLastError = modkernel32.NewProc("GetLastError")
|
|
|
+ procLoadLibraryW = modkernel32.NewProc("LoadLibraryW")
|
|
|
+ procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW")
|
|
|
+ procFreeLibrary = modkernel32.NewProc("FreeLibrary")
|
|
|
+ procGetProcAddress = modkernel32.NewProc("GetProcAddress")
|
|
|
+ procGetVersion = modkernel32.NewProc("GetVersion")
|
|
|
+ procFormatMessageW = modkernel32.NewProc("FormatMessageW")
|
|
|
+ procExitProcess = modkernel32.NewProc("ExitProcess")
|
|
|
+ procIsWow64Process = modkernel32.NewProc("IsWow64Process")
|
|
|
+ procCreateFileW = modkernel32.NewProc("CreateFileW")
|
|
|
+ procReadFile = modkernel32.NewProc("ReadFile")
|
|
|
+ procWriteFile = modkernel32.NewProc("WriteFile")
|
|
|
+ procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult")
|
|
|
+ procSetFilePointer = modkernel32.NewProc("SetFilePointer")
|
|
|
+ procCloseHandle = modkernel32.NewProc("CloseHandle")
|
|
|
+ procGetStdHandle = modkernel32.NewProc("GetStdHandle")
|
|
|
+ procSetStdHandle = modkernel32.NewProc("SetStdHandle")
|
|
|
+ procFindFirstFileW = modkernel32.NewProc("FindFirstFileW")
|
|
|
+ procFindNextFileW = modkernel32.NewProc("FindNextFileW")
|
|
|
+ procFindClose = modkernel32.NewProc("FindClose")
|
|
|
+ procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle")
|
|
|
+ procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx")
|
|
|
+ procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW")
|
|
|
+ procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW")
|
|
|
+ procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW")
|
|
|
+ procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW")
|
|
|
+ procDeleteFileW = modkernel32.NewProc("DeleteFileW")
|
|
|
+ procMoveFileW = modkernel32.NewProc("MoveFileW")
|
|
|
+ procMoveFileExW = modkernel32.NewProc("MoveFileExW")
|
|
|
+ procGetComputerNameW = modkernel32.NewProc("GetComputerNameW")
|
|
|
+ procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW")
|
|
|
+ procSetEndOfFile = modkernel32.NewProc("SetEndOfFile")
|
|
|
+ procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime")
|
|
|
+ procGetSystemTimePreciseAsFileTime = modkernel32.NewProc("GetSystemTimePreciseAsFileTime")
|
|
|
+ procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation")
|
|
|
+ procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort")
|
|
|
+ procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus")
|
|
|
+ procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus")
|
|
|
+ procCancelIo = modkernel32.NewProc("CancelIo")
|
|
|
+ procCancelIoEx = modkernel32.NewProc("CancelIoEx")
|
|
|
+ procCreateProcessW = modkernel32.NewProc("CreateProcessW")
|
|
|
+ procOpenProcess = modkernel32.NewProc("OpenProcess")
|
|
|
+ procShellExecuteW = modshell32.NewProc("ShellExecuteW")
|
|
|
+ procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath")
|
|
|
+ procTerminateProcess = modkernel32.NewProc("TerminateProcess")
|
|
|
+ procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess")
|
|
|
+ procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW")
|
|
|
+ procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess")
|
|
|
+ procGetCurrentThread = modkernel32.NewProc("GetCurrentThread")
|
|
|
+ procGetProcessTimes = modkernel32.NewProc("GetProcessTimes")
|
|
|
+ procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
|
|
|
+ procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject")
|
|
|
+ procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects")
|
|
|
+ procGetTempPathW = modkernel32.NewProc("GetTempPathW")
|
|
|
+ procCreatePipe = modkernel32.NewProc("CreatePipe")
|
|
|
+ procGetFileType = modkernel32.NewProc("GetFileType")
|
|
|
+ procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW")
|
|
|
+ procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext")
|
|
|
+ procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom")
|
|
|
+ procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW")
|
|
|
+ procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW")
|
|
|
+ procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW")
|
|
|
+ procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW")
|
|
|
+ procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
|
|
|
+ procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
|
|
|
+ procGetTickCount64 = modkernel32.NewProc("GetTickCount64")
|
|
|
+ procSetFileTime = modkernel32.NewProc("SetFileTime")
|
|
|
+ procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW")
|
|
|
+ procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW")
|
|
|
+ procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW")
|
|
|
+ procGetCommandLineW = modkernel32.NewProc("GetCommandLineW")
|
|
|
+ procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW")
|
|
|
+ procLocalFree = modkernel32.NewProc("LocalFree")
|
|
|
+ procSetHandleInformation = modkernel32.NewProc("SetHandleInformation")
|
|
|
+ procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers")
|
|
|
+ procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW")
|
|
|
+ procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW")
|
|
|
+ procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW")
|
|
|
+ procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW")
|
|
|
+ procMapViewOfFile = modkernel32.NewProc("MapViewOfFile")
|
|
|
+ procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile")
|
|
|
+ procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile")
|
|
|
+ procVirtualLock = modkernel32.NewProc("VirtualLock")
|
|
|
+ procVirtualUnlock = modkernel32.NewProc("VirtualUnlock")
|
|
|
+ procVirtualAlloc = modkernel32.NewProc("VirtualAlloc")
|
|
|
+ procVirtualFree = modkernel32.NewProc("VirtualFree")
|
|
|
+ procVirtualProtect = modkernel32.NewProc("VirtualProtect")
|
|
|
+ procTransmitFile = modmswsock.NewProc("TransmitFile")
|
|
|
+ procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW")
|
|
|
+ procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW")
|
|
|
+ procCertOpenStore = modcrypt32.NewProc("CertOpenStore")
|
|
|
+ procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore")
|
|
|
+ procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore")
|
|
|
+ procCertCloseStore = modcrypt32.NewProc("CertCloseStore")
|
|
|
+ procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain")
|
|
|
+ procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain")
|
|
|
+ procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext")
|
|
|
+ procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext")
|
|
|
+ procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
|
|
|
+ procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW")
|
|
|
+ procRegCloseKey = modadvapi32.NewProc("RegCloseKey")
|
|
|
+ procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW")
|
|
|
+ procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW")
|
|
|
+ procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW")
|
|
|
+ procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId")
|
|
|
+ procGetConsoleMode = modkernel32.NewProc("GetConsoleMode")
|
|
|
+ procSetConsoleMode = modkernel32.NewProc("SetConsoleMode")
|
|
|
+ procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo")
|
|
|
+ procWriteConsoleW = modkernel32.NewProc("WriteConsoleW")
|
|
|
+ procReadConsoleW = modkernel32.NewProc("ReadConsoleW")
|
|
|
+ procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot")
|
|
|
+ procProcess32FirstW = modkernel32.NewProc("Process32FirstW")
|
|
|
+ procProcess32NextW = modkernel32.NewProc("Process32NextW")
|
|
|
+ procThread32First = modkernel32.NewProc("Thread32First")
|
|
|
+ procThread32Next = modkernel32.NewProc("Thread32Next")
|
|
|
+ procDeviceIoControl = modkernel32.NewProc("DeviceIoControl")
|
|
|
+ procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW")
|
|
|
+ procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW")
|
|
|
+ procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId")
|
|
|
+ procCreateEventW = modkernel32.NewProc("CreateEventW")
|
|
|
+ procCreateEventExW = modkernel32.NewProc("CreateEventExW")
|
|
|
+ procOpenEventW = modkernel32.NewProc("OpenEventW")
|
|
|
+ procSetEvent = modkernel32.NewProc("SetEvent")
|
|
|
+ procResetEvent = modkernel32.NewProc("ResetEvent")
|
|
|
+ procPulseEvent = modkernel32.NewProc("PulseEvent")
|
|
|
+ procCreateMutexW = modkernel32.NewProc("CreateMutexW")
|
|
|
+ procCreateMutexExW = modkernel32.NewProc("CreateMutexExW")
|
|
|
+ procOpenMutexW = modkernel32.NewProc("OpenMutexW")
|
|
|
+ procReleaseMutex = modkernel32.NewProc("ReleaseMutex")
|
|
|
+ procSleepEx = modkernel32.NewProc("SleepEx")
|
|
|
+ procCreateJobObjectW = modkernel32.NewProc("CreateJobObjectW")
|
|
|
+ procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject")
|
|
|
+ procTerminateJobObject = modkernel32.NewProc("TerminateJobObject")
|
|
|
+ procSetErrorMode = modkernel32.NewProc("SetErrorMode")
|
|
|
+ procResumeThread = modkernel32.NewProc("ResumeThread")
|
|
|
+ procSetPriorityClass = modkernel32.NewProc("SetPriorityClass")
|
|
|
+ procGetPriorityClass = modkernel32.NewProc("GetPriorityClass")
|
|
|
+ procSetInformationJobObject = modkernel32.NewProc("SetInformationJobObject")
|
|
|
+ procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent")
|
|
|
+ procGetProcessId = modkernel32.NewProc("GetProcessId")
|
|
|
+ procOpenThread = modkernel32.NewProc("OpenThread")
|
|
|
+ procSetProcessPriorityBoost = modkernel32.NewProc("SetProcessPriorityBoost")
|
|
|
+ procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW")
|
|
|
+ procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW")
|
|
|
+ procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW")
|
|
|
+ procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW")
|
|
|
+ procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW")
|
|
|
+ procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW")
|
|
|
+ procFindVolumeClose = modkernel32.NewProc("FindVolumeClose")
|
|
|
+ procFindVolumeMountPointClose = modkernel32.NewProc("FindVolumeMountPointClose")
|
|
|
+ procGetDriveTypeW = modkernel32.NewProc("GetDriveTypeW")
|
|
|
+ procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives")
|
|
|
+ procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW")
|
|
|
+ procGetVolumeInformationW = modkernel32.NewProc("GetVolumeInformationW")
|
|
|
+ procGetVolumeInformationByHandleW = modkernel32.NewProc("GetVolumeInformationByHandleW")
|
|
|
+ procGetVolumeNameForVolumeMountPointW = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW")
|
|
|
+ procGetVolumePathNameW = modkernel32.NewProc("GetVolumePathNameW")
|
|
|
+ procGetVolumePathNamesForVolumeNameW = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW")
|
|
|
+ procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW")
|
|
|
+ procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW")
|
|
|
+ procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW")
|
|
|
+ procMessageBoxW = moduser32.NewProc("MessageBoxW")
|
|
|
+ procExitWindowsEx = moduser32.NewProc("ExitWindowsEx")
|
|
|
+ procInitiateSystemShutdownExW = modadvapi32.NewProc("InitiateSystemShutdownExW")
|
|
|
+ procSetProcessShutdownParameters = modkernel32.NewProc("SetProcessShutdownParameters")
|
|
|
+ procGetProcessShutdownParameters = modkernel32.NewProc("GetProcessShutdownParameters")
|
|
|
+ procCLSIDFromString = modole32.NewProc("CLSIDFromString")
|
|
|
+ procStringFromGUID2 = modole32.NewProc("StringFromGUID2")
|
|
|
+ procCoCreateGuid = modole32.NewProc("CoCreateGuid")
|
|
|
+ procCoTaskMemFree = modole32.NewProc("CoTaskMemFree")
|
|
|
+ procRtlGetVersion = modntdll.NewProc("RtlGetVersion")
|
|
|
+ procRtlGetNtVersionNumbers = modntdll.NewProc("RtlGetNtVersionNumbers")
|
|
|
+ procWSAStartup = modws2_32.NewProc("WSAStartup")
|
|
|
+ procWSACleanup = modws2_32.NewProc("WSACleanup")
|
|
|
+ procWSAIoctl = modws2_32.NewProc("WSAIoctl")
|
|
|
+ procsocket = modws2_32.NewProc("socket")
|
|
|
+ procsetsockopt = modws2_32.NewProc("setsockopt")
|
|
|
+ procgetsockopt = modws2_32.NewProc("getsockopt")
|
|
|
+ procbind = modws2_32.NewProc("bind")
|
|
|
+ procconnect = modws2_32.NewProc("connect")
|
|
|
+ procgetsockname = modws2_32.NewProc("getsockname")
|
|
|
+ procgetpeername = modws2_32.NewProc("getpeername")
|
|
|
+ proclisten = modws2_32.NewProc("listen")
|
|
|
+ procshutdown = modws2_32.NewProc("shutdown")
|
|
|
+ procclosesocket = modws2_32.NewProc("closesocket")
|
|
|
+ procAcceptEx = modmswsock.NewProc("AcceptEx")
|
|
|
+ procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs")
|
|
|
+ procWSARecv = modws2_32.NewProc("WSARecv")
|
|
|
+ procWSASend = modws2_32.NewProc("WSASend")
|
|
|
+ procWSARecvFrom = modws2_32.NewProc("WSARecvFrom")
|
|
|
+ procWSASendTo = modws2_32.NewProc("WSASendTo")
|
|
|
+ procgethostbyname = modws2_32.NewProc("gethostbyname")
|
|
|
+ procgetservbyname = modws2_32.NewProc("getservbyname")
|
|
|
+ procntohs = modws2_32.NewProc("ntohs")
|
|
|
+ procgetprotobyname = modws2_32.NewProc("getprotobyname")
|
|
|
+ procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
|
|
|
+ procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree")
|
|
|
+ procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W")
|
|
|
+ procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
|
|
+ procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
|
|
+ procGetIfEntry = modiphlpapi.NewProc("GetIfEntry")
|
|
|
+ procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo")
|
|
|
+ procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes")
|
|
|
+ procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW")
|
|
|
+ procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses")
|
|
|
+ procGetACP = modkernel32.NewProc("GetACP")
|
|
|
+ procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar")
|
|
|
+ procTranslateNameW = modsecur32.NewProc("TranslateNameW")
|
|
|
+ procGetUserNameExW = modsecur32.NewProc("GetUserNameExW")
|
|
|
+ procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo")
|
|
|
+ procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation")
|
|
|
+ procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree")
|
|
|
+ procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW")
|
|
|
+ procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW")
|
|
|
+ procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW")
|
|
|
+ procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW")
|
|
|
+ procGetLengthSid = modadvapi32.NewProc("GetLengthSid")
|
|
|
+ procCopySid = modadvapi32.NewProc("CopySid")
|
|
|
+ procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid")
|
|
|
+ procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid")
|
|
|
+ procIsWellKnownSid = modadvapi32.NewProc("IsWellKnownSid")
|
|
|
+ procFreeSid = modadvapi32.NewProc("FreeSid")
|
|
|
+ procEqualSid = modadvapi32.NewProc("EqualSid")
|
|
|
+ procGetSidIdentifierAuthority = modadvapi32.NewProc("GetSidIdentifierAuthority")
|
|
|
+ procGetSidSubAuthorityCount = modadvapi32.NewProc("GetSidSubAuthorityCount")
|
|
|
+ procGetSidSubAuthority = modadvapi32.NewProc("GetSidSubAuthority")
|
|
|
+ procIsValidSid = modadvapi32.NewProc("IsValidSid")
|
|
|
+ procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership")
|
|
|
+ procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken")
|
|
|
+ procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken")
|
|
|
+ procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf")
|
|
|
+ procRevertToSelf = modadvapi32.NewProc("RevertToSelf")
|
|
|
+ procSetThreadToken = modadvapi32.NewProc("SetThreadToken")
|
|
|
+ procLookupPrivilegeValueW = modadvapi32.NewProc("LookupPrivilegeValueW")
|
|
|
+ procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges")
|
|
|
+ procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups")
|
|
|
+ procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation")
|
|
|
+ procSetTokenInformation = modadvapi32.NewProc("SetTokenInformation")
|
|
|
+ procDuplicateTokenEx = modadvapi32.NewProc("DuplicateTokenEx")
|
|
|
+ procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
|
|
|
+ procGetSystemDirectoryW = modkernel32.NewProc("GetSystemDirectoryW")
|
|
|
+ procGetWindowsDirectoryW = modkernel32.NewProc("GetWindowsDirectoryW")
|
|
|
+ procGetSystemWindowsDirectoryW = modkernel32.NewProc("GetSystemWindowsDirectoryW")
|
|
|
+ procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken")
|
|
|
+ procWTSEnumerateSessionsW = modwtsapi32.NewProc("WTSEnumerateSessionsW")
|
|
|
+ procWTSFreeMemory = modwtsapi32.NewProc("WTSFreeMemory")
|
|
|
+ procGetSecurityInfo = modadvapi32.NewProc("GetSecurityInfo")
|
|
|
+ procSetSecurityInfo = modadvapi32.NewProc("SetSecurityInfo")
|
|
|
+ procGetNamedSecurityInfoW = modadvapi32.NewProc("GetNamedSecurityInfoW")
|
|
|
+ procSetNamedSecurityInfoW = modadvapi32.NewProc("SetNamedSecurityInfoW")
|
|
|
+ procBuildSecurityDescriptorW = modadvapi32.NewProc("BuildSecurityDescriptorW")
|
|
|
+ procInitializeSecurityDescriptor = modadvapi32.NewProc("InitializeSecurityDescriptor")
|
|
|
+ procGetSecurityDescriptorControl = modadvapi32.NewProc("GetSecurityDescriptorControl")
|
|
|
+ procGetSecurityDescriptorDacl = modadvapi32.NewProc("GetSecurityDescriptorDacl")
|
|
|
+ procGetSecurityDescriptorSacl = modadvapi32.NewProc("GetSecurityDescriptorSacl")
|
|
|
+ procGetSecurityDescriptorOwner = modadvapi32.NewProc("GetSecurityDescriptorOwner")
|
|
|
+ procGetSecurityDescriptorGroup = modadvapi32.NewProc("GetSecurityDescriptorGroup")
|
|
|
+ procGetSecurityDescriptorLength = modadvapi32.NewProc("GetSecurityDescriptorLength")
|
|
|
+ procGetSecurityDescriptorRMControl = modadvapi32.NewProc("GetSecurityDescriptorRMControl")
|
|
|
+ procIsValidSecurityDescriptor = modadvapi32.NewProc("IsValidSecurityDescriptor")
|
|
|
+ procSetSecurityDescriptorControl = modadvapi32.NewProc("SetSecurityDescriptorControl")
|
|
|
+ procSetSecurityDescriptorDacl = modadvapi32.NewProc("SetSecurityDescriptorDacl")
|
|
|
+ procSetSecurityDescriptorSacl = modadvapi32.NewProc("SetSecurityDescriptorSacl")
|
|
|
+ procSetSecurityDescriptorOwner = modadvapi32.NewProc("SetSecurityDescriptorOwner")
|
|
|
+ procSetSecurityDescriptorGroup = modadvapi32.NewProc("SetSecurityDescriptorGroup")
|
|
|
+ procSetSecurityDescriptorRMControl = modadvapi32.NewProc("SetSecurityDescriptorRMControl")
|
|
|
+ procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW")
|
|
|
+ procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW")
|
|
|
+ procMakeAbsoluteSD = modadvapi32.NewProc("MakeAbsoluteSD")
|
|
|
+ procMakeSelfRelativeSD = modadvapi32.NewProc("MakeSelfRelativeSD")
|
|
|
+ procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW")
|
|
|
)
|
|
|
|
|
|
func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {
|
|
|
@@ -3526,3 +3551,358 @@ func WTSFreeMemory(ptr uintptr) {
|
|
|
syscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0)
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
|
|
|
+ r0, _, _ := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0)
|
|
|
+ if r0 != 0 {
|
|
|
+ ret = syscall.Errno(r0)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) {
|
|
|
+ syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
|
|
|
+ var _p0 *uint16
|
|
|
+ _p0, ret = syscall.UTF16PtrFromString(objectName)
|
|
|
+ if ret != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd)
|
|
|
+}
|
|
|
+
|
|
|
+func _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {
|
|
|
+ r0, _, _ := syscall.Syscall9(procGetNamedSecurityInfoW.Addr(), 8, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0)
|
|
|
+ if r0 != 0 {
|
|
|
+ ret = syscall.Errno(r0)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
|
|
|
+ var _p0 *uint16
|
|
|
+ _p0, ret = syscall.UTF16PtrFromString(objectName)
|
|
|
+ if ret != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl)
|
|
|
+}
|
|
|
+
|
|
|
+func _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {
|
|
|
+ r0, _, _ := syscall.Syscall9(procSetNamedSecurityInfoW.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0)
|
|
|
+ if r0 != 0 {
|
|
|
+ ret = syscall.Errno(r0)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) {
|
|
|
+ r0, _, _ := syscall.Syscall9(procBuildSecurityDescriptorW.Addr(), 9, uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor)))
|
|
|
+ if r0 != 0 {
|
|
|
+ ret = syscall.Errno(r0)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) {
|
|
|
+ r1, _, e1 := syscall.Syscall(procInitializeSecurityDescriptor.Addr(), 2, uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision), 0)
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) {
|
|
|
+ r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision)))
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) {
|
|
|
+ var _p0 uint32
|
|
|
+ if *daclPresent {
|
|
|
+ _p0 = 1
|
|
|
+ } else {
|
|
|
+ _p0 = 0
|
|
|
+ }
|
|
|
+ var _p1 uint32
|
|
|
+ if *daclDefaulted {
|
|
|
+ _p1 = 1
|
|
|
+ } else {
|
|
|
+ _p1 = 0
|
|
|
+ }
|
|
|
+ r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)
|
|
|
+ *daclPresent = _p0 != 0
|
|
|
+ *daclDefaulted = _p1 != 0
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) {
|
|
|
+ var _p0 uint32
|
|
|
+ if *saclPresent {
|
|
|
+ _p0 = 1
|
|
|
+ } else {
|
|
|
+ _p0 = 0
|
|
|
+ }
|
|
|
+ var _p1 uint32
|
|
|
+ if *saclDefaulted {
|
|
|
+ _p1 = 1
|
|
|
+ } else {
|
|
|
+ _p1 = 0
|
|
|
+ }
|
|
|
+ r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0)
|
|
|
+ *saclPresent = _p0 != 0
|
|
|
+ *saclDefaulted = _p1 != 0
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) {
|
|
|
+ var _p0 uint32
|
|
|
+ if *ownerDefaulted {
|
|
|
+ _p0 = 1
|
|
|
+ } else {
|
|
|
+ _p0 = 0
|
|
|
+ }
|
|
|
+ r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0)))
|
|
|
+ *ownerDefaulted = _p0 != 0
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) {
|
|
|
+ var _p0 uint32
|
|
|
+ if *groupDefaulted {
|
|
|
+ _p0 = 1
|
|
|
+ } else {
|
|
|
+ _p0 = 0
|
|
|
+ }
|
|
|
+ r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0)))
|
|
|
+ *groupDefaulted = _p0 != 0
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) {
|
|
|
+ r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)
|
|
|
+ len = uint32(r0)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) {
|
|
|
+ r0, _, _ := syscall.Syscall(procGetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)
|
|
|
+ if r0 != 0 {
|
|
|
+ ret = syscall.Errno(r0)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) {
|
|
|
+ r0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)
|
|
|
+ isValid = r0 != 0
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) {
|
|
|
+ r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet))
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) {
|
|
|
+ var _p0 uint32
|
|
|
+ if daclPresent {
|
|
|
+ _p0 = 1
|
|
|
+ } else {
|
|
|
+ _p0 = 0
|
|
|
+ }
|
|
|
+ var _p1 uint32
|
|
|
+ if daclDefaulted {
|
|
|
+ _p1 = 1
|
|
|
+ } else {
|
|
|
+ _p1 = 0
|
|
|
+ }
|
|
|
+ r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1), 0, 0)
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) {
|
|
|
+ var _p0 uint32
|
|
|
+ if saclPresent {
|
|
|
+ _p0 = 1
|
|
|
+ } else {
|
|
|
+ _p0 = 0
|
|
|
+ }
|
|
|
+ var _p1 uint32
|
|
|
+ if saclDefaulted {
|
|
|
+ _p1 = 1
|
|
|
+ } else {
|
|
|
+ _p1 = 0
|
|
|
+ }
|
|
|
+ r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1), 0, 0)
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) {
|
|
|
+ var _p0 uint32
|
|
|
+ if ownerDefaulted {
|
|
|
+ _p0 = 1
|
|
|
+ } else {
|
|
|
+ _p0 = 0
|
|
|
+ }
|
|
|
+ r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0))
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) {
|
|
|
+ var _p0 uint32
|
|
|
+ if groupDefaulted {
|
|
|
+ _p0 = 1
|
|
|
+ } else {
|
|
|
+ _p0 = 0
|
|
|
+ }
|
|
|
+ r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0))
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) {
|
|
|
+ syscall.Syscall(procSetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {
|
|
|
+ var _p0 *uint16
|
|
|
+ _p0, err = syscall.UTF16PtrFromString(str)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size)
|
|
|
+}
|
|
|
+
|
|
|
+func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {
|
|
|
+ r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0)
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) {
|
|
|
+ r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)), 0)
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) {
|
|
|
+ r1, _, e1 := syscall.Syscall12(procMakeAbsoluteSD.Addr(), 11, uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)), 0)
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) {
|
|
|
+ r1, _, e1 := syscall.Syscall(procMakeSelfRelativeSD.Addr(), 3, uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize)))
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) {
|
|
|
+ r0, _, _ := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)), 0, 0)
|
|
|
+ if r0 != 0 {
|
|
|
+ ret = syscall.Errno(r0)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|