[Из песочницы] Исследование защиты PVS-Studio
Привет читатель! Я пишу первый раз статью, я один из членов команды PC-RET, я изучил статью и решил подойти с другой стороны
Видим, что программа чиста и без обфускации.
Открывает программы в dnSpy и ищем слово «Incorrect», находим много совпадений.
Нам нужен «InitFreeLicenseSourceFileHeaders» — нажмем 2 раза и перейдет в класс «LicenseInfo». Мы увидим там метод «GetLicenseInfo» — вот он нам и нужен, взглянем на код.
Поставим бряку на 17 строку и запускаем программу (нажмем наверху «Старт» и нажимаем «OK»)
Разберем код запускается программа «clang.exe» с аргументами »--checkreg=yes» и получили ответ
invalid\r\nUnknown license type\r\n-1\r\n» дальше строку делим по »\n» и получаем массив строк
1- invalid 2- Unknown license type 3- -1
Сохраним изменения и пробуем запустить.
Это моя первая статья, прошу не судить строго.
С уважением, член команды PC-RET Mishar.
Этапы работы
1. Анализ программы
2. Подбор программы для Реверса
3. Анализ кода
4. Патч
1. Анализ программы
Возьмем программу Detect It Easy и проверим, на чем она написана и есть ли обфускация кода.
Скриншот из анализатора
Видим, что программа чиста и без обфускации.
2. Подбор программы для Реверса
Для работы я выберу программу dnSpy.
3. Анализ кода
После запуска программы и ввода любого ключа выйдет сообщение об ошибке.
Скриншот ошибки
Открывает программы в dnSpy и ищем слово «Incorrect», находим много совпадений.
Скриншот поиска
Нам нужен «InitFreeLicenseSourceFileHeaders» — нажмем 2 раза и перейдет в класс «LicenseInfo». Мы увидим там метод «GetLicenseInfo» — вот он нам и нужен, взглянем на код.
Скриншот GetLicenseInfo
Поставим бряку на 17 строку и запускаем программу (нажмем наверху «Старт» и нажимаем «OK»)
Скриншот запуска в отладке
Разберем код запускается программа «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, заменим код таким образом.
Скриншот замены
Сохраним изменения и пробуем запустить.
Скриншот Лицензии
Это моя первая статья, прошу не судить строго.
С уважением, член команды PC-RET Mishar.
Комментарии (2)
5 марта 2017 в 17:24
0↑
↓
Ждём комментарии авторов. Интересно, такая слабая, можно сказать формальная, защита сознательный ход, типа всё равно сломают?5 марта 2017 в 17:32
0↑
↓
Так просто? А я уже чаек принес :(