вот выведешь ядро в нон-стоп аварийный режим и локализуешь, где тот хитрый механизм расположен по поводу ядер нужно не забывать, одну забавную и крайне болезненную для разрабов вещь == циклы в ядре строятся по минимуму операций, то бишь напХать тудЫ кучу обработчиков НЕВОЗМОЖНО.
Нет, ну на уже работащей системе это, действительно, только на словах будет всё просто отключать. http://kitrap08.blogspot.com/2012/07/patch-guard-1.html?m=1
Сорцы вбокса открыты - покажите нам эти строчки кода. Зачем вообще виртуалке отключать PatchGuard если она ничего не перехватывает в ядре windows?
HoShiMin, PG это процедура весьма большая, она криптована(вирта). Что мешает пропатчить её начало, скипнуть врядле получится. Но так как это обычная процедура, то из неё будут выборки в память. А это значит что с начала её выполнения и до конца можно выборку подменять, при выходе прекратить трансляцию. Тем более что мод общий, можно тупо на ловушках сделать, примитивно протрассировать хардом. --- Сообщение объединено, 14 дек 2020 --- HoShiMin, > очень хитрый механизм запуска проверок dpc etc, а какая разница - туда воткнуть тупо int3, ловушку загрузить и дальше всё PG больше нет. Крутишь/трассируешь и подменяешь выборку на ориг данные. Я это не делал, но не вижу каких то возможных трабл.
Indy_, давай будем последовательны. Пока мы ничего не знаем про PG и хотим перехватить какую-нибудь функцию. Трамплин поставили - что делаем дальше?
HoShiMin, Получаем управление до вызова PG. Тем же патчем, я выше говорил тупо туда останов поставить, пропатчить, не важно как. После получения управления, это вызов PG крутим и подменяем выборку к изменённым областям. Не имеет значения что там вирта, выборка всегда прямая, например к какой то дескрипторной таблице - прямое чтение данных. Крутнуть эмуляцией/трансляцией получится, на счёт трейса хардом врядле выйдет, там наверно антидебаг, как хард так наверно и по таймингу.
HoShiMin, Он в отдельной кодовой секции, этот адрес можно получить как угодно, статистикой(тк вирта) сигнатурами в общем это не задача даже. Можно и динамикой найти, по той же выборке. Сначала ловушка сработает, только потом будет вызван PG.
--- Сообщение объединено, 15 дек 2020 --- HoShiMin, вообще, при проверке целостности по хэш-суммам читают только головы проверяемых фунок (то бишь первые энн байт) в силу тормознутности подобных проверок == такого дикобраза можно обойти, поставив ловушку с энн + 1го байта. Однако, есть другой подход для контроля целостности... Код (C): ... func(...){ op_1 ... op_k updateMark op_k+2 ... op_k+m updateMark } обновление отметки показывает контролёру текущий статус исполнения функции, а пачуля обрывает такие сообщения
UbIvItS, вы сами себе противоречите. Вначале пишете, что PG отключен, оперируя тем что виртуалка должна быть установлена, а потом пишете что виртуалка ничего не отключает. Тогда кто его отключает?
Это HyperVisor Code Integrity (HVCI), один из компонентов DeviceGuard. К PatchGuard'у эти настройки не имеют никакого отношения и он продолжает работать так же, как и работал.
довольно странное заявление == даже не вдаваясь в подробности, мы можем видеть надписи core isolation & memory integrity. если убираем эти два параметра, то что же остаётся для пг??? чем же он занимается?
Проверкой целостности ядра и системных структур. DeviceGuard (а именно, его компонент HVCI), опираясь на виртуализацию, защищает "активно": пока он включен, ты не можешь модифицировать системные компоненты, не можешь запустить недоверенный гипервизор, не можешь выделять в ядре исполняемую память. Не можешь ничего, что могло бы нарушить целостность ядра. Он опциональный и отключаемый. PatchGuard сам ничего не запрещает: он лишь периодически проверяет контрольные суммы ядра, системных компонентов и системных структур. Даже если он включен, ты по-прежнему можешь менять код ядра, ставить свои перехваты и делать с ядром что угодно. До первой проверки. Он неотключаемый и работает постоянно. Это два совершенно разных и независимых компонента защиты.
то есть memory integrity. Однако, я ж уже сказал.. ну-так мы можем отключить пг иль всё же ещё у него есть некие загадочные фун-ки?
Эта настройка включает только HVCI. Не важно, какое там пересечение в терминологии. Этот компонент - защита памяти на основе виртуализации. PatchGuard она не отключает и никак на него не влияет. Говорю же, это два разных компонента, они друг с другом никак не связаны и называются по-разному. Единственный штатный способ - подключить отладчик ядра. Все сторонние способы сводятся к тому, чтобы сломать сам PatchGuard: или не дать ему запуститься, или не дать ему свалить систему в синий экран. Или с помощью самописного гипервизора скрыть свои модификации, чтобы PatchGuard, читая память, видел немодифицированный оригинальный код. И все эти способы оперативно закрывают.
ох, не надо так мокрые не настолько бешеные, чтоб в корпи версию не поставить штатный выключатель этого хлама Ты это у мокрых прочитал аль ещё где?