NT-ядро: Что можно перехватывать легально (без хуков) и что
От: sergey77666 Марс  
Дата: 04.01.18 09:39
Оценка:
И какие ограничения?

Файлы и папки — точно можно, официальный способ называется File System Minifilter Drivers, и я лично это делал, есть возможность и изменять "трафик", особых ограничений не наблюдал (тот же функционал, что и при хуках SSDT), тестил на Win10 x64 на свежекупленном ноутбуке (лишь отключив проверку подписей), Secure boot точно включен.

Сетевой трафик — вроде тоже, официальный способ называется Kernel Network Redirector, но лично не делал.

А что с реестром? Клавиатурой (именно на уровне ядра)? USB-трафиком? Картинкой на экране? Видеопотоком с Web-камеры, аудиопотоком с ее микрофона? Выходным аудиопотоком на наушники\колонки?

Причина создания такой темы: хочется знать на будущее, но времени изучать каждый вопрос сейчас нет.
Кто хочет, может отвечать. Кто не хочет, лучше не надо.
Отредактировано 04.01.2018 9:40 sergey77666 . Предыдущая версия .
Re: NT-ядро: Что можно перехватывать легально (без хуков) и что
От: _f_b_i_  
Дата: 04.01.18 10:42
Оценка: +1
Здравствуйте, sergey77666, Вы писали:

S>NT-ядро: Что можно перехватывать легально (без хуков) и что


Я думаю в рамках "легально" лучше говорить не о перехвате, а фильтрации. Благо MS предоставило достаточно средств.
Поэтому "фильтровать" можно практически все то что ты перечислил в вопросе, главное делать это правильно. Судя по твоим постам, ты сломя голову, бежишь выполнить задание за "хорошую денежку" не особо задумываясь о последствиях,
поэтому для начала почитай хотя бы книгу W.Oney Windows Driver Model, там найдешь ответы "что можно, а что нельзя" и "как".
Re[2]: NT-ядро: Что можно перехватывать легально (без хуков) и что
От: sergey77666 Марс  
Дата: 04.01.18 11:47
Оценка: -2
Здравствуйте, _f_b_i_, Вы писали:

___>Здравствуйте, sergey77666, Вы писали:


S>>NT-ядро: Что можно перехватывать легально (без хуков) и что


___>Я думаю в рамках "легально" лучше говорить не о перехвате, а фильтрации. Благо MS предоставило достаточно средств.

___>Поэтому "фильтровать" можно практически все то что ты перечислил в вопросе, главное делать это правильно. Судя по твоим постам, ты сломя голову, бежишь выполнить задание за "хорошую денежку" не особо задумываясь о последствиях,
___>поэтому для начала почитай хотя бы книгу W.Oney Windows Driver Model, там найдешь ответы "что можно, а что нельзя" и "как".

Я всегда "бегу".

По этой причине книжки очень не люблю. Ибо медленно.
Ответы на эти вопросы искал бы гуглом, исследованиями исходников и др.
Но спросить на форуме еще быстрее и легче (хотя и намного хуже).

Кто-то решит, что я ленивый.
Они видят так, что у меня столько же задач, сколько у них, просто я хочу решать их быстрее, а в оставшееся время пинать ваньку :D
Ничего подобного, освободившееся время нужно для того, чтобы сделать что-то еще.
Деньги тоже в основном вкладываются в работу.

Про надежность не надо.
При необходимости могу сделать еще основательнее, чем те, кто пользуется только лишь книжками, так как я буду знать то, чего они не будут.
Постепенно все у меня набирает надежность.
А конкретный заказчик получает ровно столько, сколько оплатил, какие сроки дал, и др.
Re: NT-ядро: Что можно перехватывать легально (без хуков) и что
От: okman Беларусь https://searchinform.ru/
Дата: 04.01.18 16:54
Оценка: 9 (1)
Здравствуйте, sergey77666, Вы писали:

S>NT-ядро: Что можно перехватывать легально (без хуков)


Если кратко:

Фильтрация обращений к файловым системам:

File System Minifilter Drivers
File System Filter Drivers

Фильтрация обращений к диску (на низком уровне)

Storage Filter Drivers

Сеть:

Windows Filtering Platform Callout Drivers
TDI Filters
NDIS (IM/LWF)

Реестр:

CmRegisterCallback

Процессы, потоки, загрузка модулей:

PsSetCreateProcessNotifyRoutine
PsSetLoadImageNotifyRoutine
PsSetCreateThreadNotifyRoutine

Фильтрация доступа к процессам, потокам и десктопам (Win10):

ObRegisterCallbacks

Для эффективного перехвата экрана раньше рекомендовали mirror drivers, но с выходом
Windows Vista и новой модели дисплейных драйверов (WDDM на замену XDDM) это можно
считать устаревшим (и не всегда возможным из-за проблем с Aero/DWM).

В Windows 8 перехват экрана можно выполнять полностью в user mode, см. Desktop Duplication API.

Ну а доступ к устройствам можно зафильтровать через стандартные механизмы, описанные,
например, у Уолтера Они в главе "фильтрующие драйверы". Т.е. найти стек соответствующего
устройства и приаттачить к нему свой DEVICE_OBJECT. См. UpperFilters, AddDevice,
IoAttachDeviceToDeviceStack и т.п. Так можно фильтровать практически любое устройство — USB,
клавиатуры/мыши, CD-ROM и т.д. Либо целый класс устройств (если приаттачиться к драйверу класса).

Список не полный, многие функции имеют более современные версии, но для гугления должно хватить.
Re[2]: NT-ядро: Что можно перехватывать легально (без хуков) и что
От: sergey77666 Марс  
Дата: 04.01.18 17:49
Оценка:
Здравствуйте, okman, Вы писали:

Спасибо. А более подробно можно? Хотя бы то, где можно модифицировать, а где только мониторить.

Правильно ли я понял, что ObRegisterCallbacks позволяет запретить завершение процесса? А вообще спрятать может?
И печально, что доступна только с Vista (на MSDN написано)
Re[3]: NT-ядро: Что можно перехватывать легально (без хуков)
От: ononim  
Дата: 04.01.18 22:45
Оценка: 3 (1) +1
S>Я всегда "бегу".
S>По этой причине книжки очень не люблю. Ибо медленно.
Программист ковбой по классификации НАТО этой статье
Автор: Jericho113
Дата: 26.11.07

Я тоже таким был, но потом эволюционировал в нечто, напоминающее ленивого ниньзя.
Книжек вобщемто тоже особо не читал. Но есть вещи которые стоит понимать как работают 'свысока', без деталей, а они таки лучше всего описываются _хороших_ в книжках. При этом главный вопрос, который всегда нужно задавать себе не "как?", а "почему?". А потом уже банальная дедукция позволяет при необходимости до нужных деталей чуть ли не самому догадываться, без необхомости ковыряния в кучах кода вслепую.
Как много веселых ребят, и все делают велосипед...
Отредактировано 04.01.2018 22:58 ononim . Предыдущая версия . Еще …
Отредактировано 04.01.2018 22:50 ononim . Предыдущая версия .
Re[4]: NT-ядро: Что можно перехватывать легально (без хуков)
От: sergey77666 Марс  
Дата: 05.01.18 00:03
Оценка: -1
Не только.
Еще я TheTheoretician и TheParatrooper. Наверно, все эти 3 взаимосвязаны.
Re[3]: NT-ядро: Что можно перехватывать легально (без хуков) и что
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.01.18 02:02
Оценка: +1
Здравствуйте, sergey77666, Вы писали:

S>По этой причине книжки очень не люблю. Ибо медленно.

S>Ответы на эти вопросы искал бы гуглом, исследованиями исходников и др.
S>Но спросить на форуме еще быстрее и легче (хотя и намного хуже).

Конечно, пусть народ на форуме на Вас поработает, а плату за работу целиком получите Вы.

В форумах принято уважать сообщество, а не использовать его в качестве быстрого бесплатного консультанта. Вы же не уважаете не только здешнее сообщество, но и пользователей систем, в которых будет работать Ваш софт, ибо со своим "беговым" подходом неизбежно наплодите глюков. Рассуждения о "перфекционизме" на этом фоне выглядят особо цинично.
Re[4]: NT-ядро: Что можно перехватывать легально (без хуков)
От: sergey77666 Марс  
Дата: 06.01.18 05:01
Оценка: 1 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, sergey77666, Вы писали:


S>>По этой причине книжки очень не люблю. Ибо медленно.

S>>Ответы на эти вопросы искал бы гуглом, исследованиями исходников и др.
S>>Но спросить на форуме еще быстрее и легче (хотя и намного хуже).

ЕМ>Конечно, пусть народ на форуме на Вас поработает, а плату за работу целиком получите Вы.


ЕМ>В форумах принято уважать сообщество, а не использовать его в качестве быстрого бесплатного консультанта. Вы же не уважаете не только здешнее сообщество, но и пользователей систем, в которых будет работать Ваш софт, ибо со своим "беговым" подходом неизбежно наплодите глюков. Рассуждения о "перфекционизме" на этом фоне выглядят особо цинично.


Даже не знаю, что ответить на ваш выпад. Вроде и хочется что-то ответить, но подсоздание твердит, "не буду я тебе слова подбирать, оно того не стоит, спать иди".

Насчет консультанта — если бы проблема была действительно в деньгах, то не сетовали бы, а просто предлагали ответы за плату — пред или по факту.
Но она не в деньгах, а в каких-то ваших эмоциях, вроде ксенофобии, что ли.

Пользователи систем? Вот вы защищаете человека, даже не видя его. И сколько он платит, и каким трудом приходится с него это вышибать.

Насчет надежности. Какая-то у вас паранойя. Почему-то я вижу достаточно багов в не моем софте, чтобы нельзя было точно сказать, что у меня их намного больше. Хотя те люди (порой конкретно вижу, что это за люди) вроде бы никуда не торопятся, но у них обратная проблема — лень.
Зато у меня нет адовой кучи бреда по юзабилити (типа убрать кнопку Пуск), который творится фирмами вроде MS, именно в спокойной обстановке и с многолетним опытом в теме, однако без мозгов, которые и не дают придумать что-то не просто новенькое для отчетности, а реальное. Или просто от тупости. Документацию вот часто составляют абсолютно без способности взглянуть на нее со стороны незнакомого человека.
Так что неизвестно, что именно из всего этого зоопарка будет больше бесить пользователя на самом деле, и кто о нем больше заботится
Отредактировано 06.01.2018 5:02 sergey77666 . Предыдущая версия . Еще …
Отредактировано 06.01.2018 5:01 sergey77666 . Предыдущая версия .
Re[5]: NT-ядро: Что можно перехватывать легально (без хуков)
От: _f_b_i_  
Дата: 06.01.18 09:59
Оценка:
Здравствуйте, sergey77666, Вы писали:

S>Здравствуйте, Евгений Музыченко, Вы писали:


S>Насчет надежности. Какая-то у вас паранойя. Почему-то я вижу достаточно багов в не моем софте, чтобы нельзя было точно сказать, что у меня их намного больше. Хотя те люди (порой конкретно вижу, что это за люди) вроде бы никуда не торопятся, но у них обратная проблема — лень.

S>Зато у меня нет адовой кучи бреда по юзабилити (типа убрать кнопку Пуск), который творится фирмами вроде MS, именно в спокойной обстановке и с многолетним опытом в теме, однако без мозгов, которые и не дают придумать что-то не просто новенькое для отчетности, а реальное. Или просто от тупости. Документацию вот часто составляют абсолютно без способности взглянуть на нее со стороны незнакомого человека.
S>Так что неизвестно, что именно из всего этого зоопарка будет больше бесить пользователя на самом деле, и кто о нем больше заботится

Я думаю Вам хотят сказать то, что писать драйвера это немного отличается от написания обычного софта. Цена ошибки в ядре и приложении, знаете на много порядков разнится. Да, в любом софте есть дыры, глюки, которые иногда называют фичами, и. т.д. Но падение приложения от писателя "Васи" вряд ли испортит базу данных или удалит ваш домашний архив фото-изображений и еще чего то. Падение драйвера может привести к более тяжким последствиям: система просто остановит выполнение в той точке где случился конфуз, и дальше уже как повезет: вдруг софт от "Миши" начал обновлять базу данных и внес кое какие изменения в заголовочные структуры — а тело не успел, и при следующей загрузке скажет вам: "а че вы мне какой то обрывок базы подсовывайте- я такого не знаю", ну я утрирую конечно. Что более обидно: просчет или не внимательность в одном месте в коде драйвера — может вызвать сбой совершенно в другом месте, и даже не в вашем коде и тогда получается картина: пользователь установил ваш софт (драйвер), а вылетел в BSOD драйвер сетевого адаптера — пользователь: кто виноват? — конечно писатели сетевого адаптера, у них же вылет... хотя те программисты могут быть совершенно не при делах, просто кто то подпортил жизнь их драйвера. Поэтому пожалуйста относитесь к написанию драйверов более серьезно! Потому как из за ошибок допущенных в вашем драйвере могут страдать совершенно другие люди.
Re[6]: NT-ядро: Что можно перехватывать легально (без хуков)
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.01.18 15:38
Оценка:
Здравствуйте, _f_b_i_, Вы писали:

___>вдруг софт от "Миши" начал обновлять базу данных и внес кое какие изменения в заголовочные структуры — а тело не успел


Хорошо, NTFS и транзакции хоть спасают от разрушения самой ФС, реестра и критичных системных баз.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.