Можно ли как-нибудь запретить закрытие определенного процесса ф-цией ZwTerminateProcess и ф-циями DebugActiveProcess/CloseHandle? Например я знаю(в теории!) как это делает Kaspersky Anti-Virus - он вешает некий не совсем понятный мне драйвер, который блокирует возможность закрытия процесса, однако при это на попытку закрыть процесс дебагом он возвращает 1, то есть типа УСПЕШНО закрыто . Как будет выглядеть полный код подобного драйвера и что нужно для этого сделать?
Ага... Вопросов 2 - где найти этот драйвер, ибо имя его нигде не проскакивает и как расшифровать его, ибо насколько я знаю с 5 версии Касперский стал шифровать свои дрова очень злым алгоритмом, который хрен продизасмишь... Поэтому может привел бы кто-нибудь код перехвата в Ring-0?
Реверсить драйвер АВ только чтобы посмотреть как он перехватывает ZwTerminateProcess и Debug*? Проще написать самостоятельно, IMHO.
вот-вот... только как? скажем так - с какого конца начать? пробовал без использования дров - но call gate, переведенный в ассемблер из местной статьи на Delphi у меня не заработал . Да и опыта работы в Ring-0 у меня ровно 0(каламбур )
Не устраивает тем, что статьи написаны на Дельфях... И все мои попытки переработать их на чистый MASM заканчивались провалом
Pinkbyte Там не идёт комментирование исходника, а описание техники, исходник как пример. По описанию техники можешь сам всё написать.
PS: Если так влом писать самому, то откомпилируй в Delphi с выключенной оптимизацией и посмотри в IDA.
n0name, самый МИНИМАЛЬНЫЙ исходник на Delphi который я получал в W32Dasm показал мне, что там 50000 строк кода... Найти кусок НУЖНОЙ(не библиотечной ф-ции) в них реально, но отковыривать библиотечные ф-ции от нормального текста программы - это дофига времени. n0name, по одному описанию техники и примере программы на НЕЗНАКОМОМ мне языке(Паскаль я учил ООООЧЕНЬ давно, так что принцип аналогии здесь не очень уместен) я не могу понять как написать программу на ассемблере. Это при том, что алгоритм здесь не "сложить числа 2 и 5", а гораздо сложнее(по крайней мере для меня)...
А еще была такая тема в Windows. На текущих версиях не знаю, но на 2000 и на XP вроде работало. не помню точно.. давно это было. Так называемый NtClose DeadLock. Может и до сих пор не пофиксили..
n0name, я С начал учить только полтора месяца назад... Да и слепой я видать - киньте кто-нить точную ссылку, а то статью на дельфях видел, а на С - чо-то не припомню(если это конечно не старый int trick)