Здравствуйте! Есть программа, которая защищает процесс используя этот метод http://msdn.microsoft.com/en-us/library/windows/hardware/ff558692.aspx , все отлично, диспетчер задач и другие подобные программки не имеют доступа у процессу, но вот программы, которые тоже используют драйвер могут делать все что угодно, не смотря на эту защиту. Подскажите, как можно защититься в этом случае? Спасибо!
Нужно рассматривать конкретные случаи, так как в ядре есть возможность в принципе сделать все что угодно)
Например хукнуть ntpopenprocess и ntduplicateobject так, чтобы другие драйвера тоже не могли открыть хэндл, так можно?
Hippey Если в общем случаи то только убить процесс), ни как в общем. Самая система обращается часто к процессу, а подделать обращение не особо трудно.
Hippey А ты вообще проверял свою блокировку на Win7 x86 и Win7 x64 ? При старте процесса всякие системные процессы пытаются открыть свежеиспечённый процесс. Ну а если этот процесс звук выводит (игрушка какая нибудь), то и audiodg.exe пытается присобачится к процессу. А если у него не получится, то и звук новый процесс не сможет исдать. Так что у тебя всё равно должны быть исключения, которым ты доступ разрешаешь. А как раз из под этих разрешений и можно постоить "атаку" на "защищенный" процесс. ЗЫ. А из под другого драйвера вообще всё можно )) ЗЫ2. Не вздумай хукать функи на x64.
T800 Вы про защиту ядра от патчинга? Hippey Лучше всего защищено то, чего нету. Не создавайте процесс - и не нужно будет его защищать. Для легального софта, тот вариант который, вы тут написали, вполне годен. Оставьте его и не парьтесь больше. Если софт малварный - ваши трудности уже.
или можно ли вообще узнать, что какая-то программа или драйвер изменила память моего процесса, засунула свою длл например или типа того?
TermoSINteZ На патчах мир не сошёлся. Я к примеру их вообще не юзаю. Это не мешает мне контролировать ваш аверкий код.
x64 Не имеет, а получает. Когда дров доступ поимеет, то он всех поимеет.. ну вы же понимаете. Лочить его нужно при попытке получить доступ.
Hippey Противостоять драйверам невозможно. Единственный шанс-не дать загрузить вражеский драйвер: к примеру, похукать NtLoadDriver и спрашивать у юзера что делать. Существует миллион способов свалить процесс из ядра, все дырки не заткнете. В конце-концов, от тупого перебора хендлов процессов/потоков (с их закрытием, дублированием и т.д.) и до затирания памяти/разрушения структур процесса. Перехват в ядре даёт гарантию защиты (и то, не всегда) только от юзермода. В ядре, на худой конец, можно хоть планировщик подправить и ваш процесс будет висеть без процессорного времени.
Malfoy Да это вам не LDE подъюзать, тут графы вас не спасут! Айс умел это делать , да и виндбг может. Логический вывод можно, но потребуется "магия"))