Защита буфера обмена

Тема в разделе "WASM.X64", создана пользователем XshStasX, 3 окт 2010.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Задача:
    Есть приложение А и Б.
    Нужно чтоб все данные которые копирует в буфер обмена приложение А, не попали через буфер обмена в приложение Б.

    Мои идеи реализации:
    User mode: хук на создание процессов + хук на функции работы с Clipboard.
    Kenel mode: подмена адресов в таблице SDT для на функции Clipboardа.

    нужен вариант с kernel mode, но тут возникает проблема
    нужна совместимость с x64 , как тут быть не знаю.
    может кто что подскажет ?)

    На данный момент выбран способ с инжектом длл из ядра в АП юзер-модного приложения.
     
  2. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    шифруй данные которые идут в буфер. В другом приложении это будет мусор. Если тебе именно защита данных нужна.
     
  3. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    onSide
    Суть задачи не много другая, приложения А,Б может быть любое.
    типа (блокнот,explorer,и тп..).
    По этому нужен перехват.
    Если б приложение мое то ясно что шифровка.

    Вот пример: http://www.apriorit.com/our-experience/9-sd-articles/166-clipboard-protection

    только нужно под x64 пустить. как ?
    в общем что-то мне подсказывает нужно смотреть драйвер win32k
     
  4. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    хз на х64 хуки не поставишь, разве что PatchGuard вырубать, что перебор.
    можно для каждого процесса юзать ключ PID. В начале буфера ставить какую-то сигнатуру уникальную, например хеш имени процесса или тот же пид. Если не совпадает возвращаем пустой буфер. Но хуки во всех процессах тоже херовое решение))
     
  5. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    А можно как то вклинится переходником(драйвер фильтр) в win32k ?
    ты имешь ввиду с юзер мода ?...это не вариант.
     
  6. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Можно, но буфера обмена это не касается, так что боюсь что без вариантов.
     
  7. Deyton

    Deyton Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    94
    Без хуков можно реализовать на уровне разных пользователей, а не приложений. Если надо защитить буфер обмена от приложения Б, то приложение Б надо запускать от имени другого пользователя, которому поставить запрещающий ACE WINSTA_ACCESSCLIPBOARD для WinSta0.
     
  8. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Deyton
    Как сильно внешне изменится робота программ с точки зрения пользователя?
    Я так понимаю нужно создать еще одного пользователя и если что делать запуск от его имени ?
    Если это так то, начинаются проблемы с папками типа(мои документы и тп)...
    также вопрос прав возникает.
    и темболее что это задача должна быть розшырена до уровня:

    есть список программ которые не могут использовать буфер обмена определенных приложений.
     
  9. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    XshStasX
    Зачем шифровка-то :) штатный win клипобрд из соображений совместимости с win16 сделан очень криво, поэтому если задача как раз нарушить совместимость, то гораздо лучше просто свою нормальную реализацию замутить, это не сложно :))
    Или можно просто идентифкатор формата использовать в диапазоне от CF_PRIVATEFIRST до CF_PRIVATELAST.

    С win64 не разбирался, а как там на счёт того чтобы класть в папку с exe пропатченную user32.dll (или где там в win64 функции клипборда живут)? Она же по идее должна заменить штатную как раз только для этого приложения. Соотвественно патч в простейшем случае может заключаться в перекодировании идентификатора формата в приватный и наоборт. Тогда те приложения к которым подброшена альтернативная dll будут работать не пересекаясь с теми к которым не подброшена.
     
  10. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Y_Mur
    игры с длл хорошо, но они очень легко обходятся из юзер мода.
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Смотреть в сторону Sandbox.
     
  12. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Clerk
    Для этого нужно писать свое подобие гипер-визора ?
    Как много кода для этого нужно? просто сроки два месяца у этого проекта.
    А сегодня я первый свой драйв запустил)
     
  13. Deyton

    Deyton Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    94
    Ничего не возникает. Права назначаются, окружение тоже - CreateEnvironmentBlock с нужным токеном, аналогично CurrentDirectory, передаешь нужные параметры CreateProcessWithLogonW и все.