1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2025-07-06 07:44:57 +03:00

Cedar, Mayaqua: Set minimum Windows version to Vista

This commit is contained in:
Davide Beatrici
2021-04-03 02:25:19 +02:00
parent a79f91161f
commit 5cab279a8c
31 changed files with 773 additions and 4535 deletions

View File

@ -47,9 +47,6 @@ typedef unsigned long DWORD;
#define SVC_ARG_SERVICE "/service"
#define SVC_ARG_SETUP_INSTALL "/setup_install"
#define SVC_ARG_SETUP_UNINSTALL "/setup_uninstall"
#define SVC_ARG_WIN9X_SERVICE "/win9x_service"
#define SVC_ARG_WIN9X_INSTALL "/win9x_install"
#define SVC_ARG_WIN9X_UNINSTALL "/win9x_uninstall"
#define SVC_ARG_TCP "/tcp"
#define SVC_ARG_TCP_UAC "/tcp_uac"
#define SVC_ARG_TCP_UAC_W L"/tcp_uac"
@ -92,19 +89,12 @@ typedef unsigned long DWORD;
#define SVC_MODE_SERVICE 7
#define SVC_MODE_SETUP_INSTALL 8
#define SVC_MODE_SETUP_UNINSTALL 9
#define SVC_MODE_WIN9X_SERVICE 10
#define SVC_MODE_WIN9X_INSTALL 11
#define SVC_MODE_WIN9X_UNINSTALL 12
#define SVC_MODE_TCP 13
#define SVC_MODE_TCPSETUP 14
#define SVC_MODE_TRAFFIC 15
#define SVC_MODE_UIHELP 16
#define SVC_MODE_TCP_UAC 17
#define WIN9X_SVC_REGKEY_1 "Software\\Microsoft\\Windows\\CurrentVersion\\RunServices"
#define WIN9X_SVC_REGKEY_2 "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
#define VISTA_MMCSS_KEYNAME "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks"
#define VISTA_MMCSS_FILENAME "mmcss_backup.dat"
@ -138,69 +128,23 @@ typedef unsigned long DWORD;
#define DRIVER_DEVICE_ID_TAG "NeoAdapter_%s"
#if (defined(MICROSOFT_C) || defined(NETWORK_C)) && (defined(OS_WIN32))
typedef enum __TCP_TABLE_CLASS {
_TCP_TABLE_BASIC_LISTENER,
_TCP_TABLE_BASIC_CONNECTIONS,
_TCP_TABLE_BASIC_ALL,
_TCP_TABLE_OWNER_PID_LISTENER,
_TCP_TABLE_OWNER_PID_CONNECTIONS,
_TCP_TABLE_OWNER_PID_ALL,
_TCP_TABLE_OWNER_MODULE_LISTENER,
_TCP_TABLE_OWNER_MODULE_CONNECTIONS,
_TCP_TABLE_OWNER_MODULE_ALL
} _TCP_TABLE_CLASS, *_PTCP_TABLE_CLASS;
// A pointer to the network related Win32 API function
typedef struct NETWORK_WIN32_FUNCTIONS
{
HINSTANCE hIpHlpApi32;
HINSTANCE hIcmp;
DWORD (WINAPI *DeleteIpForwardEntry)(PMIB_IPFORWARDROW);
DWORD (WINAPI *CreateIpForwardEntry)(PMIB_IPFORWARDROW);
DWORD (WINAPI *GetIpForwardTable)(PMIB_IPFORWARDTABLE, PULONG, BOOL);
DWORD (WINAPI *GetNetworkParams)(PFIXED_INFO, PULONG);
ULONG (WINAPI *GetAdaptersAddresses)(ULONG, ULONG, PVOID, PIP_ADAPTER_ADDRESSES, PULONG);
DWORD (WINAPI *GetIfTable)(PMIB_IFTABLE, PULONG, BOOL);
DWORD (WINAPI *GetIfTable2)(void **);
void (WINAPI *FreeMibTable)(PVOID);
DWORD (WINAPI *IpRenewAddress)(PIP_ADAPTER_INDEX_MAP);
DWORD (WINAPI *IpReleaseAddress)(PIP_ADAPTER_INDEX_MAP);
DWORD (WINAPI *GetInterfaceInfo)(PIP_INTERFACE_INFO, PULONG);
DWORD (WINAPI *GetAdaptersInfo)(PIP_ADAPTER_INFO, PULONG);
DWORD (WINAPI *GetExtendedTcpTable)(PVOID, PDWORD, BOOL, ULONG, _TCP_TABLE_CLASS, ULONG);
DWORD (WINAPI *AllocateAndGetTcpExTableFromStack)(PVOID *, BOOL, HANDLE, DWORD, DWORD);
DWORD (WINAPI *GetTcpTable)(PMIB_TCPTABLE, PULONG, BOOL);
DWORD (WINAPI *NotifyRouteChange)(PHANDLE, LPOVERLAPPED);
BOOL (WINAPI *CancelIPChangeNotify)(LPOVERLAPPED);
DWORD (WINAPI *NhpAllocateAndGetInterfaceInfoFromStack)(IP_INTERFACE_NAME_INFO **,
PDWORD, BOOL, HANDLE, DWORD);
HANDLE (WINAPI *IcmpCreateFile)();
BOOL (WINAPI *IcmpCloseHandle)(HANDLE);
DWORD (WINAPI *IcmpSendEcho)(HANDLE, IPAddr, LPVOID, WORD, PIP_OPTION_INFORMATION,
LPVOID, DWORD, DWORD);
} NETWORK_WIN32_FUNCTIONS;
#endif
#ifdef MICROSOFT_C
#ifdef MICROSOFT_C
// WCM related code on Windows 8
typedef enum _MS_WCM_PROPERTY
{
ms_wcm_global_property_domain_policy,
ms_wcm_global_property_minimize_policy,
ms_wcm_global_property_roaming_policy,
ms_wcm_global_property_roaming_policy,
ms_wcm_global_property_powermanagement_policy,
ms_wcm_intf_property_connection_cost, //used to set/get cost level and flags for the connection
ms_wcm_intf_property_dataplan_status, //used by MNO to indicate plan data associated with new cost
ms_wcm_intf_property_hotspot_profile, //used to store hotspot profile (WISPr credentials)
} MS_WCM_PROPERTY, *MS_PWCM_PROPERTY;
} MS_WCM_PROPERTY, * MS_PWCM_PROPERTY;
typedef struct _MS_WCM_POLICY_VALUE {
BOOL fValue;
BOOL fIsGroupPolicy;
} MS_WCM_POLICY_VALUE, *MS_PWCM_POLICY_VALUE;
} MS_WCM_POLICY_VALUE, * MS_PWCM_POLICY_VALUE;
#define MS_WCM_MAX_PROFILE_NAME 256
@ -212,21 +156,20 @@ typedef enum _MS_WCM_MEDIA_TYPE
ms_wcm_media_mbn,
ms_wcm_media_invalid,
ms_wcm_media_max
} MS_WCM_MEDIA_TYPE, *MS_PWCM_MEDIA_TYPE;
} MS_WCM_MEDIA_TYPE, * MS_PWCM_MEDIA_TYPE;
typedef struct _MS_WCM_PROFILE_INFO {
WCHAR strProfileName[MS_WCM_MAX_PROFILE_NAME];
GUID AdapterGUID;
MS_WCM_MEDIA_TYPE Media;
} MS_WCM_PROFILE_INFO, *MS_PWCM_PROFILE_INFO;
} MS_WCM_PROFILE_INFO, * MS_PWCM_PROFILE_INFO;
typedef struct _MS_WCM_PROFILE_INFO_LIST {
UINT dwNumberOfItems;
MS_WCM_PROFILE_INFO ProfileInfo[1];
} MS_WCM_PROFILE_INFO_LIST, *MS_PWCM_PROFILE_INFO_LIST;
} MS_WCM_PROFILE_INFO_LIST, * MS_PWCM_PROFILE_INFO_LIST;
// Internal structure
typedef struct MS
@ -235,7 +178,6 @@ typedef struct MS
HINSTANCE hKernel32;
bool IsNt;
bool IsAdmin;
struct NT_API *nt;
HANDLE hCurrentProcess;
UINT CurrentProcessId;
bool MiniDumpEnabled;
@ -294,112 +236,11 @@ typedef struct MS
bool IsWine;
} MS;
// For Windows NT API
typedef struct NT_API
{
HINSTANCE hAdvapi32;
HINSTANCE hShell32;
HINSTANCE hNewDev;
HINSTANCE hSetupApi;
HINSTANCE hWtsApi32;
HINSTANCE hPsApi;
HINSTANCE hKernel32;
HINSTANCE hSecur32;
HINSTANCE hUser32;
HINSTANCE hDbgHelp;
HINSTANCE hWcmapi;
HINSTANCE hDwmapi;
BOOL (WINAPI *OpenProcessToken)(HANDLE, DWORD, PHANDLE);
BOOL (WINAPI *LookupPrivilegeValue)(char *, char *, PLUID);
BOOL (WINAPI *AdjustTokenPrivileges)(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD);
BOOL (WINAPI *InitiateSystemShutdown)(LPTSTR, LPTSTR, DWORD, BOOL, BOOL);
BOOL (WINAPI *LogonUserW)(wchar_t *, wchar_t *, wchar_t *, DWORD, DWORD, HANDLE *);
BOOL (WINAPI *LogonUserA)(char *, char *, char *, DWORD, DWORD, HANDLE *);
BOOL (WINAPI *UpdateDriverForPlugAndPlayDevicesW)(HWND hWnd, LPCWSTR hardware_id, LPCWSTR inf_path, DWORD flag, PBOOL need_reboot);
DWORD (WINAPI *CM_Get_DevNode_Status_Ex)(PULONG, PULONG, DWORD, ULONG, HANDLE);
DWORD (WINAPI *CM_Get_Device_ID_ExA)(DWORD, LPSTR, ULONG, ULONG, HANDLE);
BOOL (WINAPI *WTSQuerySessionInformation)(HANDLE, DWORD, WTS_INFO_CLASS, wchar_t *, DWORD *);
void (WINAPI *WTSFreeMemory)(void *);
BOOL (WINAPI *WTSDisconnectSession)(HANDLE, DWORD, BOOL);
BOOL (WINAPI *WTSEnumerateSessions)(HANDLE, DWORD, DWORD, PWTS_SESSION_INFO *, DWORD *);
BOOL (WINAPI *WTSRegisterSessionNotification)(HWND, DWORD);
BOOL (WINAPI *WTSUnRegisterSessionNotification)(HWND);
SC_HANDLE (WINAPI *OpenSCManager)(LPCTSTR, LPCTSTR, DWORD);
SC_HANDLE (WINAPI *CreateServiceA)(SC_HANDLE, LPCTSTR, LPCTSTR, DWORD, DWORD, DWORD, DWORD, LPCTSTR, LPCTSTR, LPDWORD, LPCTSTR, LPCTSTR, LPCTSTR);
SC_HANDLE (WINAPI *CreateServiceW)(SC_HANDLE, LPCWSTR, LPCWSTR, DWORD, DWORD, DWORD, DWORD, LPCWSTR, LPCWSTR, LPDWORD, LPCWSTR, LPCWSTR, LPCWSTR);
BOOL (WINAPI *ChangeServiceConfig2)(SC_HANDLE, DWORD, LPVOID);
BOOL (WINAPI *CloseServiceHandle)(SC_HANDLE);
SC_HANDLE (WINAPI *OpenService)(SC_HANDLE, LPCTSTR, DWORD);
BOOL (WINAPI *QueryServiceStatus)(SC_HANDLE, LPSERVICE_STATUS);
BOOL (WINAPI *StartService)(SC_HANDLE, DWORD, LPCTSTR);
BOOL (WINAPI *ControlService)(SC_HANDLE, DWORD, LPSERVICE_STATUS);
BOOL (WINAPI *SetServiceStatus)(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS);
SERVICE_STATUS_HANDLE (WINAPI *RegisterServiceCtrlHandler)(LPCTSTR, LPHANDLER_FUNCTION);
BOOL (WINAPI *StartServiceCtrlDispatcher)(CONST LPSERVICE_TABLE_ENTRY);
BOOL (WINAPI *DeleteService)(SC_HANDLE);
BOOL (WINAPI *EnumProcesses)(DWORD *, DWORD, DWORD *);
BOOL (WINAPI *EnumProcessModules)(HANDLE, HMODULE *, DWORD, DWORD *);
DWORD (WINAPI *GetModuleFileNameExA)(HANDLE, HMODULE, LPSTR, DWORD);
DWORD (WINAPI *GetModuleFileNameExW)(HANDLE, HMODULE, LPWSTR, DWORD);
DWORD (WINAPI *GetProcessImageFileNameA)(HANDLE, LPSTR, DWORD);
DWORD (WINAPI *GetProcessImageFileNameW)(HANDLE, LPWSTR, DWORD);
BOOL (WINAPI *QueryFullProcessImageNameA)(HANDLE, DWORD, LPSTR, PDWORD);
BOOL (WINAPI *QueryFullProcessImageNameW)(HANDLE, DWORD, LPWSTR, PDWORD);
LONG (WINAPI *RegDeleteKeyExA)(HKEY, LPCTSTR, REGSAM, DWORD);
BOOL (WINAPI *IsWow64Process)(HANDLE, BOOL *);
void (WINAPI *GetNativeSystemInfo)(SYSTEM_INFO *);
BOOL (WINAPI *DuplicateTokenEx)(HANDLE, DWORD, SECURITY_ATTRIBUTES *, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, HANDLE *);
BOOL (WINAPI *ConvertStringSidToSidA)(LPCSTR, PSID *);
BOOL (WINAPI *SetTokenInformation)(HANDLE, TOKEN_INFORMATION_CLASS, void *, DWORD);
BOOL (WINAPI *GetTokenInformation)(HANDLE, TOKEN_INFORMATION_CLASS, void *, DWORD, PDWORD);
BOOL (WINAPI *CreateProcessAsUserA)(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, void *, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION);
BOOL (WINAPI *CreateProcessAsUserW)(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, void *, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION);
BOOL (WINAPI *LookupAccountSidA)(LPCSTR,PSID,LPSTR,LPDWORD,LPSTR,LPDWORD,PSID_NAME_USE);
BOOL (WINAPI *LookupAccountNameA)(LPCSTR,LPCSTR,PSID,LPDWORD,LPSTR,LPDWORD,PSID_NAME_USE);
BOOL (WINAPI *GetUserNameExA)(EXTENDED_NAME_FORMAT, LPSTR, PULONG);
BOOL (WINAPI *GetUserNameExW)(EXTENDED_NAME_FORMAT, LPWSTR, PULONG);
BOOL (WINAPI *SwitchDesktop)(HDESK);
HDESK (WINAPI *OpenDesktopA)(LPTSTR, DWORD, BOOL, ACCESS_MASK);
BOOL (WINAPI *CloseDesktop)(HDESK);
BOOL (WINAPI *SetProcessShutdownParameters)(DWORD, DWORD);
HANDLE (WINAPI *RegisterEventSourceW)(LPCWSTR, LPCWSTR);
BOOL (WINAPI *ReportEventW)(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCWSTR *, LPVOID);
BOOL (WINAPI *DeregisterEventSource)(HANDLE);
BOOL (WINAPI *Wow64DisableWow64FsRedirection)(void **);
BOOLEAN (WINAPI *Wow64EnableWow64FsRedirection)(BOOLEAN);
BOOL (WINAPI *Wow64RevertWow64FsRedirection)(void *);
BOOL (WINAPI *GetFileInformationByHandle)(HANDLE, LPBY_HANDLE_FILE_INFORMATION);
HANDLE (WINAPI *GetProcessHeap)();
BOOL (WINAPI *MiniDumpWriteDump)(HANDLE, DWORD, HANDLE, MINIDUMP_TYPE,
PMINIDUMP_EXCEPTION_INFORMATION, PMINIDUMP_USER_STREAM_INFORMATION,
PMINIDUMP_CALLBACK_INFORMATION);
BOOL (WINAPI *AllocateLocallyUniqueId)(PLUID);
NTSTATUS (NTAPI *LsaConnectUntrusted)(PHANDLE);
NTSTATUS (NTAPI *LsaLookupAuthenticationPackage)(HANDLE, PLSA_STRING, PULONG);
NTSTATUS (NTAPI *LsaLogonUser)(HANDLE, PLSA_STRING, SECURITY_LOGON_TYPE, ULONG,
PVOID, ULONG, PTOKEN_GROUPS, PTOKEN_SOURCE, PVOID, PULONG, PLUID, PHANDLE,
PQUOTA_LIMITS, PNTSTATUS);
NTSTATUS (NTAPI *LsaDeregisterLogonProcess)(HANDLE);
NTSTATUS (NTAPI *LsaFreeReturnBuffer)(PVOID);
DWORD (WINAPI *WcmQueryProperty)(const GUID *, LPCWSTR, MS_WCM_PROPERTY, PVOID, PDWORD, PBYTE *);
DWORD (WINAPI *WcmSetProperty)(const GUID *, LPCWSTR, MS_WCM_PROPERTY, PVOID, DWORD, const BYTE *);
void (WINAPI *WcmFreeMemory)(PVOID);
DWORD (WINAPI *WcmGetProfileList)(PVOID, MS_WCM_PROFILE_INFO_LIST **ppProfileList);
DWORD (WINAPI *SetNamedSecurityInfoW)(LPWSTR, DWORD, SECURITY_INFORMATION, PSID, PSID, PACL, PACL);
BOOL (WINAPI *AddAccessAllowedAceEx)(PACL, DWORD, DWORD, DWORD, PSID);
HRESULT (WINAPI *DwmIsCompositionEnabled)(BOOL *);
BOOL (WINAPI *GetComputerNameExW)(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD);
LONG (WINAPI *RegLoadKeyW)(HKEY, LPCWSTR, LPCWSTR);
LONG (WINAPI *RegUnLoadKeyW)(HKEY, LPCWSTR);
} NT_API;
typedef struct MS_EVENTLOG
{
HANDLE hEventLog;
} MS_EVENTLOG;
extern NETWORK_WIN32_FUNCTIONS *w32net;
typedef struct MS_USERMODE_SVC_PULSE_THREAD_PARAM
{
void *hWnd;
@ -613,7 +454,6 @@ bool MsRegDeleteValueEx2(UINT root, char *keyname, char *valuename, bool force32
bool MsRegLoadHive(UINT root, wchar_t *keyname, wchar_t *filename);
bool MsRegUnloadHive(UINT root, wchar_t *keyname);
bool MsIsNt();
bool MsIsAdmin();
bool MsIsWine();
bool MsEnablePrivilege(char *name, bool enable);
@ -740,10 +580,7 @@ bool MsIsUserMode();
void MsTestOnly();
void MsPlaySound(char *name);
void MsSetThreadSingleCpu();
void MsWin9xTest();
bool MsCheckVLanDeviceIdFromRootEnum(char *name);
bool MsInstallVLan9x(char *instance_name, MS_DRIVER_VER *ver);
void MsUpdateCompatibleIDs(char *instance_name);
LIST *MsGetProcessList();
LIST *MsGetProcessList9x();
LIST *MsGetProcessListNt();
@ -825,9 +662,6 @@ LIST *EnumAllChildWindowEx(HWND hWnd, bool no_recursion, bool include_ipcontrol,
LIST *EnumAllTopWindow();
bool MsExecDriverInstaller(char *arg);
bool MsIsVista();
bool MsIsWin2000OrGreater();
bool MsIsWinXPOrGreater();
void MsRegistWindowsFirewallEx(char *title, char *exe);
void MsRegistWindowsFirewallEx2(char *title, char *exe, char *dir);
bool MsIs64BitWindows();
@ -937,8 +771,6 @@ UINT64 MsGetSuspendModeBeginTick();
LONG CALLBACK MsExceptionHandler(struct _EXCEPTION_POINTERS *ExceptionInfo);
HKEY MsGetRootKeyFromInt(UINT root);
NT_API *MsLoadNtApiFunctions();
void MsFreeNtApiFunctions(NT_API *nt);
void MsDestroyDevInfo(HDEVINFO info);
HDEVINFO MsGetDevInfoFromDeviceId(SP_DEVINFO_DATA *dev_info_data, char *device_id);
bool MsStartDevice(HDEVINFO info, SP_DEVINFO_DATA *dev_info_data);