WinDivert в Zapret: что это и почему service is NOT running
WinDivert — драйвер, через который winws.exe перехватывает трафик. «NOT running» при выключенном обходе — норма, а WinDivert64.sys file NOT found. почти всегда значит, что файл унёс антивирус.
WinDivert — это драйвер, через который сборка перехватывает и изменяет сетевой трафик: без него обход не работает в принципе. Если в Check Status вы видите "WinDivert" service is NOT running., сначала посмотрите строку выше, про winws.exe: при выключенном обходе так и должно быть. А вот красная строка WinDivert64.sys file NOT found. значит, что файла драйвера в сборке нет, и почти всегда его унёс антивирус.
Что такое WinDivert и зачем он сборке
Пакеты, которые Windows отправляет в сеть и принимает из неё, проходят через сетевой стек. WinDivert встраивается в этот путь: драйвер перехватывает пакеты по фильтру портов и отдаёт их программе winws.exe, а та дробит и подменяет их так, как требует выбранная стратегия. Документация сборки описывает это коротко: «Он может использоваться как хорошими, так и плохими программами, но сам по себе не является вирусом».
В сборке WinDivert лежит в папке bin двумя файлами: bin\WinDivert64.sys, это сам драйвер, и bin\WinDivert.dll. Когда вы запускаете обход, winws.exe поднимает драйвер, и в списке служб Windows появляется служба WinDivert (иногда WinDivert14). Закрываете вы winws.exe, и служба драйвера остаётся висеть до следующего запуска или снятия вручную; снять её можно через Remove Services. Что именно снимает этот пункт, разобрано отдельно.
Как читать строки про WinDivert в Check Status и диагностике
Check Status пишет про WinDivert одну строку, а Run Diagnostics выводит несколько. Что значит каждая:
"WinDivert" service is RUNNING.
Драйвер загружен, обход использует его прямо сейчас
Ничего не делать, всё в порядке
"WinDivert" service is NOT running.
Служба драйвера не поднята
Посмотреть строку про winws.exe рядом: если он тоже не запущен, обход просто выключен и это норма; как читать все строки Check Status вместе
WinDivert64.sys file NOT found.
В папке bin нет файла драйвера, почти всегда это работа антивируса
Зайти в антивирус, найти файл в карантине, настроить исключение и заново распаковать сборку
[?] winws.exe is not running but WinDivert service is active. Attempting to delete WinDivert...
Драйвер остался в службах без работающей программы обхода, диагностика снимает его сама
Подождать результат: зелёная строка скажет, что получилось
[X] WinDivert still cannot be deleted. Check manually if any other bypass is using WinDivert.
Драйвер занят чем-то ещё, и диагностика не смогла его снять
Найти, кто держит драйвер, и остановить его
Различайте два сообщения, которые похожи: «not running» говорит о состоянии службы, а «NOT found» сообщает об отсутствии файла. Лечатся они по-разному. В первом случае запустите обход или снимите зависший драйвер, во втором случае разберитесь с антивирусом.
WinDivert64.sys file NOT found.: файл забрал антивирус
Антивирусы видят в WinDivert64.sys драйвер перехвата трафика и относят его к классам риска. Документация сборки предупреждает об этом прямо: при таком детекте «детект обязательно имеет название WinDivert или Not-a-virus:RiskTool.Multi.WinDivert», файл удаляется и попадает в карантин. То есть если антивирус показал уведомление с таким именем, а в bin после этого нет WinDivert64.sys, это та самая ситуация, файл не сломан и не потерян.
Что советует документация: либо добавить папку сборки в исключения антивируса, либо отключить детектирование PUA, то есть потенциально нежелательных приложений. В Касперском для этого есть галочка «Обнаруживать легальные приложения, которые злоумышленники часто используют для нанесения вреда». Выбор по документации такой: понимаете, что делаете, при аккуратной настройке настраивайте исключение; если не до конца понимаете, отключайте детект PUA. Про настройку исключений рассказано на странице об установке сборки.
После исключения верните файл в папку: распакуйте архив со сборкой заново в ту же папку, чтобы WinDivert64.sys и WinDivert.dll легли на место. Восстановление из карантина иногда срабатывает, но иногда файл возвращается не туда или уходит в карантин снова, поэтому надёжнее свежая распаковка.
WinDivert остался в службах после закрытия обхода
Когда winws.exe закрыт, а служба WinDivert осталась активной, это не поломка, но драйвер висит занятым. Диагностика из service.bat разбирается с этим сама: находит активный WinDivert без winws.exe, пробует остановить и удалить службу. Если не вышло, ищет обходчик, который держит драйвер: например, останавливает и снимает службу GoodbyeDPI, потом пробует снова. Поэтому сначала просто запустите Run Diagnostics и дайте ей отработать; руками делайте то же самое только после строки с Check manually. Что ещё может занимать драйвер, разобрано отдельно.
Ручной путь из документации состоит из трёх команд в консоли от администратора. Первая покажет точное имя службы:
driverquery | find "Divert"
sc stop название_из_первого_шага
sc delete название_из_первого_шагаПосле sc delete служба исчезает из списка, и при следующем запуске обхода winws.exe поднимет драйвер заново.
Античит и Windows 7
Античиты в играх нередко ругаются на WinDivert, потому что он перехватывает трафик. В README сборки для этого случая есть отдельный раздел «Античит ругается на WinDivert» с отсылкой к инструкции в разделе windivert-hide репозитория zapret-win-bundle, прочитайте её там.
На Windows 7 драйвер WinDivert из основной сборки не грузится: система требует цифровую подпись драйвера. Документация предлагает заменить WinDivert.dll и WinDivert64.sys в папке bin на одноимённые файлы из zapret-win-bundle/win7, это файлы с подписью, которые Windows 7 принимает. После замены обход запускается обычным порядком.
Вопросы, которые остаются
Антивирус удалил файл, я восстановил его из карантина, но всё равно WinDivert64.sys file NOT found.
Восстановление из карантина часто возвращает файл не в ту папку, а если исключение не настроено, антивирус при следующей проверке уносит его снова. Сначала настройте исключение на папку сборки, потом распакуйте архив в эту же папку заново.
Можно просто отключить антивирус на время, пока пользуюсь обходом?
Файл вернётся, но при первой же проверке снова уйдёт в карантин, и всё повторится. Нужна не пауза, а постоянное исключение на папку сборки. Подойдёт и отключённый детект PUA, если исключение настраивать не хочется.
Диагностика написала WinDivert successfully removed. Обход сломался?
Нет. Снят только зависший драйвер без работающего winws.exe, тот случай, когда обход был выключен, а служба осталась. При следующем запуске обхода через bat-файл со стратегией или через службу драйвер поднимется заново, делать ничего не нужно.
В driverquery два имени: WinDivert и WinDivert14. Оба удалять?
Да, это второе имя того же драйвера из другой версии библиотеки. Remove Services снимает оба; если делаете руками через sc delete, удаляйте по очереди каждое.
Дальше по теме