Blog. Just Blog

Исследование защиты программы CSV Easy

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы CSV Easy
Скриншот программы CSV Easy

Программа CSV Easy представляет собой альтернативу Excel для редактирования файлов в формате CSV. По заверениям разработчиков CSV Easy позволяет работать с файлами в несколько миллионов строк и десятками тысяч ячеек. Также доступны такие инструменты, как фильтрация данных, сортировка, анализ и обработка содержимого таблицы и другие. За все это теоретически требуется выложить некоторую сумму денег, но практически этого делать вовсе не обязательно.

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

Окно регистрации программы
Окно регистрации программы

Форма ввода серийника "интеллектуальная", то есть не дает вводить символы, которые не соответствуют формату серийного номера. Это значительно облегчает задачу. При заполнении всех полей неправильными данными на форме появляется красная надпись "Invalid license". Ну что, исходные данные у нас есть, можно приступать к кодокопанию.

Программа написана на дотнете, поэтому, как и в предыдущих статьях, сперва надо подобрать особый инструментарий для работы с ее исполняемыми файлами. Сегодня это будет универсальный инструмент, заменяющий сразу несколько отдельных утилит, - ILSpy NEXT от уже известного вам Medsft. Открываем исполняемый файл в ILSpy, ищем что-нибудь интересное.

Класс обработки формы ввода
Класс обработки формы ввода

Мне показался интересным класс License, и функция txtLicenseKey_EditValueChanged. По логике, здесь должна выполняться какая-то проверка, реагирующая на ввод серийника и, соответственно, принимающая решение о выводе сообщения о неправильной регистрации.

Функция проверки серийного номера
Функция проверки серийного номера

ILSpy прекрасно декомпилирует код в читаемый исходник, и мы сразу же можем его посмотреть. Тут выполняется следующая проверка: вызывается функция Utils.GetLicenseType, если она вернула код LicenseReturnCodes.InvalidLicense, то считать серийник неправильным, иначе выполнять другие действия. Кликом на название константы выясняем, что InvalidLicense = 2. Там же выясняем, что Unlimited-лицензия имеет код 7. Кликом на GetLicenseType переходим на саму функцию проверки.

Определяем места для патча
Определяем места для патча

Мы видим, что при разных условиях возвращается тот или иной тип лицензии. Для того, чтобы программа работала с любыми серийниками, надо чтобы эта функция всегда возвращала значение Utils.LicenseReturnCodes.UnlimitedLicense. Для этого заменим все возвраты InvalidLicense на UnlimitedLicense.

Патчим IL-код
Патчим IL-код

Переключаемся на режим IL-кода, находим инструкции ldc.i4.2, стоящие перед командой ret и заменяем их на инструкции ldc.i4.7. Правый клик на адресе, "Replace instruction", и в выпадающем меню выбираем нужную команду.

Программа пропатчена
Программа пропатчена

Теперь можно переключиться обратно на просмотр кода и убедиться, что все нужные места пропатчены правильно, везде возвращается нужный тип лицензии.

Сохраняем изменения
Сохраняем изменения

Теперь осталось сохранить сделанные изменения. Ставим курсор на название сборки, в меню "File" выбираем пункт "Save Assembly". Все, получаем пропатченный файл. Проверяем его на работоспособность.

Программа успешно "зарегистрирована"
Программа успешно "зарегистрирована"

Файл запускается и принимает любой серийник, соответствующий формату, о чем говорит надпись "Valid license" при вводе. После этого программа благодарит за регистрацию и переходит в неограниченный режим работы. В окне "О программе" красуется "Unlimited License". Цель достигнута. Мы научились работать с еще одним мощным инструментом для дотнета и отучили очередную программу от жадности.

Поделиться ссылкой ВКонтакте
Просмотров: 3437 | Комментариев: 13

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Sergey_K (16.01.2016 в 22:09):
Спасибо, на win7 64 получилось используя DnSpy.
Арбуз (31.12.2015 в 01:29):
ManHunter,  спасибо )

С Наступающим Новым 2o16 Годом !!!
ManHunter (31.12.2015 в 01:14):
ILSpector  Version: 3.3 | 25.05.2015
http://rghost.ru/7GFnPNFgK
Арбуз (31.12.2015 в 00:53):
Как скачать этот - ILSpy NEXT ?!
Скачивается по пол файла с офф.сайта и всё тут (

Залейте (тыркните носом затем)куда нибудь, спасибо )
ManHunter (26.12.2015 в 11:28):
ЦитатаПросить что-то взломать или "просто посмотреть" тоже не надо. Это исключительно ваши проблемы и меня они совершенно не интересуют.

и далее по тексту.
vasil (26.12.2015 в 10:22):
Вы про этот пункт правил: "Не надо искать на сайте какой-либо варез..."
А кто нарушал правила???
Где в моём посте название программы ? Или ссылка?
Их нет!
Потому как хочется понять приннцип как это работает, а не заломать пределённую программу.
Воспринимаю статьи на этом ресурсе как передачу знаний или я не прав?
Или зачем тогда все эти статьи?
Поэтому и попросил рассмотреть ЧТО-НИБУДЬ из облости "распаковки изнутри".
Вас я не обижал, не оскорблял.
Печально, что вчера, после моего поста Вы заблокировали мне доступ.
ManHunter (25.12.2015 в 20:28):
Правила надо читать, они не просто так написаны. Запрос на взлом = бан.
vasil (25.12.2015 в 19:22):
Уважаемый ManHunter, а можно как нибудь в будущем рассмотреть какую нибудь программу или игру работающую с псевдоархивами.
Перехват распаковки в самой программе и сбрасывания на диск внутренностей псевдоархива, не прибегая к поиску структуры в самом псевдоархиве.
Как бы это выразиться по понятнее... Ну что бы из самой программы сделать распаковщик.
В сети подобного материала практически нет. По крайней мере мне не попадалось.
Было бы очень интересно и полезно посмотреть на это.
ManHunter (24.12.2015 в 10:50):
Так это должно быть как безусловный рефлекс - если программа не работает непосредственно с интернетом, то ей там вообще нечего делать. Фаервол наше всё.
voffka (24.12.2015 в 03:46):
Там вроде еще онлайн проверка ключа, только она не работает.
user (23.12.2015 в 23:23):
Плохо. Патчил NETPATCH'ем. Место высмотрел в Reflector'е 2007-го года.
ManHunter (23.12.2015 в 23:16):
По виду (в декомпиле) вроде бы все то же, по размеру файл стал больше. Так что это не совсем классический бит-хак.
user (23.12.2015 в 23:07):
А вот интересно, после сохранения исправленного файла в этом IlSpy много ли в нём изменилось? (У меня он не запускается, требует .NET более новый. Сама программа работает).
Там должно поменяться только два байта, по идее:
.00425959: 18 1D ;00023B59:
.00425981: 18 1D ;00023B81:

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.005 сек.) / Память: 4.5 Mb
Наверх