Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват открытия файла 
:(
    Опции темы
FF2
Дата 27.5.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 8
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



Привет всем. У меня возникла проблема. Думал, как реализовать, да ничего не вышло.
Мне нужно, чтобы когда юзео открывал, т.е обращался к файлу (к любому в систете, хоть видеофайл, хоть документ) - программа перехватывала открытие этого файла, потом записала его имя и полный путь до него в ListBox, а затем просто закрыла этот файл. Как можно это реализовать? Неужели для этого надо писать драйвер? Помогите, чем можете.
PM   Вверх
Riply
Дата 27.5.2009, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(FF2 @  27.5.2009,  19:08 Найти цитируемый пост)
Как можно это реализовать? Неужели для этого надо писать драйвер?


Можно попробовать перехват API
PM MAIL   Вверх
Keeper89
Дата 27.5.2009, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 14
Всего: 58



Цитата(Riply @  27.5.2009,  21:59 Найти цитируемый пост)
Можно попробовать перехват API 

Например CreateProcess.

Вот, что нашел в интернете:
Цитата

Способы:
1. Отслеживай события 592 и 593 в Журнале безопасности. Либо раз в ~0.5 секунд проверяй список запущенных задач, проще всего это делать через psapi.
2. Проверяй по заголовку окон через FindWindow. Лучше такое приложение делать как фоновый процесс и в цикле обработки сообщений (или бесконечном) их вылавливать (типа Hook на CreateProcess).
3. Писать драйвер. Ядро оповещает о запуске процесса заинтересованные сервисы (через PsSetCreateProcessNotifyRoutine). Причем, что самое интересное, до передачи управления новорожденному процессу, что позволяет его вовремя убить. Перехвата СreateProcess для недобросовестных программ мало. ИМ, в конце концов, никто не мешает вызвать напрямую шлюз ядра int 2E ( sysenter ).


Это сообщение отредактировал(а) Keeper89 - 27.5.2009, 23:42


--------------------
PM MAIL WWW   Вверх
FF2
Дата 28.5.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 8
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



По пункту 1. Как мне получить доступ к журналу безопасности?
По пункту 2. Про FindWindow понятно. А вот как установить хук на CreateProcess непонятно(
По пункту 3. Идеальный вариант для меня  - написание драйвера, вот только я в этом не профи. Может поможете реализовать? За мной не заржавеет.

Цитата(Riply @  27.5.2009,  20:59 Найти цитируемый пост)
Можно попробовать перехват API 

Riply, не могли бы вы написать об этом поподробнее. Уж очень мне надо реализовать задачу описанную мной в первом посте. 

Схема действия моей программы должна быть такова:
1) Юзер обращается к файлу.
2) Драйвер фиксирует это и отправляет полное имя и путь к файлу - программе (с GUI интерфейсом), программа анализирует этот файл, и в зависимости от условия дает команду драйверу на запрет доступа юзера к данному файлу. 

Это сообщение отредактировал(а) FF2 - 28.5.2009, 15:38
PM   Вверх
kami
Дата 28.5.2009, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 15
Всего: 72



Цитата(Keeper89 @  27.5.2009,  23:35 Найти цитируемый пост)
Например CreateProcess

А разве не CreateFile?
PM MAIL WWW   Вверх
Riply
Дата 28.5.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(FF2 @  28.5.2009,  15:18 Найти цитируемый пост)
Riply, не могли бы вы написать об этом поподробнее. Уж очень мне надо реализовать задачу описанную мной в первом посте


Я не смею тягаться с Деффри Рихтером , 
поэтому описывать не буду smile

P.S.
  Деффри Рихтер не только описал, разложил все по полочкам, но еще и разжевал и примеры дал smile
PM MAIL   Вверх
FF2
Дата 28.5.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 8
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



А название статьи или книги не подскажите? Еще одна запиночка заключается в том, что я в C/C++ полный ноль. Delphi, вот моя среда обитания. Буду очень признателен, если вы поможете в реализации задачи в первом посте.

Это сообщение отредактировал(а) FF2 - 28.5.2009, 19:57
PM   Вверх
Riply
Дата 28.5.2009, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(FF2 @  28.5.2009,  18:57 Найти цитируемый пост)
А название статьи или книги не подскажите?


"Создание эффективных Win32-приложений с учетом спецификации 64-разрядной версии Windows"
(Писала по памяти - могла ошибиться)

Цитата(FF2 @  28.5.2009,  18:57 Найти цитируемый пост)
Еще одна запиночка заключается в том, что я в C/C++ полный ноль


Вполне достаточно умения читать Help, ибо там тоже "один С " smile

И потом, Рихтер дает главное - понимание происходящего.
Соответственно, если внимательно прочитать и разобраться, то не будет
нужды "передирать его пример"  -  все можно будет написать самому ( в крайнем случае, подглядывая в его код smile )

Ну а с конкретными вопросами по реализации здесь всегда помогут.
PM MAIL   Вверх
FF2
Дата 29.5.2009, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 8
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



Спасибо, Riply. Так получается вы предлагаете мне перехватывать API-функцию CreateProcess?
Если возникнуть вопросы по реализации, то я обращусь к вам. 
P.S. У вас ICQ есть, мне бы так легче было?

Это сообщение отредактировал(а) FF2 - 29.5.2009, 18:17
PM   Вверх
Riply
Дата 29.5.2009, 20:59 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(FF2 @  29.5.2009,  05:39 Найти цитируемый пост)
Так получается вы предлагаете мне перехватывать API-функцию CreateProcess?


А что она (CreateProcess) делает ? Нам нужно контролировать эти действия ?
Я бы начала с NtCreateFile.
Далле проверила бы: не через нее ли работает NtOpenFile ?
Если нет или не всегда, то перехватывала бы и ее.
Когда все заработает, на всякий случай, поискала бы другие способы открыти файлов (в обход этих ф-ий).


Цитата(FF2 @  29.5.2009,  05:39 Найти цитируемый пост)
У вас ICQ есть, мне бы так легче было?


Коллективный разум форума принесет гораздо больше пользы, чем один человек smile

PM MAIL   Вверх
FF2
Дата 30.5.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 8
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



Я никогда раньше не имел дела с программированием драйверов. Одному мне не написать его(( Может вы поможете? То что я написал в 1 посте, возможно или нет? У меня на ПК стоит Delphi и MS VC++ Express + WDK.
PM   Вверх
Rrader
  Дата 30.5.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 29
Всего: 191



FF2, а для начала тебе не потребуется писать драйвер. Перехватывай функции в пользовательском режиме. Разберешься, что и как. Тебе нужны примеры? Их очень много и в сети, и на этом форуме.
http://www.google.ru/search?q=Delphi+%2B%D...lient=firefox-a
http://rouse.drkb.ru/winapi.php#iatchange


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
FF2
Дата 30.5.2009, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 8
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



Нашел в сети примеры перехвата NtCreateFile и NtOpenFile. В принципе все понятно. Да вот только адаптировать под свою задачу не смог. У меня ошибки при компиляции вылезают...  Но будем стараться их исправить. Если не смогу подправить отпишусь тут.

Это сообщение отредактировал(а) FF2 - 31.5.2009, 06:18
PM   Вверх
Riply
Дата 31.5.2009, 06:23 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 21
Всего: 32



Цитата(FF2 @  30.5.2009,  18:34 Найти цитируемый пост)
Нашел в сети примеры перехвата NtCreateFile и NtOpenFile


Сочуствую

Цитата(FF2 @  30.5.2009,  18:34 Найти цитируемый пост)
В принципе все понятно


Не надо душой кривить smile

Цитата(FF2 @  30.5.2009,  18:34 Найти цитируемый пост)
Да вот только адаптировать под свою задачу не смог


А ты Рихтера уже прочел (ну или другого автора) ? Все понял ? 
Или ты "чукча - писатель, а не чукча-читатель" ?  (с)  Народная smile

Цитата(FF2 @  30.5.2009,  18:34 Найти цитируемый пост)
Помогите пожалуйста. А то у меня ошибки при компиляции вылезают.


Помочь - в смысле написать за тебя код ? (Ибо примеры кода у тебя уже есть).
Дам дружеский совет: бросай все это и садись за книжки по основам программирования,
раз "ошибки при компиляции вылезают".
PM MAIL   Вверх
bems
Дата 31.5.2009, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



Но прежде всего - сделать домашнее задание.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.