Re[6]: Уведомлялки
От: CEMb  
Дата: 11.06.09 08:04
Оценка:
Здравствуйте, IID, Вы писали:

IID>Наш продукт это умеет. И он бесплатный.

Почему бесплатный?
Re[7]: Как с помощью Win Api поймать ивент на событие CopyFi
От: x64 Россия  
Дата: 11.06.09 08:51
Оценка:
CEM>SetWindowsHookEx

Ну я так и думал... Теперь следи за руками: эта API позволяет внедрить DLL в процесс. Точка. А вот то, что реально эта DLL там будет делать (подмена функций), — нигде не документировано и нигде в MSDN не сказано, что это вообще можно делать (по факту, это можно делать сейчас только посредством механизма hot-patching, а оно не для всех).

x64>>Ещё раз: простых решений здесь не бывает, надёжность предложенного тобой решения равна чуть более чем нулю.

CEM>Ок, ладно, соглашусь. Системные процессы не дадут в себя код встроить просто так.

Это да, но даже не в этом дело. Хуки пользовательского режима легко обходятся, очень легко, легче лёгкого. Плюс куча гемора, описанного IID'ом, — это всё не стоит того.
Re[6]: Уведомлялки
От: gorr.ka  
Дата: 11.06.09 12:28
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Здравствуйте, gorr.ka, Вы писали:


GK>>Задание:


GK>>На заданную папку поставить фильтр по маске на имена файлов:

GK>>- на запись
GK>>- переименование

GK>>Отлавливаться события должны ДО совершения оного события,

GK>>тоесть при пробе записать файл, проверить на соответствие по маске, и по результату разрешить или отвергнуть. То же и с переименованием.
GK>>Те же правила на Папки.

RB>А откуда такие требования?

RB>Ты воюешь с пользователями или другими программами?
RB>Что будет, если будет создан файл, имя которого не соответствует маске?
RB>Это нужно для твоей программы или для какой-то другой?
Это нужно для другой программы.
Прога трете-сторонняя, но компания не хочет ее сменять.
Re[7]: Уведомлялки
От: IID Россия  
Дата: 11.06.09 12:29
Оценка:
Здравствуйте, CEMb, Вы писали:

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


IID>>Наш продукт это умеет. И он бесплатный.

CEM>Почему бесплатный?


Вот позиция компании по данному вопросу.
kalsarikännit
Re[7]: Уведомлялки
От: gorr.ka  
Дата: 11.06.09 12:30
Оценка:
Здравствуйте, x64, Вы писали:

IID>>Наш продукт это умеет.


x64>Ему задание дали, он бабла срубить хочет, а ты ему про продукт какой-то

Если продукт хороший , придется делать Враппер на продукт.

Шутка...
Re[9]: Уведомлялки
От: gorr.ka  
Дата: 11.06.09 12:39
Оценка:
Здравствуйте, x64, Вы писали:

IID>>Может задание — комп настроить?


x64>Ну кагбэ если б он хотел именно настроить, он бы и спрашивал про готовые решения, а не про API.


Верно говорит товарищ.
Я предложил заказчику пост-нитификацию, с последующими действиями.
Сказали что такое у них имеется и их толзу от такого глючит.

Оказывается только с Висты, МикроСы обрабатывают такие ивенты
http://msdn.microsoft.com/en-us/library/bb775771(VS.85).aspx
Re[10]: Уведомлялки
От: x64 Россия  
Дата: 11.06.09 13:38
Оценка: +1
GK>Я предложил заказчику пост-нитификацию, с последующими действиями.
GK>Сказали что такое у них имеется и их толзу от такого глючит.

Ну я предупреждал...

GK>Оказывается только с Висты, МикроСы обрабатывают такие ивенты

GK>http://msdn.microsoft.com/en-us/library/bb775771(VS.85).aspx

Как я понимаю, это уровень оболочки? Значит, если тупо вызвать CopyFile(), то колбек не сработает. Тут я не уверен, но думаю, что всё именно так. К тому же, здесь имеем все те же проблемы, что и с обычными хуками режима пользователя. Я бы не искал на твоём месте лёгких путей, лучше займись изучением файловых фильтров. Если, конечно, оно того стоит...
Re[8]: Как с помощью Win Api поймать ивент на событие CopyFi
От: CEMb  
Дата: 11.06.09 16:53
Оценка: 3 (1) +1
Здравствуйте, x64, Вы писали:

CEM>>SetWindowsHookEx


x64>Ну я так и думал... Теперь следи за руками: эта API позволяет внедрить DLL в процесс. Точка. А вот то, что реально эта DLL там будет делать (подмена функций), — нигде не документировано и нигде в MSDN не сказано, что это вообще можно делать (по факту, это можно делать сейчас только посредством механизма hot-patching, а оно не для всех).


Эээ... давай с понятиями разберёмся. Хуки — это хуки — фунцкии-перехватчики событий windows. Они живут в цепочке хуков, но никого не подменяют.
А подмена функций — это подмена функций. Она может, и на 90% должна делаться без хуков. Иди ставь оценку Подмена функций (та, что у Рихтера) в msdn-е не описана. Хуки — описаны. Где моя оценка?
Re[9]: Как с помощью Win Api поймать ивент на событие CopyFi
От: x64 Россия  
Дата: 12.06.09 02:05
Оценка:
CEM>>>SetWindowsHookEx
CEM>Эээ... давай с понятиями разберёмся. Хуки — это хуки — фунцкии-перехватчики событий windows.

Хуки = подмена функций. Слово "Hook" в названии вышеуказанной API не имеет сюда никакого отношения, это лишь совпадение терминов.

CEM>Подмена функций (та, что у Рихтера) в msdn-е не описана. Хуки — описаны. Где моя оценка?


С терминологией у тебя всё же слабовато. Оценки не будет.
Re: Как с помощью Win Api поймать ивент на событие CopyFile
От: MegaVoltik  
Дата: 25.06.09 08:46
Оценка:
GK>Как с помощью Win Api поймать ивент на событие CopyFile, Rename...?

GK>Вернее, я хочу отловить событие на создании файла, НЕ проверка на уже созданном?

GK>Проверить нужно только по имени. Также подлежат отлову Rename, Delate.

Посмотри http://dokan-dev.net/en/download/ с помощью этой штуки можно создать зеркало любого диска и контролировать все операцции с ним. В том числе и создание файлов и пр... Решение хоть и не очень прямое и проге твоей придётся работать через этот фиктивный диск но всё же проще того что предложили в теме и вполне стабильно работающее.
Чем больше нас, тем меньше их...
Re[2]: Как с помощью Win Api поймать ивент на событие CopyFi
От: x64 Россия  
Дата: 25.06.09 08:49
Оценка: 1 (1)
MV>Посмотри http://dokan-dev.net/en/download/ с помощью этой штуки можно создать зеркало любого диска и контролировать все операцции с ним. В том числе и создание файлов и пр... Решение хоть и не очень прямое и проге твоей придётся работать через этот фиктивный диск но всё же проще того что предложили в теме и вполне стабильно работающее.

Совет дилетанта. Этот Dokan — достаточно громоздкое и тормозное решение, реализующее фактически полноценный FSD. В данном случае лучше всего будет именно файловый фильтр. Ребят, ну о чём спорим, файловые фильтры для этого и предназначены, зачем же тогда вы ищете какие-то другие решения? Я вас не понимаю.
Re[9]: Как с помощью Win Api поймать ивент на событие CopyFi
От: Alexey Frolov Беларусь  
Дата: 25.06.09 09:06
Оценка:
Здравствуйте, CEMb, Вы писали:

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


CEM>>>SetWindowsHookEx


x64>>Ну я так и думал... Теперь следи за руками: эта API позволяет внедрить DLL в процесс. Точка. А вот то, что реально эта DLL там будет делать (подмена функций), — нигде не документировано и нигде в MSDN не сказано, что это вообще можно делать (по факту, это можно делать сейчас только посредством механизма hot-patching, а оно не для всех).


CEM>Эээ... давай с понятиями разберёмся. Хуки — это хуки — фунцкии-перехватчики событий windows. Они живут в цепочке хуков, но никого не подменяют.

CEM>А подмена функций — это подмена функций. Она может, и на 90% должна делаться без хуков. Иди ставь оценку Подмена функций (та, что у Рихтера) в msdn-е не описана. Хуки — описаны. Где моя оценка?

Я бы тоже поставил оценку, если бы кроме слова Hook, здесь было что-то касающееся этой темы. Хук есть, перехвата файловых операций нет, все просто. Или может покажите цитату(пример) как с помощью этого перехватить файловые операции. Просто какой-то хук поставить недостаточно
Re[3]: Как с помощью Win Api поймать ивент на событие CopyFi
От: Alexey Frolov Беларусь  
Дата: 25.06.09 09:10
Оценка: +1
Здравствуйте, x64, Вы писали:

MV>>Посмотри http://dokan-dev.net/en/download/ с помощью этой штуки можно создать зеркало любого диска и контролировать все операцции с ним. В том числе и создание файлов и пр... Решение хоть и не очень прямое и проге твоей придётся работать через этот фиктивный диск но всё же проще того что предложили в теме и вполне стабильно работающее.


x64>Совет дилетанта. Этот Dokan — достаточно громоздкое и тормозное решение, реализующее фактически полноценный FSD. В данном случае лучше всего будет именно файловый фильтр. Ребят, ну о чём спорим, файловые фильтры для этого и предназначены, зачем же тогда вы ищете какие-то другие решения? Я вас не понимаю.


Тоже не люблю из пушки по воробьям, но как ни крути, в данном случае x64 прав, если постнотификация не устраивает, то дорога к файловому фильтру, тем более с появлением модели минифильтров, задача стала не такой уж громоздкой. От себя тоже советую, если задача важна в таком виде, не ищите других решений, найдете такие же или сложнее, а в итоге менее надежные.
Re[3]: Как с помощью Win Api поймать ивент на событие CopyFi
От: MegaVoltik  
Дата: 25.06.09 09:13
Оценка:
x64>Совет дилетанта. Этот Dokan — достаточно громоздкое и тормозное решение, реализующее фактически полноценный FSD. В данном случае лучше всего будет именно файловый фильтр. Ребят, ну о чём спорим, файловые фильтры для этого и предназначены, зачем же тогда вы ищете какие-то другие решения? Я вас не понимаю.

Хорошо.
Вопрос номер раз: Сколько времени с нуля займёт написание фильтра и сколько правка готового примера из DOKAN чтобы получить нужную функциональность?
Вопрос номер два: Какой опыт нужен в том и другом случае?

В результате ответа на эти вопросы может оказаться что исходя из задачи будет проще исспользовать громоздкий DOKAN а не предусмотренный для этого файловый фильтр.

Вот когда для построениея фильтра появиться что то подобное на DOKAN и бесплатное тогда без сомнения правильным выбором будет реализация фильтра.
Чем больше нас, тем меньше их...
Re[4]: Как с помощью Win Api поймать ивент на событие CopyFi
От: x64 Россия  
Дата: 25.06.09 09:27
Оценка:
А я так и знал, что напишешь что-то подобное. ok, рассказываю, следи за руками: берёшь готовый пример из WDK и дописываешь только логику в обработчик всего лишь одного запроса (IRP_MJ_CREATE), — а уж используя минифильтры так вообще никаких нюансов знать не требуется. Это к вопросу о сложности реализации. Но даже не это главное. Поймите наконец, что каждый должен заниматься своим делом — прикладные программисты должны клепать формочки (условно), а написание драйверов-фильтров оставьте тем, у кого это получается лучше, то бишь системщикам. Всё просто.
Re[5]: Как с помощью Win Api поймать ивент на событие CopyFi
От: MegaVoltik  
Дата: 25.06.09 10:38
Оценка:
x64>А я так и знал, что напишешь что-то подобное. ok, рассказываю, следи за руками: берёшь готовый пример из WDK и дописываешь только логику в обработчик всего лишь одного запроса (IRP_MJ_CREATE), — а уж используя минифильтры так вообще никаких нюансов знать не требуется. Это к вопросу о сложности реализации.

Если разбираешься то да не сложно. Есть готовый пример для ламеров где подробно описано что и как делать?

x64>Но даже не это главное. Поймите наконец, что каждый должен заниматься своим делом — прикладные программисты должны клепать формочки (условно), а написание драйверов-фильтров оставьте тем, у кого это получается лучше, то бишь системщикам. Всё просто.


Неа не всё так просто. Есть задача, есть ресурсы на её решение(время/деньги). И исходя из этого выбирается путь для решения. И если под рукой нету специалиста. А оплатить ваши услуги нету денег то вполне подойдёт и некая примочка сделанная из того же dokan или из других подручных средств. Особенно если всё это сделано для внутреннего пользования.

А теорию как должно быть я и сам знаю. В идеале все прожки должны быть маленькими и шустрыми и на современном железе должны не просто летать а сверкать молнией. Ан нету этого и не будет. Ибо дорого это. Так и тут. Если есть дешовые пути решения проблемы и минусы этого решения устраивают пользователя то пойдут по этому пути а не по правильному.

Если есть желание чтобы народ ходил так как правильно значит нужно делать правильный путь короче и дешевле. Например написав цикл статей с примерами и пр... Или сделав что то подобное dokan для фильтра.
Чем больше нас, тем меньше их...
Re[6]: Как с помощью Win Api поймать ивент на событие CopyFi
От: x64 Россия  
Дата: 25.06.09 11:13
Оценка:
MV>Есть готовый пример для ламеров где подробно описано что и как делать?
MV>Или сделав что то подобное dokan для фильтра.

Так ведь самое интересное, что оно уже есть и, более того, оно бесплатно и уже встроено в систему начиная ажно с Windows XP SP2. Я говорю о минифильтрах. Это практически абстрагированный framework для реализации файловых фильтров. Для реализации поставленной задачи (в контексте топика) не потребуется сильно глубоких знаний ядра. А документация и даже готовые примеры есть в MSDN и WDK. Ничего сверхсложного, всего лишь внимательное чтение документации спасёт отца. Если минифильтры чем-то не устраивают (что маловероятно), то есть ещё как минимум два довольно известных (в узких кругах) фреймворка: от EldoS и от OSR. Они платные и довольно дорогие, но и качество соответствующее. В сети встречал ещё несколько аналогичных фрейворков с немного меньшей функциональностью, но ссылок уже не помню, в гугле можно найти, наверно.
Re[10]: Как с помощью Win Api поймать ивент на событие CopyF
От: CEMb  
Дата: 26.06.09 07:17
Оценка:
Здравствуйте, Alexey Frolov, Вы писали:

CEM>>Эээ... давай с понятиями разберёмся. Хуки — это хуки — фунцкии-перехватчики событий windows. Они живут в цепочке хуков, но никого не подменяют.

CEM>>А подмена функций — это подмена функций. Она может, и на 90% должна делаться без хуков. Иди ставь оценку Подмена функций (та, что у Рихтера) в msdn-е не описана. Хуки — описаны. Где моя оценка?

AF>Я бы тоже поставил оценку, если бы кроме слова Hook, здесь было что-то касающееся этой темы. Хук есть, перехвата файловых операций нет, все просто. Или может покажите цитату(пример) как с помощью этого перехватить файловые операции. Просто какой-то хук поставить недостаточно


Балииин, "безменя меняженили" Где хук?! Я не говорил слово "хук"!!! Я не знаю, как с помощью хуков перехватывать файловые операции
Re[5]: Как с помощью Win Api поймать ивент на событие CopyFi
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 17.08.09 09:58
Оценка:
Здравствуйте, IID, Вы писали:

CEM>>>С помощью Win Api это делается глобальным перехватом вызова функций CopyFile, Rename. Внедряемся в чужой процесс, перебираем все модули, прицепленные к нему, у них в таблице импорта меняем указатели CopyFile, Rename на свои.

нужно будет не забыть сделать это в _каждом_ процессе. Корректно задача перехвата во всех процессах решается опять же с помощью вспомогательного драйвера — к вопросу о целесообразности правильного решения о котором столько времени тут трактуют большевики

IID>>Хуки это ещё хуже (в порядке убывания важности):

IID>>1) ошибка в фильтре не менее (а даже более) фатальна. Хинт: при ошибке в драйвере получишь BSOD, фильтр же может безнаказанно портить работу системы сколь угодно долго.
IID>>2) такой фильтр не выгрузить.
IID>>3) целостность UM процессов. Любая нормальная проактивная защита мигом пометит все хукнутые процессы как изменившиеся. Отрубит им сеть и напугает пользователя шквалом запросов (вполне обосновано, кстати).
IID>>4) на x64 системах 32битный фильтр идёт лесом, придётся писать две штуки, и ставить их ОБЕ в систему.
IID>>5) сложнее делать передачу данных между экземплярами фильтра.
IID>- хуки придётся ставить на ntdll.dll, иначе часть вызовов пропустишь.
IID>- создание файлов драйверами не перехватишь.
IID>- вредный процесс может вызвать шлюз ядра вообще напрямую. И будет UM фильтр грустно по... покуривать в сторонке.
хороший список

Добавлю для коллекции:

— хуки это недокументированность и как следствие неподдерживаемость
— хуки это отнимающие массу ресурсов нетривиальные проблемы с синхронизацией и interoperability issues
— хуки это потенциальные дыры в подсистеме безопасности
— хуки это отсутствие гарантии, что весь набор API (существующего и будущего) окучен.

Практический пример: решение на хуках писалось во времена XP — в 2003 всплыли новые ф-ии вроде ReOpenFile, в новых ОС все время что-то еще появляется — типа COM интерфейсов IFileOperation под Вистой и т.п. C фильтрами тут бы ничего делать скорее всего не пришлось вовсе. С хуками можно с теми же COM интерфейсами зарыться капитально, тут уже не обойдешься перехватом в одну строку.

О том, где хуки (в т.ч. и те о которых речь в ветке) могут быть оправданы (и даже рекомендованы к использованию) написано в Filter vs. Hook: Что выбрать? Анализируем За и Против.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[10]: Уведомлялки
От: Юрий Жмеренецкий ICQ 380412032
Дата: 18.08.09 02:09
Оценка:
Здравствуйте, gorr.ka, Вы писали:

GK>Оказывается только с Висты, МикроСы обрабатывают такие ивенты

GK>http://msdn.microsoft.com/en-us/library/bb775771(VS.85).aspx

Это не подходит для поставленной задачи. IFileOperation — это в первую очередь средство для выполнения различных операций, инициируемых тобой (позиционируется как замена SHFileOperation). Уведомления, соответственно, будут приходить только для обрабатываемых элементов.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.