Перейти к содержимому

 Друзья: Всё для вебмастера | [ Реклама на форуме ]


Rutor


LSP: Почему не работает с службами windows 10?

C/C++

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1
806d8f0

806d8f0

    Бит

  • Members
  • 2 сообщений
Доброго времени суток. Из исходников msdn собрал свой firewall по технологии LSP(Layered Service Provider). Тестил на win 7 (x32,x64) - всё работает прекрасно. Даже системные процессы захватывает, такие как lsass.exe, [System]. Проблемы начались когда тесты перешли на win 10. Библиотека перестала работать с службами windows, только подхватывается обычными процессами(браузеры, игры).
После повторного, долгого и тщательного изучения документации выяснил следующее:

On Windows Vista and later, an LSP can be classified based on how it interacts with Windows Sockets calls and data. An LSP category is an identifiable group of behaviors on a subset of Winsock SPI functions. For example, an HTTP content filter would be categorized as a data inspector (the LSP_INSPECTOR category).
An LSP may belong to more than one category. For example, a firewall/security LSP could belong to both the inspector (LSP_INSPECTOR) and firewall (LSP_FIREWALL) categories.
If an LSP does not have a category set, it is considered to be in the All Other category. This LSP category will not be loaded in services or system processes (for example, lsass, winlogon, and many svchost processes).

Источник: https://docs.microso...nd-applications
Чтобы заставить библиотеку работать с системными службами(services), я добавил следующий код в инсталляторе(после вызова WSCInstallProviderAndChains):

DWORD lspCategory = 0xFFFFFFFF;
	   // DWORD lspCategory = LSP_SYSTEM | LSP_FIREWALL | LSP_INSPECTOR; // | LSP_REDIRECTOR | LSP_PROXY | ;
			//| LSP_INBOUND_MODIFY | LSP_OUTBOUND_MODIFY | LSP_CRYPTO_COMPRESS; // | LSP_LOCAL_CACHE;

		fprintf(stderr, "category: %d \n", lspCategory);
		fprintf(stderr, "sizeof: %zd  \n", sizeof(lspCategory));
		rc = WSCSetProviderInfo(providerGuid, ProviderInfoLspCategories, (PBYTE)&lspCategory, sizeof(lspCategory), NULL, &error);
		if (rc == SOCKET_ERROR) {
			fprintf(stderr, "InstallProviderVista: %s failed: %d\n",
				"WSCSetProviderInfo32", error);
			goto cleanup;
		}

Я пробовал значение lspCategory менять на LSP_SYSTEM, LSP_FIREWALL... на 0xFFFFFFFF. Пробовал просто оставить NULL. Но, увы мои попытки не увенчались успехом. Прошу помощи у тех, кто может разбирался в этом и знает в чем проблема?

#2
Xech

Xech

    Бит

  • Members
  • 7 сообщений
Значение lspCategory ,  когда меняешь LSP_SYSTEM, LSP_FIREWALL... на 0xFFFFFFFF, что происходит? Должно заработать. Есть детальный лог?

#3
806d8f0

806d8f0

    Бит

  • Members
  • 2 сообщений

Просмотр сообщенияXech (27 February 2020 - 06:19) писал:

Значение lspCategory ,  когда меняешь LSP_SYSTEM, LSP_FIREWALL... на 0xFFFFFFFF, что происходит? Должно заработать. Есть детальный лог?
Та ничего не происходит. Никаких ошибок нет. Единственное заметил, что если зайти из под встроенной админки, и из неё установить библиотеку, то она начнет подхватывать некоторые службы. Но почему-то всё равно не все. Либо я не правильно алгоритм установки использую(хотя на win7 всё работает), либо не знаю :(


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных