From 839d4a3617af3e4dfe3568fa793b268409123e4c Mon Sep 17 00:00:00 2001 From: henrypp Date: Sun, 5 May 2024 18:52:35 +0500 Subject: [PATCH] revert back win7 support --- bin/profile_internal.xml | Bin 17139 -> 17591 bytes packages.config | 2 +- simplewall.vcxproj | 20 +++---- src/helper.c | 63 +++++++++++++++++--- src/helper.h | 18 ++++++ src/icons.c | 17 +++--- src/log.c | 121 ++++++++++++++++++++++++++++++++++++++- src/log.h | 15 +++++ src/main.c | 6 +- src/packages.c | 6 +- src/timer.c | 4 +- src/wfp.c | 24 ++++---- 12 files changed, 252 insertions(+), 44 deletions(-) diff --git a/bin/profile_internal.xml b/bin/profile_internal.xml index 0433a2c2a196602d4c4d55c83c1e324268ae21bc..2bc72a6840eee811ab65ae3904bfe81af49e0151 100644 GIT binary patch literal 17591 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 VSzS;F|5r%)6o=1RQeyF2{x63Bj5q)Q literal 17139 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 - + \ No newline at end of file diff --git a/simplewall.vcxproj b/simplewall.vcxproj index 04524ca7..ce64952c 100644 --- a/simplewall.vcxproj +++ b/simplewall.vcxproj @@ -1,6 +1,6 @@  - + Debug @@ -170,7 +170,7 @@ Windows /DEPENDENTLOADFLAG:0x800 /BREPRO %(AdditionalOptions) %(DelayLoadDLLs) - 6.3 + 6.1 true @@ -201,7 +201,7 @@ true true Windows - 6.3 + 6.1 /DEPENDENTLOADFLAG:0x800 /BREPRO %(AdditionalOptions) true %(DelayLoadDLLs) @@ -236,7 +236,7 @@ true Windows /DEPENDENTLOADFLAG:0x800 /BREPRO %(AdditionalOptions) - 6.3 + 6.1 true %(DelayLoadDLLs) true @@ -274,7 +274,7 @@ /DEPENDENTLOADFLAG:0x800 /BREPRO %(AdditionalOptions) UseLinkTimeCodeGeneration %(DelayLoadDLLs) - 6.3 + 6.1 true @@ -309,7 +309,7 @@ true true Windows - 6.3 + 6.1 /DEPENDENTLOADFLAG:0x800 /BREPRO %(AdditionalOptions) true UseLinkTimeCodeGeneration @@ -349,7 +349,7 @@ true Windows /DEPENDENTLOADFLAG:0x800 /BREPRO %(AdditionalOptions) - 6.3 + 6.1 true UseLinkTimeCodeGeneration %(DelayLoadDLLs) @@ -418,13 +418,13 @@ - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - + + \ No newline at end of file diff --git a/src/helper.c b/src/helper.c index fd183f50..f385d719 100644 --- a/src/helper.c +++ b/src/helper.c @@ -672,28 +672,75 @@ BOOLEAN _app_calculatefilehash ( _Out_ HCATADMIN_PTR hcat_admin_ptr ) { + static R_INITONCE init_once = PR_INITONCE_INIT; + static CCAHFFH2 _CryptCATAdminCalcHashFromFileHandle2 = NULL; + static CCAAC2 _CryptCATAdminAcquireContext2 = NULL; + const GUID DriverActionVerify = DRIVER_ACTION_VERIFY; HCATADMIN hcat_admin; + PVOID hwintrust; PBYTE file_hash; ULONG file_hash_length; + NTSTATUS status; - if (!CryptCATAdminAcquireContext2 (&hcat_admin, &DriverActionVerify, algorithm_id, NULL, 0)) - return FALSE; + if (_r_initonce_begin (&init_once)) + { + status = _r_sys_loadlibrary (L"wintrust.dll", 0, &hwintrust); + + if (hwintrust) + { + _r_sys_getprocaddress (hwintrust, "CryptCATAdminAcquireContext2", 0, (PVOID_PTR)&_CryptCATAdminAcquireContext2); + _r_sys_getprocaddress (hwintrust, "CryptCATAdminCalcHashFromFileHandle2", 0, (PVOID_PTR)&_CryptCATAdminCalcHashFromFileHandle2); + + // _r_sys_freelibrary (hwintrust, FALSE); + } + + _r_initonce_end (&init_once); + } + + if (_CryptCATAdminAcquireContext2) + { + if (!_CryptCATAdminAcquireContext2 (&hcat_admin, &DriverActionVerify, algorithm_id, NULL, 0)) + return FALSE; + } + else + { + if (!CryptCATAdminAcquireContext (&hcat_admin, &DriverActionVerify, 0)) + return FALSE; + } file_hash_length = 32; file_hash = _r_mem_allocate (file_hash_length); - if (!CryptCATAdminCalcHashFromFileHandle2 (hcat_admin, hfile, &file_hash_length, file_hash, 0)) + if (_CryptCATAdminCalcHashFromFileHandle2) { - file_hash = _r_mem_reallocate (file_hash, file_hash_length); + if (!_CryptCATAdminCalcHashFromFileHandle2 (hcat_admin, hfile, &file_hash_length, file_hash, 0)) + { + file_hash = _r_mem_reallocate (file_hash, file_hash_length); + + if (!_CryptCATAdminCalcHashFromFileHandle2 (hcat_admin, hfile, &file_hash_length, file_hash, 0)) + { + CryptCATAdminReleaseContext (hcat_admin, 0); + _r_mem_free (file_hash); - if (!CryptCATAdminCalcHashFromFileHandle2 (hcat_admin, hfile, &file_hash_length, file_hash, 0)) + return FALSE; + } + } + } + else + { + if (!CryptCATAdminCalcHashFromFileHandle (hfile, &file_hash_length, file_hash, 0)) { - CryptCATAdminReleaseContext (hcat_admin, 0); - _r_mem_free (file_hash); + file_hash = _r_mem_reallocate (file_hash, file_hash_length); - return FALSE; + if (!CryptCATAdminCalcHashFromFileHandle (hfile, &file_hash_length, file_hash, 0)) + { + CryptCATAdminReleaseContext (hcat_admin, 0); + _r_mem_free (file_hash); + + return FALSE; + } } } diff --git a/src/helper.h b/src/helper.h index e274ea0e..988a91ca 100644 --- a/src/helper.h +++ b/src/helper.h @@ -14,6 +14,24 @@ typedef struct _ICON_INFORMATION LONG uwp_icon_id; } ICON_INFORMATION, *PICON_INFORMATION; +// CryptCATAdminAcquireContext2 (win8+) +typedef BOOL (WINAPI *CCAAC2)( + _Out_ PHANDLE hcat_admin, + _In_opt_ LPCGUID pgSubsystem, + _In_opt_ PCWSTR pwszHashAlgorithm, + _In_opt_ PCCERT_STRONG_SIGN_PARA pStrongHashPolicy, + _Reserved_ DWORD dwFlags + ); + +// CryptCATAdminCalcHashFromFileHandle2 (win8+) +typedef BOOL (WINAPI *CCAHFFH2)( + _In_ HCATADMIN hCatAdmin, + _In_ HANDLE hFile, + _Inout_ DWORD *pcbHash, + _Out_writes_bytes_to_opt_ (*pcbHash, *pcbHash) BYTE *pbHash, + _Reserved_ DWORD dwFlags + ); + #define FMTADDR_AS_RULE 0x0001 #define FMTADDR_USE_PROTOCOL 0x0002 diff --git a/src/icons.c b/src/icons.c index 570c41d5..ffb8a4b6 100644 --- a/src/icons.c +++ b/src/icons.c @@ -35,15 +35,18 @@ PICON_INFORMATION _app_icons_getdefault () _r_obj_dereference (path); // load uwp icons - path = _r_obj_concatstrings ( - 2, - _r_sys_getsystemdirectory ()->buffer, - L"\\wsreset.exe" - ); + if (_r_sys_isosversiongreaterorequal (WINDOWS_8)) + { + path = _r_obj_concatstrings ( + 2, + _r_sys_getsystemdirectory ()->buffer, + L"\\wsreset.exe" + ); - _app_icons_loadfromfile (path, 0, &icon_info.uwp_icon_id, &icon_info.uwp_hicon, FALSE); + _app_icons_loadfromfile (path, 0, &icon_info.uwp_icon_id, &icon_info.uwp_hicon, FALSE); - _r_obj_dereference (path); + _r_obj_dereference (path); + } _r_initonce_end (&init_once); } diff --git a/src/log.c b/src/log.c index c8689ea5..411d2cc3 100644 --- a/src/log.c +++ b/src/log.c @@ -325,6 +325,7 @@ VOID _wfp_logsubscribe ( FWPMNES4 _FwpmNetEventSubscribe4 = NULL; FWPMNES3 _FwpmNetEventSubscribe3 = NULL; FWPMNES2 _FwpmNetEventSubscribe2 = NULL; + FWPMNES1 _FwpmNetEventSubscribe1 = NULL; HANDLE current_handle; HANDLE new_handle = NULL; PVOID hfwpuclnt; @@ -372,9 +373,16 @@ VOID _wfp_logsubscribe ( if (NT_SUCCESS (status)) status = _FwpmNetEventSubscribe2 (engine_handle, &subscription, &_wfp_logcallback2, ULongToPtr (WINDOWS_10_RS1), &new_handle); // win10rs1+ } + else if (_r_sys_isosversiongreaterorequal (WINDOWS_8)) + { + status = _r_sys_getprocaddress (hfwpuclnt, "FwpmNetEventSubscribe1", 0, (PVOID_PTR)&_FwpmNetEventSubscribe1); + + if (NT_SUCCESS (status)) + status = _FwpmNetEventSubscribe1 (engine_handle, &subscription, &_wfp_logcallback1, ULongToPtr (WINDOWS_8), &new_handle); // win8+ + } else { - status = FwpmNetEventSubscribe1 (engine_handle, &subscription, &_wfp_logcallback1, ULongToPtr (WINDOWS_8_1), &new_handle); // win8+ + status = FwpmNetEventSubscribe0 (engine_handle, &subscription, &_wfp_logcallback0, ULongToPtr (WINDOWS_7), &new_handle); // win7+ } if (status != STATUS_SUCCESS) @@ -436,6 +444,10 @@ VOID _wfp_logsetoption ( UINT32 mask = 0; ULONG status; + // configure dropped packets logging (win8+) + if (!_r_sys_isosversiongreaterorequal (WINDOWS_8)) + return; + // add allowed connections monitor if (!_r_config_getboolean (L"IsExcludeClassifyAllow", TRUE)) mask |= FWPM_NET_EVENT_KEYWORD_CLASSIFY_ALLOW; @@ -1033,7 +1045,7 @@ BOOLEAN log_struct_to_f ( break; } - case WINDOWS_8_1: + case WINDOWS_8: { const FWPM_NET_EVENT2 *evt = event_data; @@ -1145,6 +1157,97 @@ BOOLEAN log_struct_to_f ( break; } + case WINDOWS_7: + { + const FWPM_NET_EVENT1 *evt = event_data; + + if (evt->type == FWPM_NET_EVENT_TYPE_CLASSIFY_DROP && evt->classifyDrop) + { + log->layer_id = evt->classifyDrop->layerId; + log->filter_id = evt->classifyDrop->filterId; + log->direction = evt->classifyDrop->msFwpDirection; + log->is_loopback = !!evt->classifyDrop->isLoopback; + } + else if (evt->type == FWPM_NET_EVENT_TYPE_IPSEC_KERNEL_DROP && evt->ipsecDrop) + { + log->layer_id = evt->ipsecDrop->layerId; + log->filter_id = evt->ipsecDrop->filterId; + log->direction = evt->ipsecDrop->direction; + } + else + { + return FALSE; + } + + // indicates the direction of the packet transmission and set valid directions + switch (log->direction) + { + case FWP_DIRECTION_IN: + case FWP_DIRECTION_INBOUND: + { + log->direction = FWP_DIRECTION_INBOUND; + break; + } + + case FWP_DIRECTION_OUT: + case FWP_DIRECTION_OUTBOUND: + { + log->direction = FWP_DIRECTION_OUTBOUND; + break; + } + + default: + { + return FALSE; + } + } + + log->flags = evt->header.flags; + + RtlCopyMemory (&log->timestamp, &evt->header.timeStamp, sizeof (log->timestamp)); + + if (evt->header.flags & FWPM_NET_EVENT_FLAG_APP_ID_SET) + log->app_id = evt->header.appId.data; + + if (evt->header.flags & FWPM_NET_EVENT_FLAG_USER_ID_SET) + log->user_id = evt->header.userId; + + if (evt->header.flags & FWPM_NET_EVENT_FLAG_IP_PROTOCOL_SET) + log->protocol = evt->header.ipProtocol; + + if (evt->header.flags & FWPM_NET_EVENT_FLAG_LOCAL_PORT_SET) + log->local_port = evt->header.localPort; + + if (evt->header.flags & FWPM_NET_EVENT_FLAG_REMOTE_PORT_SET) + log->remote_port = evt->header.remotePort; + + if (evt->header.flags & FWPM_NET_EVENT_FLAG_IP_VERSION_SET) + { + log->version = evt->header.ipVersion; + + if (evt->header.ipVersion == FWP_IP_VERSION_V4) + { + if (evt->header.flags & FWPM_NET_EVENT_FLAG_LOCAL_ADDR_SET) + log->local_addr4 = evt->header.localAddrV4; + + if (evt->header.flags & FWPM_NET_EVENT_FLAG_REMOTE_ADDR_SET) + log->remote_addr4 = evt->header.remoteAddrV4; + } + else if (evt->header.ipVersion == FWP_IP_VERSION_V6) + { + if (evt->header.flags & FWPM_NET_EVENT_FLAG_LOCAL_ADDR_SET) + log->local_addr6 = &evt->header.localAddrV6; + + if (evt->header.flags & FWPM_NET_EVENT_FLAG_REMOTE_ADDR_SET) + log->remote_addr6 = &evt->header.remoteAddrV6; + } + } + else + { + log->version = FWP_IP_VERSION_NONE; + } + } + default: { return FALSE; @@ -1154,7 +1257,7 @@ BOOLEAN log_struct_to_f ( return TRUE; } -// win81+ callback +// win8+ callback VOID CALLBACK _wfp_logcallback1 ( _In_ PVOID context, _In_ const FWPM_NET_EVENT2* event_data @@ -1166,6 +1269,18 @@ VOID CALLBACK _wfp_logcallback1 ( _wfp_logcallback (&log); } +// win7+ callback +VOID CALLBACK _wfp_logcallback0 ( + _In_ PVOID context, + _In_ const FWPM_NET_EVENT1* event_data +) +{ + ITEM_LOG_CALLBACK log; + + if (log_struct_to_f (PtrToUlong (context), &log, (LPCVOID)event_data)) + _wfp_logcallback (&log); +} + // win10rs1+ callback VOID CALLBACK _wfp_logcallback2 ( _In_ PVOID context, diff --git a/src/log.h b/src/log.h index 172acf5a..86eec74b 100644 --- a/src/log.h +++ b/src/log.h @@ -30,6 +30,15 @@ typedef ULONG (WINAPI *FWPMNES2)( _Out_ PHANDLE events_handle ); +// FwpmNetEventSubscribe1 (win8+) +typedef ULONG (WINAPI *FWPMNES1)( + _In_ HANDLE engine_handle, + _In_ const FWPM_NET_EVENT_SUBSCRIPTION0 *subscription, + _In_ FWPM_NET_EVENT_CALLBACK1 callback, + _In_opt_ PVOID context, + _Out_ PHANDLE events_handle + ); + VOID _app_loginit ( _In_ BOOLEAN is_install ); @@ -88,6 +97,12 @@ VOID CALLBACK _wfp_logcallback ( _In_ PITEM_LOG_CALLBACK log ); +// win7+ callback +VOID CALLBACK _wfp_logcallback0 ( + _In_ PVOID context, + _In_ const FWPM_NET_EVENT1* event_data +); + // win8+ callback VOID CALLBACK _wfp_logcallback1 ( _In_ PVOID context, diff --git a/src/main.c b/src/main.c index 6129d143..77d18a06 100644 --- a/src/main.c +++ b/src/main.c @@ -763,6 +763,10 @@ INT_PTR CALLBACK SettingsProc ( _r_ctrl_checkbutton (hwnd, IDC_EXCLUDESTEALTH_CHK, _r_config_getboolean (L"IsExcludeStealth", TRUE)); _r_ctrl_checkbutton (hwnd, IDC_EXCLUDECLASSIFYALLOW_CHK, _r_config_getboolean (L"IsExcludeClassifyAllow", TRUE)); + // win8+ + if (_r_sys_isosversionlower (WINDOWS_8)) + _r_ctrl_enable (hwnd, IDC_EXCLUDECLASSIFYALLOW_CHK, FALSE); + break; } @@ -1132,7 +1136,7 @@ INT_PTR CALLBACK SettingsProc ( _r_ctrl_setstringformat ( hwnd, IDC_EXCLUDECLASSIFYALLOW_CHK, - L"%s %s", + L"%s %s [win8+]", _r_locale_getstring (IDS_TITLE_EXCLUDE), _r_locale_getstring (IDS_EXCLUDECLASSIFYALLOW_CHK) ); diff --git a/src/packages.c b/src/packages.c index 25fce1ec..8202214e 100644 --- a/src/packages.c +++ b/src/packages.c @@ -317,7 +317,8 @@ VOID _app_package_getpackageslist () if (!NT_SUCCESS (status)) { - _r_log (LOG_LEVEL_WARNING, NULL, L"_r_reg_openkey", status, reg_byname); + if (status != STATUS_OBJECT_NAME_NOT_FOUND) + _r_log (LOG_LEVEL_WARNING, NULL, L"_r_reg_openkey", status, reg_byname); } else { @@ -337,7 +338,8 @@ VOID _app_package_getpackageslist () if (!NT_SUCCESS (status)) { - _r_log (LOG_LEVEL_WARNING, NULL, L"_r_reg_openkey", status, reg_bysid); + if (status != STATUS_OBJECT_NAME_NOT_FOUND) + _r_log (LOG_LEVEL_WARNING, NULL, L"_r_reg_openkey", status, reg_bysid); } else { diff --git a/src/timer.c b/src/timer.c index b5b33699..a5e959a2 100644 --- a/src/timer.c +++ b/src/timer.c @@ -62,7 +62,7 @@ VOID _app_timer_set ( if (ptr_app->htimer) { - TpSetTimerEx (ptr_app->htimer, &li, 0, 0); + TpSetTimer (ptr_app->htimer, &li, 0, 0); is_created = TRUE; } @@ -72,7 +72,7 @@ VOID _app_timer_set ( if (NT_SUCCESS (status)) { - TpSetTimerEx (htimer, &li, 0, 0); + TpSetTimer (htimer, &li, 0, 0); ptr_app->htimer = htimer; diff --git a/src/wfp.c b/src/wfp.c index 78976923..197ee200 100644 --- a/src/wfp.c +++ b/src/wfp.c @@ -380,19 +380,22 @@ BOOLEAN _wfp_initialize ( } // packet queuing (win8+) - if (_r_config_getboolean (L"IsPacketQueuingEnabled", TRUE)) + if (_r_sys_isosversiongreaterorequal (WINDOWS_8)) { - // Enables inbound or forward packet queuing independently. - // when enabled, the system is able to evenly distribute cpu load - // to multiple cpus for site-to-site ipsec tunnel scenarios. + if (_r_config_getboolean (L"IsPacketQueuingEnabled", TRUE)) + { + // Enables inbound or forward packet queuing independently. + // when enabled, the system is able to evenly distribute cpu load + // to multiple cpus for site-to-site ipsec tunnel scenarios. - val.type = FWP_UINT32; - val.uint32 = FWPM_ENGINE_OPTION_PACKET_QUEUE_INBOUND | FWPM_ENGINE_OPTION_PACKET_QUEUE_FORWARD; + val.type = FWP_UINT32; + val.uint32 = FWPM_ENGINE_OPTION_PACKET_QUEUE_INBOUND | FWPM_ENGINE_OPTION_PACKET_QUEUE_FORWARD; - status = FwpmEngineSetOption0 (engine_handle, FWPM_ENGINE_PACKET_QUEUING, &val); + status = FwpmEngineSetOption0 (engine_handle, FWPM_ENGINE_PACKET_QUEUING, &val); - if (status != ERROR_SUCCESS) - _r_log (LOG_LEVEL_WARNING, NULL, L"FwpmEngineSetOption0", status, L"FWPM_ENGINE_PACKET_QUEUING"); + if (status != ERROR_SUCCESS) + _r_log (LOG_LEVEL_WARNING, NULL, L"FwpmEngineSetOption0", status, L"FWPM_ENGINE_PACKET_QUEUING"); + } } CleanupExit: @@ -806,7 +809,8 @@ ULONG _wfp_createfilter ( filter.flags |= FWPM_FILTER_FLAG_PERSISTENT; // filter is indexed to help enable faster lookup during classification (win8+) - filter.flags |= FWPM_FILTER_FLAG_INDEXED; + if (_r_sys_isosversiongreaterorequal (WINDOWS_8)) + filter.flags |= FWPM_FILTER_FLAG_INDEXED; } if (flags)