Странный глюк при определении полного пути к файлу

Тема в разделе "WASM.NT.KERNEL", создана пользователем Hand, 13 июн 2007.

  1. Hand

    Hand New Member

    Публикаций:
    0
    Регистрация:
    12 авг 2006
    Сообщения:
    4
    Опубликовал вопрос в эфире, но видимо его мало кто читает, поэтому рискну повторить на форуме.

    Недавно натолкнулся на забавный "феномен". Поскольку основная идея была взята из GetImageFilePath (14 раздел в туторах от Four-F) решил проверить с помощью ProcessMon. Итак
    1. На диске C: создаем каталог aa (имя не важно) и копируем туда например notepad.exe
    2. Запускаем ProcessMon
    3. Запускаем notepad из указанного каталога. ProcessMon вполне законно показывает что был запущен файл C:\aa\notepad.exe
    4. Выключаем notepad
    5. Переименовываем каталог например в bb
    6. Запускаем notepad
    7. И вот тут самое неожиданное - ProcessMon показывает что был запущен C:\aa\notepad.exe - хотя такого каталога на диске уже нет....

    К слову сказать под XP+ для определения полного пути я использую несколько другой метод - но результат тем не менее тот-же.
    Может уважаемый Four-F или кто-нибудь еще сможет объяснить причину этого явления?
     
  2. Hand

    Hand New Member

    Публикаций:
    0
    Регистрация:
    12 авг 2006
    Сообщения:
    4
    Небольшое, но существенное дополнение - глюк наблюдается только на NTFS - под FAT32 все отрабатывает нормально (проверялось под Win2K и XP).

    P.S.: Народ - вы видимо недооцениваете важность момента. А важность в том, что пример в одном из ключевых туторов по данной теме (во всяком случае я встретил на форуме около 10 ссылок на него и никакого другого примера не видел) дает некорректный результат. Справедливости ради надо отметить, что такой-же результат дает ObQueryNameString и ZwQueryInformationProcess.
    Что делать?
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Не наблюдаю такого. Вот если не закрывать блокнот, а просто переименовать каталог/файл, то да - путь останется прежним, но и это детектится.
     
  4. Hand

    Hand New Member

    Публикаций:
    0
    Регистрация:
    12 авг 2006
    Сообщения:
    4
    Ну про запущенном блокноте каталог тебе переименовать не даст. А если переименовать файл, а не каталог (в принципе можно и каталог тоже, но при выключенном блокноте) и перезапустить, то и файл и каталог отобразятся правильно. А вот то что не наблюдал странно - я воспроизвел многократно на разных машинах. Просто надо все проделать по шагам и на NTFS. И использовать именно ProcessMon от Four-F (из KmdKit)

    У меня вот такое предположение возникло: если переименовывается каталог, то файловый объект блокнота не меняется. Возможно он где-то кэшируется и используется повторно, а поскольку в нем изменений не было, то и полный путь не перечитавыется.
    Кстати если полный путь доставать из PEB, то все работает.
     
  5. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    похоже, что такая проблема только на твоём компе - у меня на nt4, w2k sp4, xp pro, xp home, xp sp1, xp sp2 и w2k3 ничего подобного замечено не было.
     
  6. Hand

    Hand New Member

    Публикаций:
    0
    Регистрация:
    12 авг 2006
    Сообщения:
    4
    RamMerLabs
    Я тоже было так подумал - поэтому проверил на нескольких компах (как 2000 так и XP все с последними апдейтами). Пока не нашел ни одного компа, где бы работало правильно (не учитывая FAT32). Надеюсь ты проверял с помощью ProcessMon?
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Hand
    Да, ошибся - только файл, т.к. текущая директория блокируется. Если её сменить, тогда можно.
     
  8. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    и не только.
    на всякий случай проверю ещё раз. результаты - завтра, не все системы есть у меня дома - поеду в универ.

    все системы - на ntfs
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    есть такое, проверял на RkUnhooker.