Pull to refresh

Исследование защиты PVS-Studio

Reading time1 min
Views12K
Привет читатель! Я пишу первый раз статью, я один из членов команды 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.
Tags:
Hubs:
0
Comments37

Articles

Change theme settings