Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.03 c
4-1086095708
Long
2004-06-01 17:15
2004.07.11
Как послать WM_SYSCOMMAND,SC_RESTORE окну, которое


4-1085588142
Manulo
2004-05-26 20:15
2004.07.11
Есть ли альтернатива <CODE>GetWindowText</CODE>


3-1087279221
alsov
2004-06-15 10:00
2004.07.11
SQL - запрос на очищение баз данных


1-1088504855
ZiRoCool
2004-06-29 14:27
2004.07.11
как узнать ASCII код символа?


3-1087082684
Другаля Ян Павлович
2004-06-13 03:24
2004.07.11
FastReport динамическое формирование названия поля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский