Имя процесса

Тема в разделе "WASM.NT.KERNEL", создана пользователем xEngel, 6 окт 2009.

  1. xEngel

    xEngel New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    15
    Как в ядре узнать имя процесса в контексте которого приходит IRP пакет.
    Нужно не просто структура EPROCESS, а именно имя процесса (например explorer.exe).
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    PsGetProcessImageFileName()
     
  3. xEngel

    xEngel New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    15
    Спасибо.
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Только учти, что эта функция была не всегда :)
     
  5. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    х.з. у меня в WDK её нету. насколько я помню, такие вещи делаются через PEPROCESS. в гугле поищи смещения имени для разных осей.
     
  6. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    можно проще
    на запуске дрова смещение определяется по смещению в EPROCESS-е "System"
     
  7. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    xEngel
    Это уже обсуждалось (x64, Twister и еще бог знает кем), нужен FILE_OBJECT, юзай поиск
     
  8. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Она недокументирована, её необходимо объявлять у себя в коде, само объявление без проблем найдёте в сети. Не изобретайте кривой велосипед вроде смещений в EPROCESS, это просто не нужно. Только вы определитесь, вам имя процесса нужно или полный путь к его исполняемому файлу? Второе делается по-другому и сложнее.
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    "например explorer.exe" намекает на ответ :)
    ТС учти что имя будет обрезано до 16 байт.
     
  10. Zitzy

    Zitzy New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2009
    Сообщения:
    28
    Нужно полный путь к бинарнику процесса получить, id у меня есть, а дальше что?
     
  11. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Способ 1:

    Прежде всего, PsLookupProcessByProcessId().
    Далее ищешь секцию процесса (section), потом управляющую область (control area), а там уже будет файловый объект (file object), - из него тянешь полное имя.

    Способ 2:

    Прежде всего, ZwOpenProcess(), - получаешь хендл.
    Далее ZwQueryInformationProcess() с классом ProcessImageFileName или ProcessImageFileNameWin32 (это на Vista и выше).

    Первое недокументировано, но стабильную и надёжную реализацию сделать можно. И нужно.
     
  12. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    кроме стабильности и надежности еще есть плюс - быстрота.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    x64
    В ядре ZwOpenProcess ? ы тупее решения не придумсать :P
     
  14. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Zitzy

    Поиск по форуму работает только у меня?
    http://wasm.ru/forum/viewtopic.php?id=30339
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Twister
    Где мой второй пост, удалиле ??
     
  16. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Не, я ничего не трогал.
     
  17. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Clerk
    Мы удалили, как оффтоп и провокацию. Хотя, возможно, стоило и другой твой пост удалить, ибо понятно, что во втором случае ZwOpenProcess() предлагалась лишь как часть варианта документированного решения, а раз это ясно, то твой первый пост с большей вероятностью является пробацией, нежели попыткой сообщить общественности некое откровение.
     
  18. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Sol_Ksacap
    Вы про сервис например NtOpenProcess слышите впервые ?
    Нет. И остальные тоже существуют давным давно. Немного надоели вопросы про имя подходящей апи. Должно вначале рассмотреть имеющийся в экспорте функционал полно, темболее что базой открыт в врк, только потом пытаться чтолибо писать в ядре. Создавать описатель для обьекта, который доступен непосредственно через ссылку на него весьма глупо. Нужен запрет доступа, вызов референс-калбэков и прочие неприятные вещи - юзайте.