Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизПерехват чтения и записи фалов Найти похожие ветки
← →
Андрей2 (2004-05-27 18:59) [0]Как перехватить чтение и запись файлов (перед данной операцией) и получить имя модуля, пытавшегося прочитать или записать изменения в файл. Слышал, что необходимо использовать драйвер, причём для ОС Windows 9x и NT разный (для 9x - vxd, а для NT - sys), в котором при инициализации нужно вызвать IFSMGR_InstallFileSystemApiHook, но как её вызывать и читать данные - понять не могу. Также хотелось бы в некоторых случаях отклонить доступ к файлу (получится что-то типа программы Folder Guard). Но задача - не из лёгких. Я также пробовал исследовать исходник FileMon-а, но, к сожалению, он на C++, а я его, к сожалению, очень плохо понимаю. Если надо - могу дать ссылку на этот исходник. Только помогите пожалуйста.
← →
SammIk © (2004-05-27 20:04) [1]А не рановатоли тебе об этом думать?
Проще сделать перехватом вызовов open(create)file;
Забудь про это на полгода, в течении которых исчи и читаи нужную
литературу, и поищи DDK
← →
jimmy (2004-05-27 21:49) [2]Удалено модератором
← →
Ihor Osov'yak © (2004-05-28 02:07) [3]скажем так, проблемы с си там не самая главная проблема..
.. если не волнует лицензионная чистота решения - можно попользовать и драйвера от сисинтерналс - интерфейс там простенький. Но эти драйвера делают только мониторинг - запрета на операцию там нет...
.. Задача довольно трудоемкая.. Если опыт в этом деле нулевой - уйдет только на чтение книжек не один месяц. А книжки в основном буржуйские, с русскоязычных - ищите по фамилии Солдатов (названия точно не помню - но слова "разработка" и "драйверов" там присутствуют, вышла недавно мелким тиражом) - как толковый ввод в предметную область очень удачно написано. Но снова - только NT (sys). После чтения - имея в руках исходники сисинтерналс - можно их немного адаптировать - но снова вопрос лицензионной чистота. Если же делать оригинальную реализацию - имхо, тоже не один месяц..
Да, если не ошибаюсь, в инете бегают исхождники древних версий, которые имели обычай иногда работать нестабильно. Исходники новых версий сисинтерналс, кажется, не обнародуют..
← →
Known Unknown (2004-05-28 13:46) [4]Удалено модератором
← →
Андрей2 (2004-05-28 14:58) [5]А ты, Known Unknown, поможешь с решением моей задачи?
← →
Андрей2 (2004-05-28 21:31) [6]А теперь обращусь к SammIk. Слушайте, мы здесь собрались не для того, чтобы выяснять возраст или знания, а для того, чтобы помочь друг другу в решении возникающих проблем. Вы бы ещё посоветовали выпить кружку пива... Не можете помочь конкретным советом по теме - лучше вообще ничего не пишите.
← →
Андрей2 (2004-05-28 21:33) [7]Теперь настало время обратиться к Ihor Osov"yak. Да, Вы угадали - версия исходников, бродящая по Интернету и имеющаяся у меня, старая - 4.34.0.0, однако рабочая и меня это удовлетворяет.
Как в файле Readme.txt указано - sys-файл создан при помощи Windows NT DDK Build, но в отдельной папке с этим sys-файлом какие-то исходники на Си (я в недоразумении). По поводу vxd указывается, что он был построен при помощи Numega VtoolsD 2.0. Но с vxd мне кажется проблем меньше - и в каких-то советах по Delphi слышал, что можно в Delphi писать vxd-драйверы (хотя это и не выгодно), также нашёл в Интернете примерчик Spy_file_io (тоже с исходником на Си), в котором, как-то странно, но вроде-бы, если разобраться, то можно построить vxd (и без всякого Numega VtoolsD). А вот с sys-файлом - проблемы.
Также для себя я сделал некоторый вывод - язык C++ - это действительно штука, причём неизмеримая с Delphi, поэтому, как говорится, лопату в зубы - буду пытаться изучать C++, ведь большинство продвинутых программных продуктов пишется именно на Си а не на Delphi. И этот вопросик тогда уж, немного погодя, задам в форуме по C++, а этот форум, если ни у кого нет пожеланий и решений этой задачи средствами Delphi, наверное, можно будет закрыть. Большое всем участвующим в решении этой задачи спасибо.
← →
Ihor Osov'yak © (2004-05-29 01:25) [8]> Да, Вы угадали
Я не угадал. Я знал.
> создан при помощи Windows NT DDK Build .... какие-то исходники на Си
DDK - инструментарий, документация, библиотеки
Си - язык программирования
> По поводу vxd .. Numega VtoolsD 2.0.
Не знаю, комментрировать не буду. Меня интересовал релиз для NT ряда, то бишь sys aka WDM. vxd - для 95. 98 допускает vxd или wdm (sys) - но для случая драйвера-фильтра придется подстраиваться под соотв. функциональный драйвер, то есть в даном случае наверное vxd. "Наверное" потому, что меня не интересовал релиз для ряда w9x, я этот вопрос не прорабатывал ..
.. Numega VtoolsD - всего лишь надстройка над тем же ддк (некоторые дополнительные библиотеки, инструментарий), не имея базовых знаний - браться за нее бессмыслено - но это уже не на собственом опыте (у меня руки к этому продукту так и не дошли), а на анализе доступных источников информации.
> и в каких-то советах по Delphi слышал, что можно в Delphi писать vxd
это еще похлеще, чем гланды рвать через одно известное место.
Нет библиотек, линковщик не умеет собирать соотв. формат бинарного модуля.
В конце статьи соответсвеной рекомендации о том, что в бинарных модулях ручками править (или что-то в этом духе - точно не помню, так как статью я давно читал и выбросил из-за практической непригодности и идеологической вредности). Ручками править, чтобы в конечном итоге можно было сборку сделать тем же линковщиком от masm. Да и драйвер уровня "hello, world". И это пожалуй максимальный уровень, что можно сделать по соотв. "технологии".
> язык C++ - это действительно штука
таки да
> причём неизмеримая с Delphi,
таки да. Круг решаемых задач примерно одинаков (для win32), но производительность работы делфийца для случая одинаковой квалификации, как минимум, раза в два выше. Если не больше. Поэтому я всегда отдаю предпочтение D. Если заказчик настаивает на С - называю в три раза более высокую цену. Это позволяет либо достичь консенсуса в плане D, либо компенсирует моральные издержки из-за работы на си
Еще. В DDK фактически не используются обьектные навороты плюсов, работа идет в стиле старого доброго си.
Еще2. Для vxd все же более удобен asm, чем си.. Во всяком случае - большинство деклараций - ассемблерные, а не сишные :-).. Да, в составе Numega VtoolsD еще есть перевод части ассемблерных деклараций на с-шные.. Так как все же писать на ассемблере - это не для слабонервных.
Eще3. То, что при разработке драйверов используется си и asm, а не тот же паскаль - это не свидетельство "ущербности" паскаля. Это говорит лишь о том, что конкретные реализации компиляторов/линковщиков поддерживают/не поддерживают соотв. формат исполнительных файлов..
> буду пытаться изучать C++,
Это во вред не пойдет, очень вероятно - что на пользу..
> задам в форуме по C++,
Флаг в руки..
> можно будет закрыть
Еще один в руки. Может даже барабан в придачу.
← →
Ihor Osov'yak © (2004-05-29 01:41) [9]немного напряг память - "sys aka WDM" - в конкретном случае я ошибся. Релиз сисинтерналс для ряда NT все же сделан не в стиле WDM, а в стиле "legacy driver", то есть в стиле драйвера NT4.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.05 c