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

Discussion in 'WASM.X64' started by XshStasX, Oct 3, 2010.

  1. XshStasX

    XshStasX New Member

    Blog Posts:
    0
    Joined:
    Aug 9, 2008
    Messages:
    991
    Задача:
    Есть приложение А и Б.
    Нужно чтоб все данные которые копирует в буфер обмена приложение А, не попали через буфер обмена в приложение Б.

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

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

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

    onSide New Member

    Blog Posts:
    0
    Joined:
    Jun 18, 2008
    Messages:
    476
    шифруй данные которые идут в буфер. В другом приложении это будет мусор. Если тебе именно защита данных нужна.
     
  3. XshStasX

    XshStasX New Member

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

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

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

    onSide New Member

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

    XshStasX New Member

    Blog Posts:
    0
    Joined:
    Aug 9, 2008
    Messages:
    991
    А можно как то вклинится переходником(драйвер фильтр) в win32k ?
    ты имешь ввиду с юзер мода ?...это не вариант.
     
  6. x64

    x64 New Member

    Blog Posts:
    0
    Joined:
    Jul 29, 2008
    Messages:
    1,370
    Location:
    Россия
    Можно, но буфера обмена это не касается, так что боюсь что без вариантов.
     
  7. Deyton

    Deyton Member

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

    XshStasX New Member

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

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

    Y_Mur Active Member

    Blog Posts:
    0
    Joined:
    Sep 6, 2006
    Messages:
    2,494
    XshStasX
    Зачем шифровка-то :) штатный win клипобрд из соображений совместимости с win16 сделан очень криво, поэтому если задача как раз нарушить совместимость, то гораздо лучше просто свою нормальную реализацию замутить, это не сложно :))
    Или можно просто идентифкатор формата использовать в диапазоне от CF_PRIVATEFIRST до CF_PRIVATELAST.

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

    XshStasX New Member

    Blog Posts:
    0
    Joined:
    Aug 9, 2008
    Messages:
    991
    Y_Mur
    игры с длл хорошо, но они очень легко обходятся из юзер мода.
     
  11. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    Смотреть в сторону Sandbox.
     
  12. XshStasX

    XshStasX New Member

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

    Deyton Member

    Blog Posts:
    0
    Joined:
    Mar 7, 2007
    Messages:
    94
    Ничего не возникает. Права назначаются, окружение тоже - CreateEnvironmentBlock с нужным токеном, аналогично CurrentDirectory, передаешь нужные параметры CreateProcessWithLogonW и все.