· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› Получить доступ к открытому файлу

Посл.отвђт Сообщенiе


Дата: Авг 17, 2004 20:18:51

Доброе время суток, уважаемые товарищи.

Возникла такая проблема: нужно получить доступ к открытому файлу.

То есть:
одна служба делает
NtCreateFile
NtCreateSection
NtMapViewOfSection
…
работает
…
NtUnmapViewOfSection
NtClose
NtClose


Так вот. Мне необходимо открыть этот файл и записать в него что-то своё. Или просто подменить файл.
Как это сделать?

- можно ли открыть объект Секция из другого процесса?
- можно ли работать с объектом Секция в контексте того же процесса (в данном случае,это services.exe)
- и вообще, возможен ли такой подход или проще сделать как-то по-другому?

Заранее благодарен за любую помощь!


Дата: Авг 17, 2004 21:59:00 · Поправил: PavPS

1)
Ты можешь смэппить секцию в адр пр-во своего процесса при помоши передачи handle сваего процесса ф-ии NtMapViewOfSection, но для этого Тебе придется прервать выполнение кода services.exe, а то ты полезешь мэппит секцию, а он уже выполнил NtClose.
2) А почему нет? Хэндл секции есть – значит всё Ок. Главное работать в адр пр-ве того процесса, чей этот хэндл.
3)Что бы заменить содержимое, то, что мне первым и простым приходит на ум, так это (я так понимаю код из ntoskrnl, хотя неважно) заменить
Call ntCreatefile на JMP ...
Ну и проверив параметры у CreateFile, если открывается именно тот файл, то взять и подменить его(открыть другой) и вернуться назад с хэндлом другого файла.

Если возникнуть проблемы с shareVolation, то подправь поля у FILE_OBJECT.
Надеюсь нигде не ошибся :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.036