Диапазон ID процессов

Тема в разделе "WASM.WIN32", создана пользователем Drakon, 6 янв 2006.

  1. Drakon

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    Как определить по ID процесса, что это за процесс, если такого ID не значится в списке процессов? Система такая: я в режиме ядра сделал перехват Native API и там в отладочную консоль выдаю ID процесса, который вызывает эту функцию. Получил кучу идентификаторов, которые не видно например через PHunter. Типа 64968... Ну и небольшие числа тоже есть. Так вот что это за процессы?
     
  2. Ms Rem

    Ms Rem New Member

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

    phunter отмечает такие процессы как deleted.

    Вообще, основной недостаток скана PsActiveProcesses как раз в том, что в списке часто остаются такие "левые" процессы, при этом сама структура процесса часто бывает разрушена, и поэтому вместо нормального имени и pid отображается фигня.

    Я скоро выпущу phunter 1.1, в котором постараюсь решить проблему надежного отсеивания этого мусора попадающегося при сканировании.
     
  3. Drakon

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    Да я проверял в PHunter'e... Там даже помеченных "delete" не было таких ID. Да и вообще как завершённые процессы могут вызывать Native API?

    Это всё к тому, что я перехватил NtOpenProcess и блокирую все такие вызовы для процесса одной игрушки. После этого в ней пропал звук... Вот теперь думаю: как связан вызов NtOpenProcess и работа звука?
     
  4. Drakon

    Drakon New Member

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

    Вызвал PsLookupProcessByProcessId для всех процессов... Оказалось, что один процесс имеет EPROCESS, находящийся по адресу 0xB9... Так вот я открыл доступ всем процессам, чей PEPROCESS < 0xFFFF. Звук заработал.

    А кто может объяснить что это за процессы? Может почитать Соломона и Руссиновича? :) У меня есть... Но какую главу?
     
  5. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Очень странное явление, впервые о таком слышу.

    Хотелось бы узнать версию системы, установленые сервиспаки, имя процессов которые имеют такой крайне странный EPROCESS и охото посмотреть на код который дал такие странные результаты.

    EPROCESS в этом диапазоне адресов (как и любые другие данные) просто невозможен.
     
  6. Drakon

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    Ms Rem, твоя же работа... Только немного переделанная: http://www.dubki.ru/~drakon/NoTerminate.zip

    Вообще, если даже ты впервые о таком слышишь, то значит я что-то совсем не то в коде сделал.
     
  7. Drakon

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    Нашёл ошибку... Просто определение структуры EPROCESS использовал из винды 2000... А сижу на ХР...



    Ну, так вот. Выяснилось, что всё дело в svchost и lsass... Если их блокировать, то пропадает звук. А вот как определить, что это не "вражеские" процессы? У них есть отличительные особенности?
     
  8. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    А если блокировать csrss, то в Windows XP пропадают визуальные стили.
     
  9. Drakon

    Drakon New Member

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

    Ms Rem New Member

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

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    Ms Rem хороший у нас диалог получился... В чат бы. =) Ты в ICQ бываешь когда-нибудь?



    А насчёт svchost и lsass - я смотрю в диспетчере задач они бывают только "SYSTEM", "LOCAL SERVICE", "NETWORK SERVICE"... Ну, так вот откуда в нулевом кольца взять имя пользователя процесса?

    Я смотрю, у тебя аналогичная проблема с csrss была... Как ты обнаружил, что он имеет спицифичные только ему именованные объекты?
     
  12. Drakon

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    Так что, никакой информации не будет?
     
  13. CARDINAL

    CARDINAL Member

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

    вообщето в одной из своих статей MS-REM писал, что для этого творит данный процесс. Почитай невзначай)
     
  14. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Drakon, алгоритм примерно такой:

    1. NtOpenThreadToken или NtOpenProcessToken(если первая не пройдет)

    2. выделяешь под SID память PTOKEN_OWNER

    3 NtQueryInformationToken(..,..,SID,..,..)

    вроде как все, конечно же не забывай удалять за собой мусор
     
  15. Drakon

    Drakon New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    85
    Адрес:
    Russia
    Итак, если кому интересно - я выловил все уникальные хэндлы, открытые в csrss, svchost, lsass. Сделал это так: через Process Explorer (www.sysinternals.com) записал в файл все открытые хэндлы для нескольких процессов. Потом написал анализатор этих файлов на Perl и получил результат. Всё это можно скачать отсюда:

    http://www.dubki.ru/~drakon/handles.zip

    Соответственно, файлы result_*.txt - это уникальные хэндлы для процессов.



    P. S.

    Исходную проблему решил совсем по-другому.

    А это так... Чтобы и таким способом тоже решить.