Самый что ни на есть надежный способ не дать убить процесс

Тема в разделе "WASM.WIN32", создана пользователем Pinkbyte, 15 окт 2006.

  1. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Можно ли как-нибудь запретить закрытие определенного процесса ф-цией ZwTerminateProcess и ф-циями DebugActiveProcess/CloseHandle? Например я знаю(в теории!) как это делает Kaspersky Anti-Virus - он вешает некий не совсем понятный мне драйвер, который блокирует возможность закрытия процесса, однако при это на попытку закрыть процесс дебагом он возвращает 1, то есть типа УСПЕШНО закрыто :dntknw:. Как будет выглядеть полный код подобного драйвера и что нужно для этого сделать?
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Нужно:
    Взять драйвер касперского и открыть его в дизассемблере.
    И полный код у тебя в кармане.
     
  3. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Ага... Вопросов 2 - где найти этот драйвер, ибо имя его нигде не проскакивает и как расшифровать его, ибо насколько я знаю с 5 версии Касперский стал шифровать свои дрова очень злым алгоритмом, который хрен продизасмишь... Поэтому может привел бы кто-нибудь код перехвата в Ring-0?
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Читай статьи тут на сайте. Там валом примеров перехвата. Во всех подробностях расписано
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Pinkbyte
    Ну, если напишешь в .COMMERCIALS, то приведут.
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Реверсить драйвер АВ только чтобы посмотреть как он перехватывает ZwTerminateProcess и Debug*? Проще написать самостоятельно, IMHO.
     
  7. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    вот-вот... только как? скажем так - с какого конца начать? пробовал без использования дров - но call gate, переведенный в ассемблер из местной статьи на Delphi у меня не заработал :dntknw:. Да и опыта работы в Ring-0 у меня ровно 0(каламбур :))
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Pinkbyte
    чем тебя не устраивает #4?
     
  9. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Не устраивает тем, что статьи написаны на Дельфях... И все мои попытки переработать их на чистый MASM заканчивались провалом
     
  10. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Pinkbyte
    Там не идёт комментирование исходника, а описание техники, исходник как пример. По описанию техники можешь сам всё написать.
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    PS: Если так влом писать самому, то откомпилируй в Delphi с выключенной оптимизацией и посмотри в IDA.
     
  12. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    n0name, самый МИНИМАЛЬНЫЙ исходник на Delphi который я получал в W32Dasm показал мне, что там 50000 строк кода... Найти кусок НУЖНОЙ(не библиотечной ф-ции) в них реально, но отковыривать библиотечные ф-ции от нормального текста программы - это дофига времени.

    n0name, по одному описанию техники и примере программы на НЕЗНАКОМОМ мне языке(Паскаль я учил ООООЧЕНЬ давно, так что принцип аналогии здесь не очень уместен) я не могу понять как написать программу на ассемблере. Это при том, что алгоритм здесь не "сложить числа 2 и 5", а гораздо сложнее(по крайней мере для меня)...
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    сделай DLL и экспортируй функцию.
    Есть и на C. На wasm.ru
     
  14. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    А еще была такая тема в Windows. На текущих версиях не знаю, но на 2000 и на XP вроде работало. не помню точно.. давно это было.
    Так называемый NtClose DeadLock. Может и до сих пор не пофиксили..
     
  15. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    n0name, я С начал учить только полтора месяца назад... Да и слепой я видать - киньте кто-нить точную ссылку, а то статью на дельфях видел, а на С - чо-то не припомню(если это конечно не старый int trick)
     
  16. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Если ты подразумеваешь под этим перехват функций через подмену адреса в SDT, то да.
     
  17. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Так вот как раз он мне и не нужен - у меня XP. И на ней он явно не работает - проверено :dntknw:
     
  18. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Pinkbyte
    работает. Проверено.