Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Access to open files? Доступ к файлу открытому другим процесом 
:(
    Опции темы
Flyhigh
Дата 9.8.2005, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 9.8.2005

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



Думал решить проблему доступа к файлам которые уже открыты другим процессом перехватом вызова CreateFileA, CreateFileW и поставить FILE_SHARED_READ. Не получилось smile

Когда эксперементировал с MS Word'ом понял, что после открытия могут быть вызваны LockFile, LockFileEx сделал перехват и этих функций, убрал блокирование вообще - не помогло.

Также убедился, что при открытии файла не используется SECURITY_INFORMATION.

Если кто занимался таким, то может подскажет что надо сделать еще что-б получить этот треклятый доступ?
PM MAIL   Вверх
p0s0l
Дата 9.8.2005, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Где-то арсенале Delphi я накатал небольшую функцию, которая позволяет читать/писать файлы, открытые монопольно (эксклюзивно), но работает она только под NT'шные системы + нужны административные права... Суть в том, что она обращается не к файлу, а к диску... В принципе, это не очень хороший способ...
Всё-таки, правильнее делать через перехват функций...



--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 9.8.2005, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Также имеет смысл попробовать перехватывать NtCreateFile, NtOpenFile, NtLockFile...
Добавлено @ 14:52
Цитата(Flyhigh @ 9.8.2005, 13:27)
Думал решить проблему доступа к файлам которые уже открыты другим процессом перехватом вызова CreateFileA, CreateFileW и поставить FILE_SHARED_READ. Не получилось
Почему не получилось ? Должно в принципе работать... Для теста вначале протестируй (перехватывай CreateFile) на своём же приложении, которое открывает файл монопольно...


--------------------
С уважением, г-н Посол.
PM   Вверх
Nastya
Дата 11.8.2005, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А можно поинтересоваться для чего так извращаться ? smile


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
falcon785
Дата 12.8.2005, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 11.8.2005
Где: Керчь

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



А ты уверен, что ядро ОС вообще даст такой доступ просто через WinAPI, если твой процесс пользовательского уровня, а управление разделяемыми ресурсами, в частности файлами, осуществляется на уровне ядра?
PM MAIL ICQ   Вверх
Гость_man
Дата 18.8.2005, 15:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











способы в порядке нарастания сложности (читай: "увеличения массы топора для заточки карандашей"):
1. DuplicateHandle (MapViewOfFile в случае мап-файлов)
2. Внедрение в процесс и чтение из файла (типа "я свой, дайте с файликом повозиться")
3. Чтение секторов с диска
4. Использования драйвера

для первых двух случаев у меня есть утилита готовая (проверял на Outlook.pst и mssql\master.dbf)

вопрос модератору: можно как-нить восстановить мой аккаунт старый man2002ua? или хоть грохнуть его, я пересоздам.
  Вверх
Flyhigh
Дата 18.8.2005, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 9.8.2005

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



Цитата
2. Внедрение в процесс и чтение из файла (типа "я свой, дайте с файликом повозиться")

Расскажи плиз поподробней об этом случае. Ты имеешь ввиду запустить свой поток в процессе и потом унаследовать handle файла?
PM MAIL   Вверх
Гость_man
Дата 18.8.2005, 16:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











авжешь.
Основная проблема - как найти дескриптор файла, захваченного приложением ( NtQuerysystemInformation ).
Потом внедренный поток может сделать дубликат дескриптора или использовать оригинальный дескриптор (последнее очень стремно, т.к. процесс может в это же время задумать поиграться с этим файлом тоже) smile
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

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


 




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


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

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