Создание регистрационного кода к Ashampoo WinOptimizer Suite Plus Pack 1.31Delphi , Программа и Интерфейс , Исследование программСоздание регистрационного кода к Ashampoo WinOptimizer Suite Plus Pack 1.31
Target: Ashampoo WinOptimizer Suite Plus Pack 1.31 Tools:
Вступление Как это начиналось: Решил я потестировать системные программы на компакт диске журнала Hard&Soft за 4.2002 г. Запустил первую (эту прогамму), а она не зарегена. Нехорошо это подумал я и решил ее модифицировать. А так как запатчить это любой сможет, то мы займемся созданием регистрационного кода к этой проге, глядишь он и к следующей версии подойдет, да и хранить его легче. Что за прога: Эта программа включает в себя кучу разных утилит для оптимизации работы системы. Там и очистка реестра и оптимизация интернет и прочее, так же включает в себя бесплатный навороченный проигрыватель. Все это в архиве занимает приближенно 10 Мб. Начало Первое с чего начинается любой взлом это определить какую защиту имеет программа. В основном это имя-код, код, ключ-файл (отсортированы в порядке встречаемости в природе). Запускаем прогу, лезем в About, а там нет ничего... Cтранно. Поищем еще. Нашлось в меню Internet\ Enter Reg/Trial key. Так тут ввод только кода, делаем вывод, что будет какое-то математическое преобразование, и подсмотреть в Soft-Ice настоящий код нам не удасться. Так вводим любой код. О выскакивает окно, что код неправильный. Было бы интересно, если бы было обратное. Запускает Soft-Ice и пытаемся проделать тоже самое... Но не тут то было, авторы предусмотрели и такой вариант. Вываливается окно, что Soft-Ice загружен. Ну и фиг-то с ним попробуем поймать это окно. Ставим бряк на MessageBoxA. Запускаем прогу, а она не хочет ловиться. Ладно. Перезагружаемся без Soft-Ice. Попробуем дизассемблировать файл, там же была надпись возможно она есть и в тексте. Так берем Win32Dasm пихаем туда файл AshampooWinOptimizerSuite.exe. Судя по его размеру он не запакован. И правда все хорошо. Только вот в меню строк текст на чем-то нехорошем. Скорее всего на немецком, я в немецком не бум-бум и перевести с ходу не могу. Но если в файле нет строк на english'е, а интерфейс на нем поэтому делаем вывод в каком-то файле эти строки храняться. Посмотрев в каталоге с прогаммой обнаруживаем 3 подозрительных ini-файла: allmods.ini MOD.ini, Module.ini. В них как раз и содержаться эти строки. Переместим их в другое место. Теперь если запустить программу, она будет на немецком. Идем куда нам надо, вводим любой код и в окне видим такую строку Der eingegebene Code war falsch! Поищем ее в листинге. Нашлась по адресу 502B87 посмотрим какой код идет перед ней
Узнать, что после команды mov eax, dword ptr [ebp-04] в eax будет адрес на введенный код можно так: запускаем TRW2000 ставим бряк на 00502B70, вываливаемся. Пишем d eax. И видим свой код. Рассчет кода Теперь посмотрим процедуру подсчета правильности кода. Заходим в call 004CF1FC. Идем в конец процедуры и смотрим от чего зависит будет eax=1 или нет. Смотрим, смотрим, смотрим.... Длинная!!! Но ничего разберемся как-нибудь.
Видно, что если хоть в одном из байтов по адресам [ebp-0D],[ebp-0E], [ebp-0F] будет 0, то al = 0. Три критерия проверки, нам надо, чтобы во всех из них была 1. Так же сюда ведут два перехода: второй видно откуда, посмотрим откуда идет первый. Идем к 004CF25E.
Очень похоже на проверку длинны кода. Значит код должен быть равен 18 символам. Хорошо учтем. Теперь ищем где в первый байт [ebp-0D] записывается 1. И наты- каемся на такой кусок кода.
Скорее всего это сравнение строк по адресам находящимся в eax и edx. А что в них? Запускаем TRW 2000. Ставим бряк на 4CF419. Вводим произвольный пароль из 18 символов. И смотрим, что в этих строках. По адресу eax какое-то 4-х значное hex-число, по адресу edx 4 последних символа нашего кода. Уже кое-что. Заранее скажу, что число в eax есть сумма кодов первых 13 байтов нашего кода. Эта сумма вычисляется в процедуре по адресу 004CF568, следующей сразу после проверки количества символов в коде. Теперь смотрим второй критерий [ebp-0E] выраженный в таком куске кода
Проводим тот же маневр с TRW 2000. Ставим бряк на 4CF469 и видим, что по адресу eax находится 6-й символ кода, а по edx hex-число C. По скольку адрес указан статический, то можно сделать вывод, что C это неизменяемая константа. С учетом этого код выглядит так: xxxxxCxxxxxxxxXXXX. Где "x" - цифра или буква, "XXXX" - сумма кодов первых 13 символов. И наконец третий критерий [ebp-0F] вычисялется из такого куска кода:
Видно, что код аналогичен двум первым случаям. Только по адресу eax находится первые 3 символа кода, а по адресу edx три буквы "WOD". Общая форма кода принимает вид: WODxxCxxxxxxxxXXXX Поскольку считать самому XXXX мне было в лом, я состряпал такую программу на Pascal, пришлось даже написать функцию перевода из dec в hex.
У меня получился такой код: WOD11C1111111-02E6 Вводим. Загегистрировано. Запускаем опять и видим unregistred. Почему? Да все просто мы ввели Trial-код, а надо Reg-код. Посмотрим процедуру проверки повнимательней. Это было, и это было, и это тоже... А что это за процедура проверки?
Все как обычно загружаем в TRW 2000 ставим бряк начало блока. И смотрим по адресу eax 4-й и 5-й байты кода, а по edx 77. Так вот значит чем отличается код Trial-версии, от обычной?!!! Здесь должно стоять мое недоумение, вроде бы мощный продукт, а код генерится как в детском саду, ей богу. Товарищи программисты не будьте так наивны! Значит в тексте прогаммы заменяем в строке St:='WODxxCxxxxxxx'; третий и четвертный символы на постоянные 77. Еще разок пробуем ввести на сей раз моим кодом будет такая строка WOD77C1111111-02F2. B нам показывают, что мы зарегились полностью. Ура-а-а!!! Вопли восторга с разбрызгиванием слюны вокруг. Спасибо за интерес к моему творчеству! Удачи в Reversing Engeneering! Послесловие Спасибо авторам за предоставленный для исследования продукт. Было очень интересно. Собратья, если Вам понравилась эта программа и у вас есть деньги купите ее, иначе если никто не будет покупать, то никто не будет писать программы, следовательно нам будет нечего делать. Программисты, не будьте наивны - защищайте свои творенья как следует, не надейтесь на совесть крякеров, у некоторых ее не бывает. "Любая программа личностна, так как личность есть отражение свойств пространства на беспредельности бытия." (Fess)
Все ругательства отправлять в null P.S. Запомните все материалы публикуются только в учебных целях и автор за их использование ответственности не несет!! P.P.S. Возможно имеют место опечатки, заранее извините! With best wishes Fess И да пребудет с вами великий дух bad-сектора. Статья Создание регистрационного кода к Ashampoo WinOptimizer Suite Plus Pack 1.31 раздела Программа и Интерфейс Исследование программ может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Исследование программ ::
|
||||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |