Подскажите, а patchguard возможно отключить пользователю вручную в настройках системы? Пишу легальную программу которая должна корректировать некоторые структуры, охраняемые patchguardом. Не хочется использовать разные хакерские трюки для его обхода...
Насчёт можно или нельзя - не знаю, у меня нет такой информации, но есть одна проблема: если ты отключишь PG, то создашь дыру в безопасности, т.к. руткиты так же смогут пролезть в систему пользователя. Думаю, что пользователь не захочет создавать в своей системе такую дыру.
Ссылку можно? или в личку что и как? Если ты про "http://www.codeplex.com/easyhook/Release/ProjectReleases.aspx?ReleaseId=15850" то давно уже как не работает на Висте64 СП1.
Можно отрубать таймер pg либо хукать исключение разворачивать стек (благо на х64 это всегда возможно)
Хотя можно сделать легальное хакерское отключение типа "позвольте я взломаю систему?" но все-таки хочется без этого обойтись
статья кк и на uninformed'e есть целый цикл. еще то ли на codeguru то ли на codeproject видел стетейку.
А кто в курсе, различное антивирусное ПО, фаерволы, системы безопасности осуществляют доступ к охраняемым patchguard'ом данным. Каким образом эти программы решают проблему?
Я тут купив Syser, вчера поигрался со страничным преобразованием, точнее с элементами таблиц страниц и элементами таблиц каталога и ...выставив там, к примеру, в младших 12 битах число 0x827 изменил аттрибуты страницы по адресу 0x83AEE000 (физ. адрес 0xD0000000 – первая видеостраница), а команда page показала страницу уже как: P A U RW, если это то, то я был рад всем Вам помочь! С праздником!!!
>> Можно отрубать таймер pg либо хукать исключение разворачивать стек (благо на х64 это всегда возможно) outdated =) 3-й патчгвард вызывает KeBugCheckEx с рандомным кодом, предварительно затерев стек мусором. Насчёт таймера - его найти достаточно проблематично. Однако, можно заставить патчгвард не загрузиться вовсе: для этого просто нужно каким-либо перехватить и обработать divide error fault, который возникает в KeInitSystem() и обработчик которого, собственно, инициирует запуск патчгварда. >> Каким образом эти программы решают проблему? As i know - никак. Незнаю насчёт легальных программ, но полноценный undetectable руткит можно написать вообще не заморачиваясь обходом сабжа, т.к. в kernel mode есть куча других точек взаимодействия, между которыми можно вклинится. А так, имхо, разработчикам вроде вас, рвущимся всё подряд отключать, нужно отбивать руки.
Cr4sh, руки отбивать надо "разработчикам вроде вас" =). И да - "разработчикам вроде вас" говорить проще чем "разработчикам вроде нас": взял расставил по ядру костыли и хаки работает и черт с ним. А патчгуарду никто в мире не обрадовался потому как а) профанация б) геморрой для системных программистов. int2eh, не очень понял что вы предложили: patchguard проверяет контрольные суммы интересных ему областей памяти. Кроме того меня интересует еще и переключение защищаемых им MSR регистров. Вас тоже с праздником!
>> руки отбивать надо "разработчикам вроде вас" =) Да, нам тоже. >> А патчгуарду никто в мире не обрадовался потому как а) профанация б) геморрой для системных программистов. Так патчгвард и не позиционировался как средство для противодействия чего-либо, главная его цель - снизить популяцию нестабильных драйверов (втч. различных систем защит) работающих по принципу "хукнем плонету". Конечно же, для их девелоперов это минус, но для юзеров - только плюс.
SashaTalakin, я предлагал вручную в PA установить атрибуты для страницы как URW, например, для x86 32 bit NT PA level 2 для меня это не проблема (см. атач, плz, там не для PAE!!!). Может это и поможет!!!?
SashaTalakin, я думаю что, чтобы какие-то страницы защитить чем-то, следует эти страницы как-то отметить (выделить) для защиты и лучшее место для этого - системные таблицы трансляции адреса. Попробуйте переделать мой код (см. атач из предыдущего моего коммента) под себя, поизменяйте там атрибуты PDE/PTE и может это поможет, а если нет, то тогда.... нефиг меня было слушать, я старый... больной... человек!!! P.S. Если, конечно, есть время, то вот так еще можно позабавиться моей ф-й xxx_MakeURWpage (см. атач в предыдущем моем сообщении), например: 1. Зайдите в Оборудование->Диспетчер устройств и найдите там Видеоадаптеры 2. Найдите на вкладке у своей видеокарты в “Ресурсы” 2-ой “Диапазон памяти”, например, физический адрес 0xD0000000 3. В xxx_MakeURWpage измените строчку кода так: *Patch = ((0xD0000000 & 0xFFFFF000) | 0x047);//исправляю атрибуты PTE (Page Table Entry)!!! 4. Вызовите так xxx_MakeURWpage(0, -1) И тогда из Вашего приложения (UserMode) обращение к странице по адресу 0 не вызовет никаких исключений: memset(0x00000000, 0xFF, 4096); и эта строчка кода запишет в 1 видеостраницу белую линию (при 24/32 bpp “качестве цветопередачи” видяхи) !!!
Вроде я нашёл кое-что, почитайте у М. Руссиновича, Д. Соломона про "Недействительные PTE" (page file PTE и transition PTE, биты 5-9 атрибуты защиты). Удачи!