Исследование защиты программы 3D Button Creator Gold
Скриншот программы 3D Button Creator Gold
В стародавние времена, когда о HTML5, CSS3 и прочих спецэффектах никто даже не мечтал, для создания красивых графических кнопок для web-сайтов использовались различные программы. Одна из них - 3D Button Creator Gold. Сейчас большинство визуальных эффектов легко достигается без использования графики, так что программа сгодится только в качестве подопытного для ковыряния.
Скачиваем с офсайта дистрибутив, устанавливаем, запускаем. Триальных окон вроде бы нет, ограничений по времени работы тоже, но на создаваемые изображения накладывается надпись "not registered". Сохраняются картинки, соответственно, тоже с этим маркером. Других отличий от полной версии я не нашел. Исполняемый файл ничем не упакован, попробуем найти в нем эту строчку. Обнаруживаются два ее экземпляра в разных местах файла.
Строка сообщения
Первое, что я решил попробовать - забить первую букву строки нулевым символом. Таким образом маркер на картинку будет накладываться, но состоять он будет из пустой строки. Примерно то же мы делали в одной из предыдущих статей, но там была прозрачная картинка. Сейчас фокус удался, но только частично, так как пропала только первая буква, замененная нулевым символом. Не проблема, возвращаемся в редактор и забиваем обе надписи целиком одними пробелами.
Забиваем надпись пробелами
Запускаем, смотрим. Надписи на кнопках пропали, при сохранении картинки тоже не портятся. Цель достигнута. На этом можно было бы и остановиться, но для полной красоты уберем надписи о регистрации на вкладке "About". Но тут нам уже понадобится дизассемблер. Если внимательно посмотреть на место в файле, где мы выполняли патч, то рядом можно обнаружить строки, которые явно относятся к регистрации.
Строки регистрации в файле
По перекрестным ссылкам на эти строки выходим на достаточно объемную функцию. Если запустить программу под отладчиком, поставить точку останова на начало этой функции (адрес 0050FF18), а затем попытаться ввести какой-нибудь серийник в поле на вкладке "About", то точка останова будет срабатывать при каждом нажатии клавиши. То есть проверка правильности серийника выполняется автоматически при изменении поля ввода. Причем интересно, что текстовые строки сообщений о правильной или неправильной регистрации нигде не выводятся, похоже, что они используются в качестве хэшей или каких-то констант при вычислениях. После цикла вычислений выполняется проверка:
Code (Assembler) : Убрать нумерацию
- CODE:00510596 cmp ds:dword_524768, 8
- ; При неправильном серийнике этот переход не срабатывает
- CODE:0051059D jnz short loc_5105F2
- CODE:0051059F mov eax, [ebp+var_4]
- CODE:005105A2 mov eax, [eax+59Ch]
- CODE:005105A8 xor edx, edx
- CODE:005105AA call sub_444650
- CODE:005105AF mov eax, [ebp+var_4]
- CODE:005105B2 mov eax, [eax+59Ch]
- CODE:005105B8 mov edx, offset a43267 ; "43267"
- CODE:005105BD call sub_444760
- CODE:005105C2 mov eax, [ebp+var_4]
- CODE:005105C5 mov eax, [eax+5A0h]
- CODE:005105CB xor edx, edx
- CODE:005105CD call sub_444650
- CODE:005105D2 mov eax, [ebp+var_4]
- CODE:005105D5 mov eax, [eax+5A4h]
- CODE:005105DB xor edx, edx
- CODE:005105DD call sub_444650
- CODE:005105E2 mov eax, [ebp+var_4]
- CODE:005105E5 mov eax, [eax+68Ch]
- CODE:005105EB xor edx, edx
- CODE:005105ED call sub_444650
- CODE:005105F2 loc_5105F2:
Программа успешно "зарегистрирована"
Вот такой получился "кряк для самых маленьких". Программа работает, но только результаты ее работы уже никому не нужны, впрочем, как и она сама.
Просмотров: 2797 | Комментариев: 4
Метки: исследование защиты, графика
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
brute
(12.02.2016 в 20:18):
pawel97 - согласен! Конфузер этот всеми публичными тулзами не снимается, арма последняя тоже, и статей в инете что-то не видать..
ManHunter
(12.02.2016 в 16:21):
По дотнету есть хорошие специалисты, у них и надо спрашивать.
И будет написано еще столько же. Серьезные вещи обходятся такими методами, которые, во-первых, иногда просто нереально объяснить простым языком, откуда что взялось и как выйти на тот или иной код, а во-вторых, эти методы часто "эксклюзивные" и делиться ими нет никакого желания.
Пробудить в людях интерес к реверсингу - вот для чего я это все делаю. А интерес увеличивается в разы, когда все сразу получается, и mov al,1/ret для этого подходит как нельзя лучше. Кто захочет, тот пойдет самостоятельно дальше.
И будет написано еще столько же. Серьезные вещи обходятся такими методами, которые, во-первых, иногда просто нереально объяснить простым языком, откуда что взялось и как выйти на тот или иной код, а во-вторых, эти методы часто "эксклюзивные" и делиться ими нет никакого желания.
Пробудить в людях интерес к реверсингу - вот для чего я это все делаю. А интерес увеличивается в разы, когда все сразу получается, и mov al,1/ret для этого подходит как нельзя лучше. Кто захочет, тот пойдет самостоятельно дальше.
pawel97
(12.02.2016 в 15:54):
ManHunter, благодарю за передачу бесценного опыта новичкам, а главное за подачу материала - один из немногих блогов, где всё понятно и доступно, по-русски так сказать.
Но, при всём уважении, написано про защиту из серии mov al,1/ret уже вагон. Считаю, что всем, кто способен учиться, а не просто выполнять по пунктам и спотыкаться при банальной смене адресов в новых версиях, хватит максимум пятака таких статей.
Очень бы хотелось научиться чему-то более серьёзному. Как пример, предлагаю (если интересно, конечно) написать про снятие дотнет обфускатора Confuser, с которым de4dot не справляется. В гугле что-то есть, но какой-то долгий и сложный путь с использованием windbg и один лишь намёк, что есть варианты куда проще. Хотелось бы обойтись спец. инструментарием для дотнета, если это возможно, или хотя бы более привычным olly.
Но, при всём уважении, написано про защиту из серии mov al,1/ret уже вагон. Считаю, что всем, кто способен учиться, а не просто выполнять по пунктам и спотыкаться при банальной смене адресов в новых версиях, хватит максимум пятака таких статей.
Очень бы хотелось научиться чему-то более серьёзному. Как пример, предлагаю (если интересно, конечно) написать про снятие дотнет обфускатора Confuser, с которым de4dot не справляется. В гугле что-то есть, но какой-то долгий и сложный путь с использованием windbg и один лишь намёк, что есть варианты куда проще. Хотелось бы обойтись спец. инструментарием для дотнета, если это возможно, или хотя бы более привычным olly.
Добавить комментарий
Заполните форму для добавления комментария
Этож дэльфа, перед строкой идет дворд с длинной, 0E->00