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

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

  1. XshStasX

    XshStasX New Member

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

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

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

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

    onSide New Member

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

    XshStasX New Member

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

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

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

    onSide New Member

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

    XshStasX New Member

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

    x64 New Member

    Blog Posts:
    0
    Можно, но буфера обмена это не касается, так что боюсь что без вариантов.
     
  7. Deyton

    Deyton Member

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

    XshStasX New Member

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

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

    Y_Mur Active Member

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

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

    XshStasX New Member

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

    Clerk Забанен

    Blog Posts:
    0
    Смотреть в сторону Sandbox.
     
  12. XshStasX

    XshStasX New Member

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

    Deyton Member

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