Сейчас на форуме: rmn, exp50848 (+7 невидимых)

 eXeL@B —› Основной форум —› Легальный способ запретить снятие скриншота
Посл.ответ Сообщение


Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 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





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 25 августа 2011 21:01
· Личное сообщение · #2

стяни наконецто себе исходники win2k и не мучайся



Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 25 августа 2011 21:06
· Личное сообщение · #3

PROCESSINFO сильно поменялась с win 2000. общее представление можно получить оттуда, но оффсеты ни капли не совпадут.
Та часть структуры, которой интересовался я, отвечала за взаимодействие win32k и ядра




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 25 августа 2011 21:16 · Поправил: DenCoder
· Личное сообщение · #4

reversecode, та нету там. Кстати, там только 10-ая часть, похоже. А может и ещё меньше...

-----
IZ.RU





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 25 августа 2011 21:33
· Личное сообщение · #5

ох уж этот гугл
Code:
  1. /***************************************************************************\
  2. * UserScreenAccessCheck
  3. *
  4. * Called from the engine to determine if the thread's desktop is
  5. * active and the process has WINSTA_READSCREEN access.
  6. *
  7. * Note that we may or may not be in USER's critical section when this
  8. * is called.  This is OK as long as we don't reference thing belonging
  9. * to other threads.  If we did try to enter the critical section here,
  10. * a deadlock may occur between the engine and user.
  11. *
  12. * History:
  13. * 05-20-93 JimA         Created.
  14. * 11-22-96 BradG        Brought back to life.
  15. \***************************************************************************/
  16.  
  17. BOOL FASTCALL UserScreenAccessCheck(VOID)
  18. {
  19.     UserAssert(PtiCurrentShared() != NULL);
  20.  
  21.     return (
  22.             PtiCurrentShared() != NULL && PtiCurrentShared()->rpdesk == grpdeskRitInput &&
  23.             (W32GetCurrentProcess()->W32PF_Flags & (W32PF_READSCREENACCESSGRANTED | W32PF_IOWINSTA)) ==
  24.                     (W32PF_READSCREENACCESSGRANTED | W32PF_IOWINSTA));
  25. }
  26.  




Ранг: 47.7 (посетитель), 17thx
Активность: 0.090
Статус: Участник

Создано: 25 августа 2011 21:44 · Поправил: bowrouco
· Личное сообщение · #6

Бесполезно. На сколько помню это ядро регает хоткей в контексте винлогона. Конечно это можно просто обойти, но это не будет проблемой, как обычно если механизм защиты известен. Пока есть десктоп, всегда его битмапу можно получить.

> есть законный способ запретить скриншот окна/экрана, безо всяких инжектов и перехватов.
А есчо есть песочница, которая никогда никем не юзалась, даже мс, но встроена в ядро. Достаточно её запустить, как все левые(абсолютно все, хуки, нотифи етц) манипуляции с шадовом отваляться.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 25 августа 2011 22:20
· Личное сообщение · #7

bowrouco пишет:
А есчо есть песочница, которая никогда никем не юзалась, даже мс, но встроена в ядро. Достаточно её запустить, как все левые(абсолютно все, хуки, нотифи етц) манипуляции с шадовом отваляться.

Да только вы, вроде бы как, писали, что механизм её работы до конца неизвестен. Уже выяснили? + немного оффтопа: Indy, это вы??

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 47.7 (посетитель), 17thx
Активность: 0.090
Статус: Участник

Создано: 25 августа 2011 22:38 · Поправил: bowrouco
· Личное сообщение · #8

ARCHANGEL
Ктож вам признается
У вас есть ядро, есть дизасм - вперёд. Это не сложно, про не известно - это нет констант просто.




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 26 августа 2011 04:20 · Поправил: DenCoder
· Личное сообщение · #9

reversecode
Это есть в исходниках W2K.

И даже больше
Code:
  1.     #define PtiCurrent()  (gptiCurrent)
  2.     #define PtiCurrentShared() ((PTHREADINFO)(W32GetCurrentThread()))
  3.  
  4. #define PpiCurrent() \
  5.     ((PPROCESSINFO)(W32GetCurrentProcess()))
  6.  
  7. #define PtiFromThread(Thread) ((PTHREADINFO)((Thread)->Tcb.Win32Thread))
  8.  
  9. #define PpiFromProcess(Process)                                           \
  10.         ((PPROCESSINFO)((PW32PROCESS)(Process)->Win32Process))


Касательно самой PROCESSINFO vptrlx прав, поэтому ближе всех с реактоса
Code:
  1. #define CLIBS 32
  2.  
  3. typedef struct _PROCESSINFO
  4. {
  5.   /* 0x000 */ W32PROCESS;
  6.   //***************************************** begin: USER specific fields
  7.   /* 0x078 */ PTHREADINFO     ptiList; // threads in this process
  8.   /* 0x07C */ PTHREADINFO     ptiMainThread; // pti of "main thread"
  9.   /* 0x080 */ PDESKTOP        rpdeskStartup; // initial desktop
  10.   /* 0x084 */ PCLS            pclsPrivateList; // this processes' private classes
  11.   /* 0x088 */ PCLS            pclsPublicList; // this processes' public classes
  12.   /* 0x08C */ PWOWPROCESSINFO pwpi; // Wow PerProcess Info
  13.   /* 0x090 */ PPROCESSINFO    ppiNext; // next ppi structure in start list
  14.   /* 0x094 */ PPROCESSINFO    ppiNextRunning;
  15.   /* 0x098 */ int             cThreads; // count of threads using this process info
  16.   /* 0x09C */ HDESK           hdeskStartup; // initial desktop handle
  17.   /* 0x0A0 */ UINT            cSysExpunge; // sys expunge counter
  18.   /* 0x0A4 */ DWORD           dwhmodLibLoadedMask; // bits describing loaded hook dlls
  19.   /* 0x0A8 */ HANDLE          ahmodLibLoaded[CLIBS]; // process unique hmod array for hook dlls
  20.   /* 0x128 */ PWINDOWSTATION  prpwinsta; // process windowstation
  21.   /* 0x12C */ HWINSTA         hwinsta; // windowstation handle
  22.   /* 0x130 */ ACCESS_MASK     amwinsta; // windowstation accesses
  23.   /* 0x134 */ DWORD           dwHotkey; // hot key from progman
  24.   /* 0x138 */ HMONITOR        hMonitor; // monitor handle from CreateProcess
  25.   /* 0x13C */ PDESKTOPVIEW    pdvList; // list of desktop views
  26.   /* 0x140 */ UINT            iClipSerialNumber; // clipboard serial number
  27.   /* 0x144 */ RTL_BITMAP      bmHandleFlags; // per handle flags
  28.   /* 0x14C */ PCURSOR         pCursorCache; // process cursor/icon cache
  29.   /* 0x150 */ PVOID           pClientBase; // LEAVE THIS FOR HYDRA; offset to the shared section
  30.   /* 0x154 */ DWORD           dwLpkEntryPoints; // user mode language pack installed
  31.   /* 0x158 */ PW32JOB         pW32Job; // pointer to the W32JOB structure
  32.   /* 0x15C */ DWORD           dwImeCompatFlags; // per-process Ime Compatibility flags
  33.                                                      //   from ImmCreateContext->NtUserGetThreadState #13
  34.   /* 0x160 */ LUID            luidSession; // logon session id
  35.   /* 0x168 */ USERSTARTUPINFO usi; // process startup info
  36.   #ifdef VALIDATEHANDLEQUOTA
  37.    LONG lHandles;
  38.   #endif
  39.   #ifdef USE_MIRRORING
  40.    DWORD           dwLayout; // the default Window orientation for this process
  41.   #endif
  42.   /* 0x18C */ PPROCESS_HID_TABLE pHidTable;
  43.   /* 0x190 */ BOOL           WindowsGhosting; // _DisableProcessWindowsGhosting
  44. } PROCESSINFO, *PPROCESSINFO; // W32ProcessSize == 0x198 Xp size.


Смущает только строчка W32ProcessSize == 0x198 Xp size, хотя видно, что 0x194.

А W32PROCESS в W2K вообще нет. Взята с реактоса - на первый взгляд всё сходится: найденные указатели, проверка длины структуры по следующим за ней спискам тредов
Code:
  1. typedef struct _W32PROCESS
  2.  {
  3.    /* 0x000 */ PEPROCESS     peProcess;
  4.    /* 0x004 */ DWORD         RefCount;
  5.    /* 0x008 */ FLONG         W32PF_flags;
  6.    /* 0x00C */ PKEVENT       InputIdleEvent;
  7.    /* 0x010 */ DWORD         StartCursorHideTime;
  8.    /* 0x014 */ PW32PROCESS   NextStart;
  9.    /* 0x018 */ PVOID         pDCAttrList;
  10.    /* 0x01c */ PVOID         pBrushAttrList;
  11.    /* 0x020 */ DWORD         W32Pid;
  12.    /* 0x024 */ DWORD         GDIHandleCount; // Gdi handle count per process. Ref in NtUserGetGuiResources.
  13.    /* 0x028 */ DWORD         UserHandleCount; // User handle count per process. " " "
  14.    /* 0x02C */ PEX_PUSH_LOCK GDIPushLock; // Locking Process during access to structure.
  15.    /* 0x030 */ RTL_AVL_TABLE GDIEngUserMemAllocTable; // Process AVL Table.
  16.    /* 0x068 */ LIST_ENTRY    GDIDcAttrFreeList; // Tag 'Gdcf' size 44 bytes. HmgAllocateDcAttr
  17.    /* 0x070 */ LIST_ENTRY    GDIBrushAttrFreeList; // Tag 'Gbaf' size 0x2B4 bytes. HmgAllocateObjectAttr
  18.  } W32PROCESS, *PW32PROCESS;


bowrouco пишет:
Бесполезно. На сколько помню это ядро регает хоткей в контексте винлогона

ммм... насколько я помню, конкретно ReigisterHotKey в контексте винлогона вызывается только для Ctrl-Alt-Del и ещё кучки комбинаций... так и не понял тогда, для чего они... Посему удачен любой вызов для любой комбинации с Print Screen. Но это не вызвало труда... Цель: запретить копирование битмапа окна одного процесса или всего экрана в окно другого. Перехватив кучку функций, на 100% цели не добиваемся - есть ещё десяток, а там может и ещё... непосредственно с видеокарты можно снять...

Просто ради интереса копнул поглубже и показалось, что что-то нашёл... Ну если bowrouco , считает, что по другому нельзя - нет сейчас времени тратить впустую... Кстати, попробовал запустить песочницу - видимо одного EnforceUISandbox мало...

-----
IZ.RU




Ранг: 47.7 (посетитель), 17thx
Активность: 0.090
Статус: Участник

Создано: 26 августа 2011 07:40
· Личное сообщение · #10

DenCoder
Почему же мало ?

Вполне достаточно:
xxxSnapWindow() -> xxxOpenClipboard() -> CheckClipboardAccess() -> AllowAccessUISandbox()



Ранг: 88.3 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 26 августа 2011 11:44
· Личное сообщение · #11

Что если дровинку какую нибудь небольшую написать, которая просто будет скрывать процесс (скрин которого делать нельзя) полностью из ring3?

nProtect так делает для игр, только для других целей.

А при первой установки программы пользователям, спрашивать права администратора для установки дровины.




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 26 августа 2011 12:10
· Личное сообщение · #12

Enigma пишет:
Что если дровинку какую нибудь небольшую написать,


и сделают с тобой тоже, что с автором SecureBook.



Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 26 августа 2011 12:14
· Личное сообщение · #13

Говорю банальности, но DRM зло, а DRM с дровиной следует приравнять к руткиту с занесением в антивирусные базы.

Gideon Vi пишет:
и сделают с тобой тоже, что с автором SecureBook.

А что с ним такое?

-----
PGP key <0x1B6A24550F33E44A>




Ранг: 88.3 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 26 августа 2011 12:41
· Личное сообщение · #14

Gideon Vi пишет:
и сделают с тобой тоже, что с автором SecureBook.


Со мной ничего делать не надо, я тоже дрова не люблю.

А вот судя по nProtect и кол-ву пользователей игр которые им защищаются - проблем никаких нет.

Gideon Vi пишет:
и сделают с тобой тоже, что с автором SecureBook.


И да, что там такое случилось? На сайте все вроде как даже наоборот, все отлично.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 26 августа 2011 13:18
· Личное сообщение · #15

Enigma пишет:
И да, что там такое случилось? На сайте все вроде как даже наоборот, все отлично.

http://securebook.ru/securebook/neskolko_slov_ob_antivirusah.html



Ранг: 88.3 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 26 августа 2011 13:22 · Поправил: Enigma
· Личное сообщение · #16

Vovan666 пишет:
http://securebook.ru/securebook/neskolko_slov_ob_antivirusah.html


Обычная реакция на протекторы, ничего нового...

Если смотреть с этой стороны, то тут шаг в лево шаг вправо - вот тебе и ложный детект от антивирусников. Функцию какую нибудь перехватил у себя же в процессе, и будет такой же эффект.




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 26 августа 2011 15:47
· Личное сообщение · #17

bowrouco пишет:
Вполне достаточно:xxxSnapWindow() -> xxxOpenClipboard() -> CheckClipboardAccess() -> AllowAccessUISandbox()

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
EnforceUISandbox = 1: DWORD

Нужно ещё что-то дополнительно указать?

-----
IZ.RU





Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 27 августа 2011 04:47
· Личное сообщение · #18

ntldr пишет:
А что с ним такое?


а то самое:

ntldr пишет:
DRM с дровиной следует приравнять к руткиту с занесением в антивирусные базы.


в первую очередь слили вебу. И автор сколько угодно может разоряться на своем сайте, но пока ебук будет требовать ставить левую дровину с функциями руткита, нормальные пользователи должны требовать манибек у продавца книжки.

Enigma пишет:
А вот судя по nProtect и кол-ву пользователей игр которые им защищаются - проблем никаких нет.


и есть хоть одна европейская mmorg под этой поделкой?

Enigma пишет:
Обычная реакция на протекторы, ничего нового...


антивирусы орут не на исполняемый файл, а на дров.

| Сообщение посчитали полезным: NaumLeNet, ntldr

Ранг: 47.7 (посетитель), 17thx
Активность: 0.090
Статус: Участник

Создано: 27 августа 2011 08:19 · Поправил: bowrouco
· Личное сообщение · #19

Enigma
> будет скрывать процесс (скрин которого делать нельзя) полностью из ring3?
А толку от этого ?
Итак шадов по большей части перенесён в ядро. Процесс это обьект, обьекты связанные с ним не связаны с его наличием. Тоесть удаляем запись из списков, из слепка етц, это никак не отразится на эвенте или окне..

> Функцию какую нибудь перехватил у себя же в процессе, и будет такой же эффект.
Ну патч это вредоносная технология. Вообще следует запрещать запись в кодосекции, релокацию и настройку IAT выполнять в ядре. Кстате подумаю над этим, ведь если это сделать, то фактически всё негодное отвалится, зевсы всякие и прочая недомалварь, для которой патч лежит в основе жизнидеятельности.




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 28 августа 2011 05:36 · Поправил: DenCoder
· Личное сообщение · #20

bowrouco пишет:
Вообще следует запрещать запись в кодосекции, релокацию и настройку IAT выполнять в ядре.

Ну а как тогда прикручивать/менять сетевой функционал к несетевому софту, например? Многая часть заработков лишится, Вы что? А самое главное - как тогда костыли для m$-продуктов писать?

bowrouco пишет:
Тоесть удаляем запись из списков, из слепка етц, это никак не отразится на эвенте или окне..

С этим согласен. Кажется, на текущий момент на каждый метод скрытия есть метод обнаружения. Я прав? Если пофантазировать - можно было бы свои объекты "процесс" и "поток" создать, отличные от системных, что скрыло бы нас от огромного числа глаз, но не от всех... Но фактически это равносильно переписанию и внедрению нового ядра - переключение контекстов, синхронизация, графика...

bowrouco, так как? - Есть всё же легальный способ запретить программное снятие скриншота экрана/окна? ) bowrouco пишет:
Пока есть десктоп, всегда его битмапу можно получить.

нууу? В своём проекте я не запрещал получение hdc от окон других процессов (explorer в этом просто нуждается, а также без этого стили пропадут), но запрещал для полученных таким способом операции копирования. Минус только один - перехваты...

Нет времени пока посмотреть - проверка вызовом UserScreenAccessCheck внутри NtGdiBitBlt разве не посылает процесс при каких-то условиях? ) Обратил внимание на флаги - кто-то ведь их раздаёт процессам при обращении в гуи...

-----
IZ.RU





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 28 августа 2011 07:16
· Личное сообщение · #21

bowrouco пишет:
Ну патч это вредоносная технология. Вообще следует запрещать запись в кодосекции, релокацию и настройку IAT выполнять в ядре. Кстате подумаю над этим, ведь если это сделать, то фактически всё негодное отвалится, зевсы всякие и прочая недомалварь, для которой патч лежит в основе жизнидеятельности.

Бггг профи пофиг где копать под ring0 или под rin3 , а вот кол-во бсодов увеличется в разы я вам это гарантирую,
Enigma пишет:
А вот судя по nProtect и кол-ву пользователей игр которые им защищаются - проблем никаких нет

Что nProtect что Gameshild ломается на раз,только страдают легальные пользователи у которых зависает игра и чтобы её отключить, приходится ребутить компьютер

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




Ранг: 47.7 (посетитель), 17thx
Активность: 0.090
Статус: Участник

Создано: 28 августа 2011 12:24 · Поправил: bowrouco
· Личное сообщение · #22

DenCoder
> проверка вызовом UserScreenAccessCheck внутри NtGdiBitBlt разве не посылает процесс при каких-то условиях? ) Обратил внимание на флаги - кто-то ведь их раздаёт процессам при обращении в гуи...

Это опенсурсный код:
Code:
  1. xxxSetProcessWindowStation:
  2.     if (RtlAreAllAccessesGranted(ohi.GrantedAccess, WINSTA_READSCREEN)) {
  3.         ppi->W32PF_Flags |= W32PF_READSCREENACCESSGRANTED;
  4.     } else {
  5.         ppi->W32PF_Flags &= ~W32PF_READSCREENACCESSGRANTED;
  6.     }


Например для 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

Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 15 декабря 2012 19:04
· Личное сообщение · #23

Очень извиняюсь за некропостинг. Интересует эта же тема, а конкретно предложение bowrouco. Кто-нибудь пытался реализовать?



Ранг: 145.8 (ветеран), 190thx
Активность: 0.140.36
Статус: Участник

Создано: 15 декабря 2012 20:19 · Поправил: Alchemistry
· Личное сообщение · #24

kmax

Он предлагал изменение Security объекта WinSta0 -> Read Screen, очевидно на запрет т.к. по умолчанию оно не проставлено вообще (для текущего пользователя).

WINSTA_READSCREEN который тут описан в общем предназначен для интерактивных подключений. Предоставлять интерактивному пользователю доступ к экрану или нет. ЕМНИП на мсдн даже пример есть, входа пользователя (LogonUser) и задания ему полных прав на доступ к интерактивной станции.

Простой эксперимент, ну например на XP. WinObjEx умеет редактировать Security WinSta0, разлистывая все доступные права. Ставишь там галочку "Запретить" для Read Screen для текущего пользователя, применяешь и пытаешься запустить что-нибудь с гуем. Наслаждаешься инфарктом графической подсистемы. В общем он нес бред от незнания матчасти и последствий.



Ранг: 20.9 (новичок), 4thx
Активность: 0.010
Статус: Участник

Создано: 16 декабря 2012 06:46
· Личное сообщение · #25

bowrouco пишет:
А есчо есть песочница, которая никогда никем не юзалась, даже мс, но встроена в ядро.

А где можно почитать об этом?



Ранг: 145.8 (ветеран), 190thx
Активность: 0.140.36
Статус: Участник

Создано: 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


Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 16 декабря 2012 12:02
· Личное сообщение · #27

/me усаживается поудобнее


 eXeL@B —› Основной форум —› Легальный способ запретить снятие скриншота
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати