﻿TODO:
+ Добавить поддержку фильтрации открытия и создания key
+ Добавить поддержку фильтрации перечисления key
+ Добавить поддержку фильтрации перечисления value
+ Вынести fs filter и reg filter в отдельные файлы
+ Протестировать фишки с ObRegisterCallback
	+ Стерание всех флагов
+ Реализовать PsMonitor со всеми вытекающими
	+ Реализовать рабочий прототип
		+ Для Exclude
		+ Для Protected
		+ Добавить флаг наследования
	+ Реализовать интерфейс для IOCTL
	+ Реализовать интерфейс для File & Reg мониторов
	+ Вынести Process Table в отдельный файл
		+ Переименовать Process Tree в Process Table
+ Протестировать интерфейсы
	+ Добавить в HiddenCLI загрузку excluded и protected процессов
	+ Добавить проект HiddenTest
	+ Реализовать тесты в проекте HiddenTest
		+ FS monitor
		+ Reg filter
		+ Ps filter
			+ Добавить код тестирования для add\remove excluded image
+ Добавить в Reg filter поддержку всех возможных операций над value
	+ set value
	+ delete value
	+ query value
	+ query multiple value
- Переписать Exclude List на основе AVL или других buildin generic trees
	- FS monitor
	- Reg monitor
+ Реализовать конвертирование пути в пути драйвера
	+ Ps monitor
	+ FS filter
	+ Reg filter
+ Реализовать RemoveAllExcludeListEntries
+ Реализовать все ф-и Ps monitor
	+ Добавить в библиотеку поддержку get\set state
	+ Решить проблему с protected (возможно разрешить создавать такие процессы только из protected\system)
+ Реализовать IOCTL протокол управления
	+ Реализовать usermode библиотеку для работы с IOCTL API
		+ Слинковать с IOCTL API lib
+ Добавить поддержку флага автоприсвоение состояния существующим процессам для Hid_AddExcludedImage\Hid_AddProtectedImage
+ Проверить как ведёт себя файловый фильтр с файлами открытыми по ID или по короткому пути
+ Реализовать HiddenCLI
	+ ignore
	+ unignore
	+ protect
	+ unprotect
	+ query
	+ Протестировать все комманды
+ При выполнении /unhide с любым ID возвращается статус ок
+ Проверить чтобы все ObjId генерировались начиная с 1
+ Реализовать функционал вкл\выкл драйвера через IOCTL
- Написать тест для вкл\выкл драйвера через IOCTL
+ Написать тест HiddenCLITests
+ Портировать драйвер под архитектуру x64
+ Портировать под версии Windows 8, 8.1, 10
+ Залить проект на Git
	+ Переименовать проект драйвера в Hidden
	+ Привести в порядок все версии билда Release, Debug, ...
+ Добавить процесс System(4) как статически исключенный
- Подумать по поводу проблемы, что HKLM\System\CurrentControlSet на самом деле берётся из CurrentControl00n
- Реализовать steals mode
+ Реализовать поддержку загрузки дефольтных конфигов из реестра
+ Реализовать установку конфигов в реестр через hiddencli
+ Привести в порядок вывод статуса в hiddencli
+ Привести в порядок номер ошибки в hiddencli
+ Изменить логирование на DbgPrintEx
- Добавить SAL на функции драйвера
- Поддержка case-sensetive путей на Windows 10
- Реализовать сокрытие процессов
	+ Сделать видимыми скрытые процессы после выгрузки и /unhide
	+ Улучшить алгоритм поиска офсета
	+ Добавить конфигурацию в реестр
	- Реализовать скрытие процесса из PspCidTable
		- Добавить сокрытие потоков из PspCidTable
		+ Добавить поддержку Vista\7
	- Решить проблему синхронизации доступа к ActiveProcessLinks
	- Добавить поддержку сокрытия из SessionProcessLinks (если в этом есть смысл)
- Реализовать сокрытие сервисов через scdb патч
+ Добавить тест для проверки сокрытия процессов
+ Решить проблему с %tu принтом лога на 32-бит драйвере
- Эмулировать создание reg\fs обьектов, когда обьект с таким же именем скрыт
+ GetProcessInProcessTable может возвращать ptr чтобы избежать UpdateProcessInProcessTable
+ Windows 7 x86 protect тест завален
- Проверить всё на Windows Vista
