• XSS.stack #1 – первый литературный журнал от юзеров форума

Запрос брандмауэра и его отключение (Windows 10, требуется администратор)

Sesame

floppy-диск
Пользователь
Регистрация
27.11.2021
Сообщения
1
Реакции
1
Код:
#include <Windows.h>
#include <netfw.h>

DWORD Win32FromHResult(HRESULT Result)
{
    if ((Result & 0xFFFF0000) == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, 0))
        return HRESULT_CODE(Result);

    return (Result == S_OK ? ERROR_SUCCESS : ERROR_CAN_NOT_COMPLETE);
}

HRESULT CoNetfwInitialize2(INetFwPolicy2** Policy)
{
    return CoCreateInstance(__uuidof(NetFwPolicy2), NULL, CLSCTX_INPROC_SERVER, __uuidof(INetFwPolicy2), (PVOID*)Policy);
}

HRESULT CoNetFwGetFirewallActivationStatus2(INetFwPolicy2* Policy, NET_FW_PROFILE_TYPE2 Type, PBOOL Status)
{
    HRESULT Result = S_OK;
    VARIANT_BOOL IsEnabled;
    *Status = FALSE;

    //https://docs.microsoft.com/en-us/windows/win32/api/icftypes/ne-icftypes-net_fw_profile_type2

    if (!SUCCEEDED(Result = Policy->get_FirewallEnabled(Type , &IsEnabled)))
        return Result;

    if (IsEnabled == VARIANT_TRUE)
        *Status = TRUE;

    return Result;
}

HRESULT CoNetFwSetFirewallActivationStatus2(INetFwPolicy2* Policy, NET_FW_PROFILE_TYPE2 Type, PBOOL Status)
{
    HRESULT Result = S_OK;
    VARIANT_BOOL Bool;

    *Status ? Bool = VARIANT_TRUE : Bool = VARIANT_FALSE;

    Result = Policy->put_FirewallEnabled(Type, Bool);

    Bool == VARIANT_TRUE ? *Status = TRUE : *Status = FALSE;

    return Result;
}

INT main(VOID)
{
    HRESULT Result = S_OK;
    INetFwPolicy2* Policy = NULL;
    DWORD dwError = ERROR_SUCCESS;
    BOOL bActivationStatus = FALSE;
    BOOL bFlag = FALSE;

    if (!SUCCEEDED(Result = CoInitializeEx(0, COINIT_APARTMENTTHREADED)))
        goto EXIT_ROUTINE;

    if (!SUCCEEDED(Result = CoNetfwInitialize2(&Policy)))
        goto EXIT_ROUTINE;

    if (!SUCCEEDED(Result = CoNetFwGetFirewallActivationStatus2(Policy, NET_FW_PROFILE2_PRIVATE, &bActivationStatus)))
        goto EXIT_ROUTINE;

    if (!SUCCEEDED(Result = CoNetFwSetFirewallActivationStatus2(Policy, NET_FW_PROFILE2_PRIVATE, &bActivationStatus)))
        goto EXIT_ROUTINE;


EXIT_ROUTINE:

    if (!bFlag)
        dwError = Win32FromHResult(Result);

    if (Policy)
        Policy->Release();

    CoUninitialize();

    return dwError;
}

Желаю всем продуктивной работы и приятного вечера
 
Желаю всем продуктивной работы и приятного вечера

Если с правами администратора, то достаточно выполнить команду:

Код:
netsh advfirewall set allprofiles state off

Отключение службы брандмауэра через реестр:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mpssvc\
Строковый параметр DWORD, имя Start, значение 4

Скрыть уведомление об отключении брандмауэра на панели задач:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender SecurityCenter\Notifications\
Строковый параметр DWORD, имя DisableNotifications, значение 1
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх