Blog. Just Blog

Исследование защиты программы Baiqi Image Resizer

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

Небольшая утилита Baiqi Image Resizer предназначена для пакетного изменения размеров изображений. На первый взгляд в ней нет ничего такого, чего не умеет делать куча бесплатных аналогов, но одна функция мне показалась интересной. Я говорю о подгонке графических файлов не просто под нужные размеры по ширине или высоте, а о подгонке под нужный размер файлов. Например, вы можете пакетно отресайзить картинки таким образом, чтобы размер полученных изображений был 500 килобайт. За работу программа требует выложить тридцатку баксов, в противном случае на изображения накладывается водяной знак.

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

Сообщение о неправильной регистрации
Сообщение о неправильной регистрации

Программа написана на дотнете. Исполняемый файл один, и анализатор файлов DNiD сообщает, что на файл сверху навесили протектор SmartAssembly. Ничего страшного, de4dot снимает навесную защиту с пол-тычка. Продолжаем работу с чистым файлом.

Снимаем навесной протектор
Снимаем навесной протектор

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

Результаты поиска строки
Результаты поиска строки

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

Декомпилированный код
Декомпилированный код

На картинках особо не почеркаешь, придется комментировать так. Вызывается проверка, ее результат записывается в логическую переменную - свойство одного из классов. После этого на основании значения этой переменной или в настройки сохраняется лицензионный ключ, или выводится сообщение о неправильной регистрации. Мне кажется, что эта логическая переменная должна использоваться где-то еще. Откроем метод, который отвечает за создание окна регистрации:

Функция проверки
Функция проверки

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

Вызов функции проверки
Вызов функции проверки

Значит догадка верна. Запускаем анализ Class5.bool_0, получаем список всех мест, где этой переменной присваивается какое-либо значение, а также места, где это значение проверяется.

Ссылки на свойство
Ссылки на свойство

И теперь по очереди начинаем менять все команды присвоения на команду Class5.bool_0 = true. В конструкторе класса тоже не забываем.

Редактируем код
Редактируем код

Редактировать сборку в dnSpy - одно удовольствие. Помимо IL-кода он умеет декомпилировать код в человекопонятный C#-код, а потом собирать его обратно. Нереальный кайф. Не надо подгонять байты, запоминать низкоуровневые инструкции, достаточно просто отредактировать обычный текст.

Редактируем код
Редактируем код

Когда все инициализации будут заменены, останется только сохранить измененную сборку.

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

Запускаем измененный файл. Внешне вроде бы ничего не изменилось. Но это уже особенности программы, пункт регистрации остается в интерфейсе в любом случае. А вот триальное ограничение в виде водяных знаков пропало, чего нам и требовалось. Цель достигнута. Дотнет процветает, количество программ, написанных на нем увеличивается с каждым днем. Чтобы быть в тренде, надо уметь пользоваться всем необходимым инструментарием.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 1573 | Комментариев: 14

Комментарии

Отзывы посетителей сайта о статье
Wizard (22.08.2017 в 01:17):
Чиркать по картинкам можно захватив ее через monosnap (может сохранять в облако, а может и нет - это как угодно пользователю). Пользуюсь, удобно, особенно, когда приходится тыркать в баги.

Периодически почитываю, поглядываю... полезно.. спасибо.
wet (23.05.2017 в 12:55):
Ресайзить многие умеют. Фишка в подгонке под нужный размер файлов, этого IrfanView не умеет.
Compiller (23.05.2017 в 10:08):
IrfanView для дома позволяет ресайзить пакетно всё что угодно и бесплатно.
igorca (22.05.2017 в 00:37):
ЦитатаИ теперь по очереди начинаем менять все команды присвоения на команду Class5.bool_0 = true. В конструкторе класса тоже не забываем.

Можно проще, https://image.prntscr.com/imag...ae9a6e20.png
https://image.prntscr.com/imag...0798530d.png
правда при открытии окошка с регистрацией будет выкидывать ошибку-делаем так
https://image.prntscr.com/imag...81c8c44e.png
pawel97 (19.05.2017 в 14:21):
Вы тут про qt забыли - тот ещё набор глюков.
"Я должен на этом писать" - +1, шарп простой и удобный язык, позволяет сосредоточиться на задаче, а не изобретении велосипедов. Много чего уже есть из коробки. Ну это моё имхо... Да и баги чужие в c# прогах удобнее править...
Rustamer (19.05.2017 в 00:15):
Я тоже не переносил раньше дотнетные программы. А сейчас лишь одна мысль - "Если бы вы знали могущество темной стороны. Я должен на этом писать" :) Чему бы хотелось пожелать скорейшей гибели, так это дебильным веяниям моды вроде UWP.
ManHunter (18.05.2017 в 23:07):
Я тоже буду рад, если дотнет в перспективе сдохнет. Однако сейчас наблюдается именно его рост.
user (18.05.2017 в 21:28):
ЦитатаДотнет процветает, количество программ, написанных на нем увеличивается с каждым днем.


В былые времена, помнится, то же самое говаривали о VisualBasic'e.
Ну и где он теперь, тот басик..
Noobie (18.05.2017 в 12:46):
ЦитатаЯ говорю о подгонке графических файлов не просто под нужные размеры по ширине или высоте, а о подгонке под нужный размер файлов.

Если не изменяет склероз, то для подобных операций есть совершенно бесплатный RIOT, который имеет батч-обработку и не только. И вроде как Advanced JPEG Compressor тоже может ресайзить в батче по заранее заданным размерам файла. Да, в обращении сложнее, но и фичастее неизмеримо. А за статью спасибо, как всегда толково. Не могу с собой ничего поделать, от этих дотнетов блевать тянет, когда на метр софта довешивается несколько сот метров всякого говна, то сразу пропадает желание иметь дело с этим угробищем.
Rustamer (18.05.2017 в 01:56):
В целом да, но это смотря для чего применять. Для отлома в целом хватает возможностей. Но есть совершенно другая сфера - прога падает со странными ошибками где-нибудь у пользователя, причем ни по логам, ни стек-трейсу ничего не видно, у себя не воспроизводится. Что делать? Есно берешь DnSpy и вперед с отладчиком наперевес прямо у юзера на глазах. Опять вроде все просто. Пришел - увидел - локализовал. Но ведь тут тебе не там - здесь дотнет, тут могут быть такие катакомбы в ООП-коде, неизвестно кто кого когда вызовет. Приходится караулить на обработчиках, которые вызываются тысячу раз. Это все к тому, что порой бывает очень грустно без некоторых вещей, которых пока нет. Но главную фичу таки внедрили - любуемся котиками на бекграунде :)
ManHunter (17.05.2017 в 23:29):
Это ж не IDE, где есть все мыслимые плюшки. Для декомпиля возможности и так жирные.
Rustamer (17.05.2017 в 20:09):
Ну исходники разумеется он так не всегда даст скомпилить обратно. Хотя это как раз мелочи, тк обычно все правки простейшие. Вот  чего лично мне не хватает, так это общечеловеческих радостей жизни вроде conditional breakpoint-ов или совсем уж мелочей типа отключения линий в коде. Ну вот почему нельзя последнее добавить опцией? Вопрос риторический конечно. Интерфейс увы не дотягивает по уровню до функционала.
P.S. Русский перевод хоть и неплохой имхо, но режет глаза очень.
pawel97 (17.05.2017 в 10:13):
"Программа пытается ломануться в сеть, за что получает фаерволом по щам. Обидевшись, она выводит сообщение о неправильной регистрации."
... "Ко всему нужно подходить с юмором" - сказал палач и порубил голову дольками :)
wet (17.05.2017 в 06:45):
dnSpy видно очень полезный инструмент, обязательно возьму на вооружение, спасибо за наводку.
" под нужный размер файлов" - интересно, с полгода назад для личных нужд тоже написал программу с таким функционалом, почему то не нашёл готовую. Оказывается всё уже придумано до нас :)

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

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

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