[Из песочницы] Исследование защиты PVS-Studio

Привет читатель! Я пишу первый раз статью, я один из членов команды PC-RET, я изучил статью и решил подойти с другой стороны

Этапы работы

1. Анализ программы
2. Подбор программы для Реверса
3. Анализ кода
4. Патч

1. Анализ программы

Возьмем программу Detect It Easy и проверим, на чем она написана и есть ли обфускация кода.

Скриншот из анализатора
image

Видим, что программа чиста и без обфускации.

2. Подбор программы для Реверса

Для работы я выберу программу dnSpy.

3. Анализ кода

После запуска программы и ввода любого ключа выйдет сообщение об ошибке.

Скриншот ошибки
image

Открывает программы в dnSpy и ищем слово «Incorrect», находим много совпадений.
Скриншот поиска
image

Нам нужен «InitFreeLicenseSourceFileHeaders» — нажмем 2 раза и перейдет в класс «LicenseInfo». Мы увидим там метод «GetLicenseInfo» — вот он нам и нужен, взглянем на код.
Скриншот GetLicenseInfo
image

Поставим бряку на 17 строку и запускаем программу (нажмем наверху «Старт» и нажимаем «OK»)
Скриншот запуска в отладке
image

Разберем код запускается программа «clang.exe» с аргументами »--checkreg=yes» и получили ответ
invalid\r\nUnknown license type\r\n-1\r\n» дальше строку делим по »\n» и получаем массив строк
1- invalid 2- Unknown license type 3- -1

4. Патч

Мы не будем вызывать программу с аргументами, мы просто отдадим программе то, что нам надо. А нам нужно дать программе нашу строку «valid\r\nEnterprise License\r\n365\r\n»

Это мы и сделаем, нажмем правой кнопкой в функции GetLicenseInfo и выберем EditMetod, заменим код таким образом.

Скриншот замены
image

Сохраним изменения и пробуем запустить.
Скриншот Лицензии
image

Это моя первая статья, прошу не судить строго.
С уважением, член команды PC-RET Mishar.

Комментарии (2)

  • 5 марта 2017 в 17:24

    0

    Ждём комментарии авторов. Интересно, такая слабая, можно сказать формальная, защита сознательный ход, типа всё равно сломают?
  • 5 марта 2017 в 17:32

    0

    Так просто? А я уже чаек принес :(

© Habrahabr.ru