Сейчас на форуме: bartolomeo, -Sanchez-, morgot, sashalogout (+4 невидимых) |
eXeL@B —› Софт, инструменты —› Убийство процессов-призраков |
Посл.ответ | Сообщение |
|
Создано: 18 марта 2020 00:35 · Поправил: IOCTL_ · Личное сообщение · #1 Бывают случаи, когда в памяти остаётся процесс, который штатными средствами винды убить невозможно. Попытка убийства через диспетчер задач выдаёт ошибку доступа, а taskkill пишет: Ошибка: Не удается завершить процесс с идентификатором 1234. Причина: Ни один из экземпляров этого задания не запущен. Если глянуть потоки через procexp, то там либо непонятный пустой поток без опознавательных признаков с TID 0, либо ntdll.dll!RtlUserThreadStart и какой-то вменяемый TID. Кто-нибудь знает, что это за фигня и чем её грохнуть? |
|
Создано: 18 марта 2020 01:13 · Личное сообщение · #2 |
|
Создано: 18 марта 2020 01:22 · Личное сообщение · #3 |
|
Создано: 18 марта 2020 13:32 · Личное сообщение · #4 |
|
Создано: 18 марта 2020 14:34 · Личное сообщение · #5 А тулза какая-то есть, чтобы грохать процессы нестандартными способами? Ну там через Nt, Zw и т.п. Помню, была какая-то тулза и там были разные кнопки с названиями функций: NtTerminateProcess, ZwTerminateProcess и ещё штук 6 вроде. Ещё помню тулзу, которая через свой драйвер процессы грохала. Есть у кого-то такие тулзы? |
|
Создано: 18 марта 2020 14:42 · Поправил: Boostyq · Личное сообщение · #6 IOCTL_ пишет: А тулза какая-то есть, Раньше в Process Hacker 2 было куча методов терминации процесса, но большая методов работала только на 32-битных системах, и это убрали в v2.39 Сейчас методы переписали и перенести в отдельный плагин Наверное собранной версии нет, и это нужно компилировать, либо можно просто взять сами методы ----- В облачке многоточия | Сообщение посчитали полезным: IOCTL_ |
|
Создано: 18 марта 2020 14:43 · Личное сообщение · #7 Нашёл статейко шикарное по этому поводу: |
|
Создано: 18 марта 2020 14:45 · Личное сообщение · #8 |
|
Создано: 18 марта 2020 14:46 · Личное сообщение · #9 |
|
Создано: 18 марта 2020 17:22 · Личное сообщение · #10 IOCTL_ пишет: Помню, была какая-то тулза и там были разные кнопки с названиями функций: NtTerminateProcess, ZwTerminateProcess и ещё штук 6 вроде. Advanced Process Termination (APT), последняя версия 4.2 b5bc_18.03.2020_EXELAB.rU.tgz - APT.4.2.zip | Сообщение посчитали полезным: IOCTL_ |
|
Создано: 18 марта 2020 18:14 · Личное сообщение · #11 |
|
Создано: 18 марта 2020 19:35 · Личное сообщение · #12 |
|
Создано: 18 марта 2020 19:50 · Поправил: difexacaw · Личное сообщение · #13 Процессы так висли из за каких то глобальных синхронизаций в ядре на младших версиях. Прибить такие процессы можно только ресетив ядро. Антируткиты киляют процессы и что толку если висяк в ядре. f13nd > Такие процессы появляются если запустить любой процесс с флагом CREATE_SUSPENDED и после этого не стартануть основной тред. Может пример будет, а то у меня завершается. Впрочем оно и не может не завершаться, так как все блокировки свободны. Помню глючило на NtSuspendProcess/NtResumeThread.. хотя это можно потестить. Теоретически если послать останов поточный и тормознуть такой поток(race), то может что и подвиснет ----- vx |
|
Создано: 18 марта 2020 21:52 · Личное сообщение · #14 difexacaw пишет: Может пример будет Наверное имелось ввиду NtCreateProcess с флагом PROCESS_CREATE_FLAGS_SUSPENDED (0x00000200) Если вызвать этот сервис, и дальше ничего не делать с созданным хендлом (не создавать маин поток, не уведомлять csrss и т.д.), а просто закрыть приложение, то хендл так и останется в ядре. Такой хендл Диспетчер задач не увидит, но он будет виден например в x64dbg, при этом, насколько помню, отладчик не сможет его закрыть. |
|
Создано: 18 марта 2020 23:33 · Поправил: difexacaw · Личное сообщение · #15 |
|
Создано: 19 марта 2020 01:59 · Поправил: IOCTL_ · Личное сообщение · #16 В общем, поигрался я с вышеуказанными тулзами, перепробовал всё, что можно, включая "опасный" режим TT4 из Process Hacker 2.38, но процесс продолжает висеть. Модулей нет, хэндлов нет, трэдов нет, PID - есть Cancel I/O не помог. Добавлено спустя 18 минут Под занавес попытался убить процесс стандартным способом через PH, т.к. APT его больше не видит. Написало ошибку: Попытка доступа к процессу, выполняющему процедуру завершения. Возникает философский вопрос: можно ли завершить завершающийся процесс? |
|
Создано: 19 марта 2020 19:31 · Личное сообщение · #17 IOCTL_ > Попытка доступа к процессу, выполняющему процедуру завершения. Необходимы подробности, откуда эта инфа. Тоесть это либо сервисный статус STATUS_PROCESS_IS_TERMINATING, либо значение из PS_BASIC_INFO.ExitStatus != STATUS_PENDING(статус последнего треда, а если у него STATUS_PENDING что тогда..), либо косвенная инфа по маркерам(PS_PROCESS_FLAGS_PROCESS_DELETE). Code:
----- vx |
|
Создано: 20 марта 2020 03:49 · Поправил: hiddy · Личное сообщение · #18 difexacaw, тестил на userinit.exe, потому что он всегда висит на 10 винде. Можно получить доступ 0x1fffff (Full control) к процессу, если есть права, вызовы NtDuplicateObject, NtTerminateProcess итд возвращают STATUS_PROCESS_IS_TERMINATING, но при этом счетчик ссылок уменьшается на 1, если счетчик меньше 21, то ядро устанавливает значение 32771. Интересный факт, можно создать дочерний процесс через NtCreateUserProcess, передав хэндл с правами PROCESS_CREATE_PROCESS. Вот здесь еще пару слов на эту тему: https://youtu.be/dB3seu4o24A?t=2089 |
|
Создано: 20 марта 2020 19:15 · Личное сообщение · #19 hiddy Используется блокировка на 10 ExfAcquireRundownProtection(), на 5 ExAcquireRundownProtection(). В 10-ке ссылок на неё ~100. Обычно там конструкия: Code:
Если бегло глянуть, то эта синхронизация крутит цикл. До этого не поднимается IRQL для запрета ядерной APC. Тоесть можно тормознуть поток и любой иной будет крутится до разморозки первого, конечно нужно подробно посмотреть на реализацию блокировки. Почему блокировка не освободилась - можно лишь гадать. Баг какой то в ядре. Если он повторяется стабильно, то можно попытаться разобраться без отладки. ----- vx |
|
Создано: 21 марта 2020 14:09 · Личное сообщение · #20 |
|
Создано: 21 марта 2020 14:12 · Личное сообщение · #21 |
eXeL@B —› Софт, инструменты —› Убийство процессов-призраков |