Сейчас на форуме: tyns777, localhost1, vsv1, asfa (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Защищенный раб. стол
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 16.6 (новичок), 1thx
Активность: 0.030.16
Статус: Участник

Создано: 31 октября 2019 14:17
· Личное сообщение · #1

Здравствуйте, ув. Профессионалы! В общем провожу исследование одной интересной программы.
------------------------------------------------------------------------------------------------------------
Описание программы:
- программа написана на Delphi, ничем не запакована, из антиотладки вроде бы только IsDebuggerPresent
- назначение программы в том, чтобы воспроизводить защищенные видео-файлы.
------------------------------------------------------------------------------------------------------------
Описание защиты:
1-й слой:
- программа создает виртуальный раб. стол и уже в него помещает свой видео-проигрыватель
- на защищенном раб. столе скрыты все ярлыки, панель инструментов, системный трей... в общем все, кроме самого проигрывателя видео-файлов

2-й слой:
- программа мониторит список всех запущенных процессов и если в этом списке присутствует др. процесс, способный сделать запись видео с экрана (например, TeamViewer), то предложит закрыть его

3-й слой:
- на основе ID-компьютера и валидного ключа производит активацию курса через интернет

4-й слой:
- при воспроизведении видео с определенным интервалом времени вставляет уникальные метки, по которым можно идентифицировать пользователя

5-й слой:
- зашифрованные файлы - расшифровывает и воспроизводит в видео-проигрывателе
------------------------------------------------------------------------------------------------------------
Цель создания Темы:
- прокачать необходимые навыки исследователя, связанные с обходом 1-го слоя защиты
------------------------------------------------------------------------------------------------------------

Что уже сделано/исследовано:

Последовательность работы exe-файлов:
1. Пользователь запускает start.exe
2. start.exe запускает player.exe
3. player.exe запускает:
----restore.exe
----pctl.exe

Win API, которые используются для создания защищенного раб. стола:
см. в скрине:


Идея по обходу защиты:
- идея проста - подменить имя защищенного раб. стола, которым манипулируют api на "Default". То есть, после патча проигрыватель будет выводиться на текущий раб. стол, вместо защищенного

Сказано -> сделано:
- пропатчил все exe-файлы, в которых используется уникальное имя защищенного раб. стола на 'Default'

Тест работоспособности модифицированной программы:
- программа запускается -> выполняется -> действительно выводит окно плеера на текущий раб. стол и после этого завершается
- при выполнении не запускается процесс 'pctl.exe' (а должен запускаться)

В чем возникла сложность:
- не знаю как дальше найти причину сбоя модифицированной программы

Архив с файлами здесь --> Link <--
- чтобы протестировать пропатченные файлы следует распаковать архив с заменой в тот же каталог, где он находится:
а) start_patch.rar
б) \player\player_patch.rar



Ранг: 16.6 (новичок), 1thx
Активность: 0.030.16
Статус: Участник

Создано: 14 марта 2020 23:22 · Поправил: rukop84
· Личное сообщение · #2

Для начала немного отпишусь о проделанной работе.

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

Тогда задержку я придумал реализовать на ассемблере. Все это оформил в инлайн патч и сделал вставку в Entry Point. Тест работоспособности: программа не отработала как надо и закрылась. Меня это сильно разозлило, так как был уверен, что на верном пути. И тогда в этом таймере я влепил неприлично большое ожидание (45 секунд). И самое интересное, это сработало!!!

Тогда я повторил процедуру, но уже с функцией Sleep. Она тоже отработала как надо. Далее экспериментально было выявлено, что интервал без потери работоспособности можно уменьшить до 35 сек. Если меньше, то программа закроется.

Объяснение такому поведению программы могу дать следующее:
- возможно Процесс_01 от Процесса_02 ждет какого-то сигнала (флажка). И не дождавшись сигнала продолжает выполнение программы, но уже по таймеру (с интервалом как раз таки в 35 секунд).
- а так как своими патчами я реализовал вывод программы с защищенного рабочего стола, на Default'ный, то вполне логично что это могло отразиться в маршруте выполнения программы

Ну, вот и все!!! Результат получен. Сам эксперимент, чтобы подтвердить или опровергнуть собственную гипотезу я еще не придумал.



Ранг: 16.6 (новичок), 1thx
Активность: 0.030.16
Статус: Участник

Создано: 15 марта 2020 23:25 · Поправил: rukop84
· Личное сообщение · #3

Большое Спасибо, всем кто принял участие в Теме. Ключевыми в решении задачи оказалась помощь и сообщения следующих участников: Jupiter'a, Учителя f13nd, friend'a

Профессор ядра difexacaw, спасибо, что приняли участие и предложили свою помощь.

Отдельное спасибо участнику friend'у, который поделился своим подходом в исследованиии кода. Фактически благодаря этому подходу я дожал и зафиналил задачу.

И конечно же Спасибо моим Главным наставникам: Мастеру Medsft'у и Учителю f13nd. Без Вашей помощи в начале пути возможно и не произошло бы какого-то существенного развития. Мастер Medsft конечно много со мной возился, матюкался, но продолжал возиться. И каким-то чудесным образом Темы и задачи под его руководством принимали завершенный вид. Так что Привет ему, если случаем заглянет сюда.

p.s.: кстати 2-й слой защиты у программы мне также удалось снять. Там автор не ограничился банальным мониторингом названий запущенных процессов и сравнения их с черным списком, а пошел еще дальше. Др. словами, если запущенный процесс из черного списка скрыть из диспетчера задач, то программа все равно его будет детектить. Но подробности я думаю не стоит раскрывать.


<< . 1 . 2 .
 eXeL@B —› Вопросы новичков —› Защищенный раб. стол
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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