eXeL@B —› Основной форум —› Легальный способ запретить снятие скриншота |
Посл.ответ | Сообщение |
|
Создано: 25 августа 2011 20:31 · Поправил: DenCoder · Личное сообщение · #1 Приветствую всех! Не так давно (2 года назад) реализовал такой запрет. Думаю, все знают или догадались уже, как я это сделал Обычные хуки функций получения hdc окна и копирования из одного в другой... Вот 2мя часами ранее интересно стало - а нет ли чего интересного в механизме копирования битмапов? Покопался... кажется есть законный способ запретить скриншот окна/экрана, безо всяких инжектов и перехватов. В win32k!NtGdiBitBlt, которая вызывается из BitBlt, перед копированием битмапа производится ряд проверок, в том числе вызывается неэкпотрируемая win32k!UserScreenAccessCheck, где проверяются права. Если таких прав нет, то юзверь получает ERROR_INVALID_HANDLE. Внутри этой функи вызывается nt!PsGetProcessWin32Process - получается указатель на WIN32_PROCESS(по другим данным PROCESSINFO), затем проводятся проверки: (Win32Process->+0x3C == _grpdeskRitInput || (Win32Process->+0x48 & 8)) && !(Win32Process->+0x8 & 0x40010) - если true - есть доступ... Хз, что за структура WIN32_PROCESS (или PROCESSINFO), но в инете нашёл много дезы по ней... Пока установил, что она не меньше, чем 0x194 байта, по смещению 0 указатель на _EPROCESS, по смещению 0xC указатель на _KEVENT... Покопался ещё немного, получить структуру WIN32_PROCESS кроме как из _ETHREAD.Win32process, можно также через ядерную таблицу HWND-хендлов окон, где хранятся указатели на структуры, в которых хранится этот WIN32_PROCESS - видимо владелец... Не ошибаюсь ли я, что есть её юзермод-копия? - как-то вроде пробегал по окнам, кажется какую-то таблицу в юзермоде видел... Может, кто-то уже копал в эту сторону? Подскажите, если я где-то не прав. Нечто нашёл здесь http://indy-vx.narod.ru/log.txt ----- IZ.RU |
|
Создано: 25 августа 2011 21:01 · Личное сообщение · #2 |
|
Создано: 25 августа 2011 21:06 · Личное сообщение · #3 |
|
Создано: 25 августа 2011 21:16 · Поправил: DenCoder · Личное сообщение · #4 |
|
Создано: 25 августа 2011 21:33 · Личное сообщение · #5 ох уж этот гугл Code:
|
|
Создано: 25 августа 2011 21:44 · Поправил: bowrouco · Личное сообщение · #6 Бесполезно. На сколько помню это ядро регает хоткей в контексте винлогона. Конечно это можно просто обойти, но это не будет проблемой, как обычно если механизм защиты известен. Пока есть десктоп, всегда его битмапу можно получить. > есть законный способ запретить скриншот окна/экрана, безо всяких инжектов и перехватов. А есчо есть песочница, которая никогда никем не юзалась, даже мс, но встроена в ядро. Достаточно её запустить, как все левые(абсолютно все, хуки, нотифи етц) манипуляции с шадовом отваляться. |
|
Создано: 25 августа 2011 22:20 · Личное сообщение · #7 bowrouco пишет: А есчо есть песочница, которая никогда никем не юзалась, даже мс, но встроена в ядро. Достаточно её запустить, как все левые(абсолютно все, хуки, нотифи етц) манипуляции с шадовом отваляться. Да только вы, вроде бы как, писали, что механизм её работы до конца неизвестен. Уже выяснили? + немного оффтопа: Indy, это вы?? ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 25 августа 2011 22:38 · Поправил: bowrouco · Личное сообщение · #8 |
|
Создано: 26 августа 2011 04:20 · Поправил: DenCoder · Личное сообщение · #9 reversecode Это есть в исходниках W2K. И даже больше Code:
Касательно самой PROCESSINFO vptrlx прав, поэтому ближе всех с реактоса Code:
Смущает только строчка W32ProcessSize == 0x198 Xp size, хотя видно, что 0x194. А W32PROCESS в W2K вообще нет. Взята с реактоса - на первый взгляд всё сходится: найденные указатели, проверка длины структуры по следующим за ней спискам тредов Code:
bowrouco пишет: Бесполезно. На сколько помню это ядро регает хоткей в контексте винлогона ммм... насколько я помню, конкретно ReigisterHotKey в контексте винлогона вызывается только для Ctrl-Alt-Del и ещё кучки комбинаций... так и не понял тогда, для чего они... Посему удачен любой вызов для любой комбинации с Print Screen. Но это не вызвало труда... Цель: запретить копирование битмапа окна одного процесса или всего экрана в окно другого. Перехватив кучку функций, на 100% цели не добиваемся - есть ещё десяток, а там может и ещё... непосредственно с видеокарты можно снять... Просто ради интереса копнул поглубже и показалось, что что-то нашёл... Ну если bowrouco , считает, что по другому нельзя - нет сейчас времени тратить впустую... Кстати, попробовал запустить песочницу - видимо одного EnforceUISandbox мало... ----- IZ.RU |
|
Создано: 26 августа 2011 07:40 · Личное сообщение · #10 |
|
Создано: 26 августа 2011 11:44 · Личное сообщение · #11 |
|
Создано: 26 августа 2011 12:10 · Личное сообщение · #12 |
|
Создано: 26 августа 2011 12:14 · Личное сообщение · #13 Говорю банальности, но DRM зло, а DRM с дровиной следует приравнять к руткиту с занесением в антивирусные базы. Gideon Vi пишет: и сделают с тобой тоже, что с автором SecureBook. А что с ним такое? ----- PGP key |
|
Создано: 26 августа 2011 12:41 · Личное сообщение · #14 Gideon Vi пишет: и сделают с тобой тоже, что с автором SecureBook. Со мной ничего делать не надо, я тоже дрова не люблю. А вот судя по nProtect и кол-ву пользователей игр которые им защищаются - проблем никаких нет. Gideon Vi пишет: и сделают с тобой тоже, что с автором SecureBook. И да, что там такое случилось? На сайте все вроде как даже наоборот, все отлично. |
|
Создано: 26 августа 2011 13:18 · Личное сообщение · #15 |
|
Создано: 26 августа 2011 13:22 · Поправил: Enigma · Личное сообщение · #16 Vovan666 пишет: http://securebook.ru/securebook/neskolko_slov_ob_antivirusah.html Обычная реакция на протекторы, ничего нового... Если смотреть с этой стороны, то тут шаг в лево шаг вправо - вот тебе и ложный детект от антивирусников. Функцию какую нибудь перехватил у себя же в процессе, и будет такой же эффект. |
|
Создано: 26 августа 2011 15:47 · Личное сообщение · #17 |
|
Создано: 27 августа 2011 04:47 · Личное сообщение · #18 ntldr пишет: А что с ним такое? а то самое: ntldr пишет: DRM с дровиной следует приравнять к руткиту с занесением в антивирусные базы. в первую очередь слили вебу. И автор сколько угодно может разоряться на своем сайте, но пока ебук будет требовать ставить левую дровину с функциями руткита, нормальные пользователи должны требовать манибек у продавца книжки. Enigma пишет: А вот судя по nProtect и кол-ву пользователей игр которые им защищаются - проблем никаких нет. и есть хоть одна европейская mmorg под этой поделкой? Enigma пишет: Обычная реакция на протекторы, ничего нового... антивирусы орут не на исполняемый файл, а на дров. | Сообщение посчитали полезным: NaumLeNet, ntldr |
|
Создано: 27 августа 2011 08:19 · Поправил: bowrouco · Личное сообщение · #19 Enigma > будет скрывать процесс (скрин которого делать нельзя) полностью из ring3? А толку от этого ? Итак шадов по большей части перенесён в ядро. Процесс это обьект, обьекты связанные с ним не связаны с его наличием. Тоесть удаляем запись из списков, из слепка етц, это никак не отразится на эвенте или окне.. > Функцию какую нибудь перехватил у себя же в процессе, и будет такой же эффект. Ну патч это вредоносная технология. Вообще следует запрещать запись в кодосекции, релокацию и настройку IAT выполнять в ядре. Кстате подумаю над этим, ведь если это сделать, то фактически всё негодное отвалится, зевсы всякие и прочая недомалварь, для которой патч лежит в основе жизнидеятельности. |
|
Создано: 28 августа 2011 05:36 · Поправил: DenCoder · Личное сообщение · #20 bowrouco пишет: Вообще следует запрещать запись в кодосекции, релокацию и настройку IAT выполнять в ядре. Ну а как тогда прикручивать/менять сетевой функционал к несетевому софту, например? Многая часть заработков лишится, Вы что? А самое главное - как тогда костыли для m$-продуктов писать? bowrouco пишет: Тоесть удаляем запись из списков, из слепка етц, это никак не отразится на эвенте или окне.. С этим согласен. Кажется, на текущий момент на каждый метод скрытия есть метод обнаружения. Я прав? Если пофантазировать - можно было бы свои объекты "процесс" и "поток" создать, отличные от системных, что скрыло бы нас от огромного числа глаз, но не от всех... Но фактически это равносильно переписанию и внедрению нового ядра - переключение контекстов, синхронизация, графика... bowrouco, так как? - Есть всё же легальный способ запретить программное снятие скриншота экрана/окна? ) bowrouco пишет: Пока есть десктоп, всегда его битмапу можно получить. нууу? В своём проекте я не запрещал получение hdc от окон других процессов (explorer в этом просто нуждается, а также без этого стили пропадут), но запрещал для полученных таким способом операции копирования. Минус только один - перехваты... Нет времени пока посмотреть - проверка вызовом UserScreenAccessCheck внутри NtGdiBitBlt разве не посылает процесс при каких-то условиях? ) Обратил внимание на флаги - кто-то ведь их раздаёт процессам при обращении в гуи... ----- IZ.RU |
|
Создано: 28 августа 2011 07:16 · Личное сообщение · #21 bowrouco пишет: Ну патч это вредоносная технология. Вообще следует запрещать запись в кодосекции, релокацию и настройку IAT выполнять в ядре. Кстате подумаю над этим, ведь если это сделать, то фактически всё негодное отвалится, зевсы всякие и прочая недомалварь, для которой патч лежит в основе жизнидеятельности. Бггг профи пофиг где копать под ring0 или под rin3 , а вот кол-во бсодов увеличется в разы я вам это гарантирую, Enigma пишет: А вот судя по nProtect и кол-ву пользователей игр которые им защищаются - проблем никаких нет Что nProtect что Gameshild ломается на раз,только страдают легальные пользователи у которых зависает игра и чтобы её отключить, приходится ребутить компьютер ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 28 августа 2011 12:24 · Поправил: bowrouco · Личное сообщение · #22 DenCoder > проверка вызовом UserScreenAccessCheck внутри NtGdiBitBlt разве не посылает процесс при каких-то условиях? ) Обратил внимание на флаги - кто-то ведь их раздаёт процессам при обращении в гуи... Это опенсурсный код: Code:
Например для csrss этот бит устанавливается при создании RIT. В xxxSnapWindow() тоже вначале проверяются права для WinSta. Установить нужный дескриптор безопасности и будет блочится доступ. Только это не надёжно, имея админские права можно забыть про эти ограничения. Это именованный обьект(\Windows\WindowStations\WinSta0 etc), устанавливается в UserThreadCallout() наверно, есть сервисы для работы с ним: NtUserOpenWindowStation NtUserCloseWindowStation NtUserCreateWindowStation NtUserGetProcessWindowStation NtUserSetProcessWindowStation NtUserLockWindowStation NtUserUnlockWindowStation NtUserSetWindowStationUser Есть виньапи обёртка: http://msdn.microsoft.com/en-us/library/ms687107(v=VS.85).aspx Это ваш легальный путь, для которого обходной путь также легален | Сообщение посчитали полезным: DenCoder |
|
Создано: 15 декабря 2012 19:04 · Личное сообщение · #23 |
|
Создано: 15 декабря 2012 20:19 · Поправил: Alchemistry · Личное сообщение · #24 kmax Он предлагал изменение Security объекта WinSta0 -> Read Screen, очевидно на запрет т.к. по умолчанию оно не проставлено вообще (для текущего пользователя). WINSTA_READSCREEN который тут описан в общем предназначен для интерактивных подключений. Предоставлять интерактивному пользователю доступ к экрану или нет. ЕМНИП на мсдн даже пример есть, входа пользователя (LogonUser) и задания ему полных прав на доступ к интерактивной станции. Простой эксперимент, ну например на XP. WinObjEx умеет редактировать Security WinSta0, разлистывая все доступные права. Ставишь там галочку "Запретить" для Read Screen для текущего пользователя, применяешь и пытаешься запустить что-нибудь с гуем. Наслаждаешься инфарктом графической подсистемы. В общем он нес бред от незнания матчасти и последствий. |
|
Создано: 16 декабря 2012 06:46 · Личное сообщение · #25 |
|
Создано: 16 декабря 2012 11:12 · Поправил: Alchemistry · Личное сообщение · #26 Exaktus_ Нигде. Это была заготовка для UIPI, реализованного в Vista. http://blogs.msdn.com/b/vishalsi/archive/2006/11/30/what-is-user-interface-privilege-isolation-uipi-on-vista.aspx + http://msdn.microsoft.com/en-us/windows7trainingcourse_uipi_unit.aspx Но поскольку товарищ bowrouco он же Инде Клерк на своем пентиуме 4 не может поставить ничего кроме Windows XP он решил, что это некий могучий сандбокс и нес бред про это на куче форумов, включая этот. Почитать про некоторую реализацию UIPI можно в пдф в аттаче. e4f3_16.12.2012_EXELAB.rU.tgz - Vista_UIPI.ppt.rar | Сообщение посчитали полезным: Exaktus_, DenCoder |
|
Создано: 16 декабря 2012 12:02 · Личное сообщение · #27 |
eXeL@B —› Основной форум —› Легальный способ запретить снятие скриншота |