Скрытие процесса в TaskMgr.

Тема в разделе "WASM.WIN32", создана пользователем Clerk, 14 мар 2010.

  1. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Здрасте.
    Необходимо скрыть процесс в диспетчере задач. Условия:
    o Ринг 3. Можем исполнять код в контексте целевого процесса, соответственно доступна вся его память, контекст потоков, можем ставить векторные обработчики исключений и пр.
    o Секции кода изменять нельзя, ибо палится детекторами типо рку, гмера и пр.
    o Для примера возьмём XP.
     
  2. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    ладно уж, рассказывай чего изобрел
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    RET
    Помогите решить задачу.
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.242
    я, ещё в институте когда учился, делал так: внедрял длл, сплайсил функцию zwquerysysteminformation... можно сделать повыше, допустим периодически проверять и убирать из списка (что на окне) нужные процессы, ну или там попробовать к оконным сообщениям списка прицепиться... это вроде просто, но ты же не любишь, чтобы просто)))
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Rel
    Код нельзя менять, шадов не используем. Как есчо ?
     
  6. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    ээээ.......только код?,тогда можно дерьмо метод - замена в таблице импорта,ЛоадЛибрари и ГетПрокАдрес,какбы дополнительно обрабатываются,но это через жопу....
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    1nsidE
    Кодосекции менять нельзя, говорю же. Секции данных и остальную память менять можно вобщем.
     
  8. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Просто идея: Поставить аппаратный брейкпойнт на возврат из NtQuery.. , векторным хэндлером SleepEx -- т.к. второй параметр, который ему передадут -- адрес возврата в ntdll, то он будет alertable и из скрываемого процесса можно ставить всем потокам apc в очередь. Ему мы уже можем передать параметр, поставим в apc -- SendMessage а параметр ему -- хэндл окна которое мы создадим в скрываемом процессе. Теперь, т.к. sendmessage -- блокирующий вызов то когда мы получим его в наш процесс -- таск мэнеджер будет ожидать возврата нами значения, мы в этот время анализируем в нем стек, на ложные апц-срабатывания, корректируем его, т.к. там с параметрами мы не подходящие функции выбирали и правим данные, которые нам надо =) Может я чего-то не учел?
     
  9. Clerk

    Clerk Забанен

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

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Да, но мы же не можем хэндлеру передать произвольный параметр. Т.е. нам тогда нужно внедрить свой код в таск менеджер и сделать его вех-хэндлером.. Или разрешено выделять память для выполнения в ап таск менеджера, а нельзя только менять уже загруженные кодовые секции?
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Velheart
    Да, мы можем исполнять код в контексте этого процесса и памятью манипулировать таким образом, чтобы не палилось утилитами сравнивающими модуля в памяти и на диске.
     
  12. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    Посмотри в строну RtlQueryProcessDebugInformation на первый взгляд там вызывается много разных коллбеков возможно получится законтролить в секции данных а там уже найти в стеке возврат из CreateToolHelp32snapshot и подменить адрес.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    blast
    Эта функа не юзается, непосредственно вызывается сервис для получения слепка.
     
  14. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    RtlQueryProcessDebugInformation - сводится к созданию удаленного потока с последующим получением содержимого PEB. CreateToolHelp32snapshot - это вообще прикладная надстройка.
     
  15. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    ..а внедряемая и собирающая инфу уже готовая RtlpQueryProcessDebugInformationRemote
     
  16. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    а зачем скрывать процесс, если можно создать потоки в уже существующих процессах?
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    GoldFinch
    Это не важно, нужно скрыть уже запущенный процесс.
     
  18. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Clerk
    Какой именно "этот"? VEH или hardware breakpoint? Если второе, то исключение можно и по-другому генерировать... например, ограничить лимит сегмента ds, чтобы KUSER_SHARED_DATA.SystemCall туда не попадал.
     
  19. Clerk

    Clerk Забанен

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

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Clerk
    Так дело только в локальности для потока? Тогда можно наложить, например, PAGE_GUARD на страницу с вызовом. В обработчике, разумеется, проверять какая функция была вызвана.