получение пути к .ехе текущего процесса из драйвера

Тема в разделе "WASM.WIN32", создана пользователем romano, 19 ноя 2005.

  1. romano

    romano New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2005
    Сообщения:
    6
    уважаемые воины!

    поделитесь, пожалуйста, рабочим кодом, который получает путь к .ехе текущего процесса из драйвера с использованием EPROCESS? способ сделать это через PEB работает, но хотелось бы сделать это через поля EPROCESS, ибо в PEB процесс может записать сам все что угодно. а с EPROCESS я уже два дня не могу собрать по всему интернету корректные хедеры :dntknw:
     
  2. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка


    а чем инклуды Фоур-Ф неустраивают?



    а исходники где-то мелькали на форуме, надо найти будет...
     
  3. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
  4. romano

    romano New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2005
    Сообщения:
    6
    посмотрел, скомпилировал, все работает, большое спасибо :)

    осталась одна загвоздка, я получаю правильную структуру типа FILE_OBJECT, и мне нужно получить из нее полное имя файла с путем в НТ-виде (\Device\HarddiskVolume1\...). у Four-F в примере FILE_OBJECT.DeviceObject скармливается функции RtlVolumeDeviceToDosName, а мне ДОС-путь не нужен. какой функции скормить FILE_OBJECT.DeviceObject, чтобы получить путь к девайсу в НТ виде? может быть ObQueryNameString?
     
  5. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    <font color="gray][ romano</font><!--color--><font color="gray]: мне нужно получить из нее полное имя файла с путем в НТ-виде (\Device\HarddiskVolume1\...) ]</font><!--color-->



    Цитата из статьи: Поле DeviceObject структуры FILE_OBJECT хранит указатель на объект "устройство", которому принадлежит файл. Из объекта "устройство" можно извлечь его имя. Но тогда мы получим путь к файлу относительно объекта "устройство". Например, "\Device\HarddiskVolume1\WINNT\system32\notepad.exe". С помощью функции RtlVolumeDeviceToDosName преобразуем его в более привычный "C:\ WINNT\system32\notepad.exe".





    <font color="gray][ romano</font><!--color--><font color="gray]: может быть ObQueryNameString? ]</font><!--color-->



    Да. По отношению к FILE_OBJECT.DeviceObject и проаппендить имя файла. Имя файла тоже можно через ObQueryNameString или напрямую из FILE_OBJECT.FileName.
     
  6. romano

    romano New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2005
    Сообщения:
    6
    Four-F

    спасибо за универсальный код с добыванием EPROCESS.SEGMENT! :) работает на 2к-хр-2к3. всех сервиспаков у меня нет, но все равно громадный респект! и вопрос: были ли случаи, чтобы когда-нибудь этот код обламывался? :)
     
  7. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Статья уже больше года на сайте висит. За это время никто не жаловался. Если судить по этому, то, наверное, случаев облома не было ;)
     
  8. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    на XP sp1 eng не работает Process Monior :)
     
  9. sherion

    sherion New Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2005
    Сообщения:
    11


    к сожалению, он уникален для момента создания процесса, т.к. опирается и на количество референсов и количество описателей. Было бы очень здорово доработать его для любого случая, этакий GetSectionByProcessPid в любой момент времени. :)
     
  10. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    <font color="gray][ Flasher</font><!--color--><font color="gray]: на XP sp1 eng не работает Process Monior :) ]</font><!--color-->



    Подробнее можно?





    <font color="gray][ sherion</font><!--color--><font color="gray]: Было бы очень здорово доработать его для любого случая, этакий GetSectionByProcessPid в любой момент времени. :) ]</font><!--color-->



    Process Monior - это учебный пример, добавлять туда функционал или каким другим способом его эдвансить я не буду.
     
  11. sherion

    sherion New Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2005
    Сообщения:
    11
    Four-F





    и не треба... ждем продолжения статей.

    сорь за оффтопик
     
  12. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Four-F, сорри, глупость ляпнул, я думал там типа tasklist'a будет показывать все процессы на данный момент :)