Инфо о процессе в Ring0

Тема в разделе "WASM.WIN32", создана пользователем Drakon, 27 дек 2005.

  1. Drakon

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    Вопрос такой: я перехватываю функцию NtOpenProcess. Как во время работы моего хука узнать например полный путь и имя исполняемого файла вызывающего эту функцию процесса? И как записать это в лог-файл?

    P. S.

    Начал заниматься драйверами как говорится только вчера... Кое-что прочитал (частенько читаю статейки), но ещё не всё понял и практики в этом ровно 0, а драйверы пригодились по делу.
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    IoGetCurrentProcess в обработчике покажет EPROCESS вызывающего процесса, а там читай ProcessName.

    Если надо полный путь, то EPROCESS->SectionObject->FileObject - FILE_OBJECT файла из которого запущен процесс, имя файла вытаскивай оттуда.
     
  3. Drakon

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    А как насчёт записи в файл?
     
  4. Ation

    Ation New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2005
    Сообщения:
    92
    Адрес:
    Zaporozhie
    Читай описани ZwWriteFile в ДДК.

    В качестве примеров могу посоветовать посмотреть KMD Kit от Four-F (хорошая штука :), найти его можно на wasm-e.
     
  5. Drakon

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    KmdKit глянул... Нашёл, как реализовать работу с файлами. Но ещё меня интересует вот что: ведь может возникнуть ситуация, что я буду записывать из нескольких потоков в один файл (или я не прав?). Тогда что делать с синхронизацией? Critical section использовать?
     
  6. Ation

    Ation New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2005
    Сообщения:
    92
    Адрес:
    Zaporozhie
    Почитай исчо раз )

    Только теперь про ZwCreateFile, создать описатель можно так, чтоб было возможно ожидание окончания ввода\вывода.

    Или почитай про синхронизацию, можно у Рихтера, можно в ДДК.
     
  7. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    Drakon

    Либо можно еще узнать из Peb процесса, он постабильнее будет EPROCESS'a в плане консистенции, а то для каждой версии винды тебе придётся тянуть отладочные символы и ковырять структуру EPROCESS).
     
  8. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Можно, и он действительно будет постабильнее, но PEB можно изменить из юзермода, поэтому полагаться на него в драйверах будет наивно.

    Например фаерволлы никогда не полагаються на содержимое PEB.
     
  9. Drakon

    Drakon New Member

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