Блокировать запуск процесса

Тема в разделе "WASM.NT.KERNEL", создана пользователем GVL, 22 окт 2008.

  1. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Не существует 100% стабильного способа отключить PG навсегда. Аминь.
     
  2. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Да навсегдна не надо - надо его иметь только на время работы своего драйвера, в идеале только на те модификации, что сделал свой дров :)
     
  3. Clerk

    Clerk Забанен

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

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Во-первых, в легальном продукте это не подходит ибо дырку сделаешь в безопасности, сам же понимаешь. Во-вторых, не факт, что твой метод отключения таймера будет работать всегда, ибо в очередном обновлении MS может реализовать некоторые алгоритмы/механизмы по-другому.
     
  5. Clerk

    Clerk Забанен

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

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    ok, за сим и закончим беседу.
     
  7. AntiFreeze

    AntiFreeze Дмитрий

    Публикаций:
    0
    Регистрация:
    26 июн 2008
    Сообщения:
    65
    офф: x64, почему комменты отключены в блоге? раньше же вроде как было..
     
  8. GVL

    GVL New Member

    Публикаций:
    0
    Регистрация:
    9 окт 2008
    Сообщения:
    7
    Хочу поделиться результатами своих исследований. Делал так как описывал в блоге х64:
    мониторинг на LoadImageNotifyRoutine, внедрение APC в юзермод и завершением процесса.

    Внедрить APC не получалось непосредственно из LoadImageNotifyRoutine - зависало на методе MmMapLockedPagesSpecifyCache при маппинге кода APC в виртуальное пространство целевого процесса. После вынесения в отдельный поток все заработало.
    И еще, уже в юзермоде вызов NtTerminateThread все равно иногда выдавал месаджбокс с ошибкой. Использование метода TerminateProcess() из kernel32.dll полностью решило эту проблему.
    Спасибо х64 и всем принимавшим участие.
     
  9. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    По статистике, 95% пишут не по делу. Проще отключить.
     
  10. x64

    x64 New Member

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

    Хорошее, годное замечание, хотя думаю ExitThread() было бы вполне достаточно.
     
  11. GVL

    GVL New Member

    Публикаций:
    0
    Регистрация:
    9 окт 2008
    Сообщения:
    7
    Практические упражнения по теме показывают, что в после ExitThread() в памяти остается "мертвый" процесс с одним потоком, который нужно дополнительно убивать. TerminateProcess() как я писал раньше тоже не лучшее решение, так как на 101 раз все же вылетает сообщение о том, что что-то не склеилось. Зато ExitProcess() работает по-тихому :).
     
  12. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    GVL
    Да, верно. К слову, я там в блоге по ссылке внизу ещё один способ отписал, может, пригодится.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    GVL
    Это не возможно.
     
  14. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Я не был бы так категоричен. Мы ж не знаем, что за код у автора, и мы не знаем, создают ли статически связанные dlls потоки. В общем, я к тому, что при определённых обстоятельствах при неправильном использовании описанных в блоге способах такая ситуация вполне возможна. Например, для способа "Завершение процесса после инициализации 2" я совершенно точно могу написать код, который будет воспроизводить подобную ситуацию для калькулятора (calc.exe), для предыдущего способа тоже, скорее всего, что-нибудь придумал бы...
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    x64
    У "мёртвого" процесса нет потоков. Также поток не может вызвать функу юзермодную если адресного пространства нет к примеру. Или поток не может исполняться вне контекста процесса. В той цитате смысла нет.
     
  16. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Проблема в терминологии, полагаю. Очевидно же, что под "мёртвым процессом" автор имел в виду не настоящий мёртвый процесс, а процесс, никак не проявляющий свою активность чисто внешне. Вот именно такого эффекта добиться довольно просто. Обсасывать тут как бы и нечего даже.