Получить доступ к открытому файлу

Тема в разделе "WASM.RESEARCH", создана пользователем sensy, 17 авг 2004.

  1. sensy

    sensy New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    29
    Доброе время суток, уважаемые товарищи.



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



    То есть:

    одна служба делает
    Код (Text):
    1. NtCreateFile
    2. NtCreateSection
    3. NtMapViewOfSection
    4. работает
    5. NtUnmapViewOfSection
    6. NtClose
    7. NtClose




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

    Как это сделать?



    - можно ли открыть объект Секция из другого процесса?

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

    - и вообще, возможен ли такой подход или проще сделать как-то по-другому?



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

    PavPS New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2004
    Сообщения:
    109
    Адрес:
    Russia
    1)

    Ты можешь смэппить секцию в адр пр-во своего процесса при помоши передачи handle сваего процесса ф-ии NtMapViewOfSection, но для этого Тебе придется прервать выполнение кода services.exe, а то ты полезешь мэппит секцию, а он уже выполнил NtClose.

    2) А почему нет? Хэндл секции есть – значит всё Ок. Главное работать в адр пр-ве того процесса, чей этот хэндл.

    3)Что бы заменить содержимое, то, что мне первым и простым приходит на ум, так это (я так понимаю код из ntoskrnl, хотя неважно) заменить

    Call ntCreatefile на JMP ...

    Ну и проверив параметры у CreateFile, если открывается именно тот файл, то взять и подменить его(открыть другой) и вернуться назад с хэндлом другого файла.



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

    Надеюсь нигде не ошибся :)
     
  3. Alamonica

    Alamonica New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2011
    Сообщения:
    5
    I have been diagnosed with dementia and want to preserve my memories and do layouts to help me remember things



    -----------------------------------------
    cheap dvd
    Boardwalk Empire Seasons 1-2 DVD
    http://www.dvdsaledirect.com/
     
  4. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    sensy
    Нет, так как она открывается по имени, которого нет.

    Конечно.

    Секция файловая, значит проекция связана с файлом и можно получить её адрес. Далее R/W из другого процесса.
    Можно снять слепок, перечислить обьекты секция, каждую промапить и получить имя связанное с файлом(MemoryMappedFilenameInformation), NtDuplicateObject. Тоже можно проделать с описателем файла, если он открыт с монопольным доступом. Иначе можно самому файл открыть.
     
  5. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    Malfoy
    Думаю за семь лет он и сам разобрался :)
     
  6. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    MMIX
    Думаю он потерял 7 лет жизни. А есчо можно в тюрьму сесть. Тот же результат :lol:
     
  7. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    Malfoy
    Скорее да, вы правы, учитывая что в етой теме был его последний пост -- видимо таки не разобрался и забил, а можыт как и Бодхидхарма ушел медитировать глядя на стену, ожидая просветление :)

    зы честно говоря меня реально заинтересовала судьба сабжа. :)