От патча до кейгена - Sanchs Marine Aquarium v0.99L BetaDelphi , Программа и Интерфейс , Исследование программОт патча до кейгена - Sanchs Marine Aquarium v0.99L BetaАвтор: Fess Target: Sanchs Marine Aquarium v0.99L Beta Tools:
Пролог Вступление: Как-то около месяцев трех-четырех назад увидал я на softodrom'e хороший хранитель экрана в стиле "Эмуляция аквариума" и решил его себе закачать. Сказано сделано, скачал, поставил. Но по каким-то причинам он оказался шароварным. Дурацкий наг и возможность пользоваться одной рыбкой меня вдохновила на взлом. Наскоком взять не получилось, а со временем то- гда была напряженка сбацал патч и забыл. Но все возвращается, вот так и я от нечего делать решил вернуться и продолжить работу, как в следствии ок- азалось защита была плохой. Для начинающих крэкеров это в самый раз, и я предлагаю вашему вниманию 4 способа взлома этой программы. Что за прога: Один из самых лучших из видимых мной хранителей экрана, такой красоты и маленького размера (архив 1,1 Мб). Примечание: Если вы уже почетный крэкер и написание кейгена для любой проги для Вас плевое дело, то не читайте эту статью, так как в основном она предна- значена для начинающих желающих постичь все основы исскуства крэка. Я не считаю себя мастером крэкером, так что все огрехи в моей статье по незна- нию и не умению, но я стараюсь, чтобы их не было. Если вы нашли какие-ли- бо ошибки, не сочтите за труд и сообщите мне. Вступление Как я уже писал в прологе взлом будет производится четырьмя разными способами, это
Патч Патч это самый легкий способ взлома поэтому профессионалы и мастера в крэке считают его чем-то низким, я тоже стараюсь избегать использовать патч, но раз статья предназначена для начинающих, то не рассмотреть его это преступление. Но у легкости и быстроты патча есть и свои недостатки, по сравнению с серийным номером. Во-первых, это то, что он врядли будет работать с последующими версиями программы, во-вторых, сложно переносить патч, о... вот тут мне подсказывают, что для этого используют crk-файлы, согласен, но если программа запакована exe-паковщиком, то к этому файлу придется добавлять и распаковщик, а они подчас занимают достаточно много места. Ну что ж приступим. Программа ничем не запакована и написана на Visual C++. Поэтому сме- щение в файле равно смещению в памяти минус 400000h. Первое, что нужно сделать это установить программу. Логично скажите Вы и будете правы. Установили? Теперь идем в Настройки Экрана, выбираем наш Screen Saver. И жмем кнопку Настройка. Там видим большое поле, где надо вводить наш код. Введем любой код и нажмем кнопку Enter. Код пропал, а ничего не произошло. Хм, странно. Почитаем текст вокруг. Написано, что можно написать TESTFISH, пишем, вводим и видим надпись: TEMP REGISTRATION OK. Работает. Скорее всего здесь и высветиться информация о правиль- ном номере. Что еще можно прочитать... Так написано, что нужно заплатить им 19,95 американских портретов за Deluxe регистрацию. Ладно, наплевать лучше сразу дизассемблировать, а там посмотрим. Копируем файл fish.scr из каталога Windows в свой каталог, у меня это MUSOR. Дизассемблируем. И ле- зем в директорию найденных в программе строк: StrRef и ищем там, какие- нибудь интересные строки, таковыми оказались:
"BASIC registration OK" Последнюю мы уже видели, а две другие нет. Судя по названиям Deluxe это продвинутая регистрация, а Basic основная. На Basic наплюем, хотя мы еще с ней встретимся в 2 и 3 пункте, а сделаем себя люксами. Два раза тыкаем на строку с Deluxe и оказываемя здесь Прим: все основные строки я выделю таким цветом.
Так в выделенной строке число по адресу 429374 сравнимается с 3 и если не равно, то идет куда-то дальше, а если равно, то выдает эту строку. Зна- чит надо, чтобы в этой ячейке памяти всегда было 3. Вы можете не согла- ситься со мной, сказав: "Может просто заменить переход после этого сравне- ния и все." Это самая главная ошибка начинающих борьба не с причиной, а со следствием, такой способ может сработать, но редко. Хотя никто Вас не дер- жит попробуйте, может и получится. Попробуем поискать фрагмент, где в эту ячейку записываются данные, это можно сделать с помощью Soft-Ice. Но зачем крэкеру геморой. Просто поищем строку mov dword ptr [00429374], 00000003. Глядишь, что и всплывет. Найде- но три адреса, вот текст около первого
Каждые три раза вызывается эта процедура и если в eax она возвратит не 0, то все хорошо и идет присвоение, если 0, то плохо. Можно, конечно, поменять все jump'ы после этих процедур. И это скорее всего поможет, но я предпочи- таю действовать более тонко, сделать, чтобы процедура всегда возвращала не 0. Можно, конечно, прямо после входа в процедуру поставить ret, ведь скорее всего eax<>0. Процентов 91,2%. Но лучше присвоить eax единицу и выйти. Да- вайте так и сделаем. Открываем файл qview или hiew. Включаем 32 битный-hex&asm режим. Как это делается я в предыдущих тьюториалах писал. Переходим по адресу 30F0. И вписываем такие строки (после ";" приведена расшифровка строк)
Или прямо в hex-режиме начиная с адреса 30F0 пишем 33С040С3 это и будут эти команды. Теперь можете зайти в настройки и увидеть их совсем другими, а сверху долгожданную надпись Deluxe Version. И пользуйтесь ей до скончанья веков. Жалко, что это только бета, а в нормальной этот патч будет не дейтвителен. Хотя я думаю сломать ее будет так же легко, да и адреса врядли сильно по- меняются. Но уж лучше код, читайте дальше.... Подсмотр кода Подсмотреть, подслушать это давнее изобретение человека из века в век на этом делали деньги. И мы сегодня заработаем ни много, ни мало 19.95$. Только, к сожалению, Вам их никто не отдаст, но зато программа за эту це- ну станет Вашей. Поехали. Самая главная задача это найти, где введенный нами код сравнивается с настоящим, сгенереным по каким-то законам с какими-то условиями. В этой главе нам на них превать. Тут вы можете меня осудить, мол сволочь, "тут, наверное, будет вычисляться контрольная сумма, ведь имя-то не вводим.". Я себе позволю сразу Вам заметить это тот редкий случай, когда это не так. Не забудьте включить SOFT-ICE, он нам понадобится подсмотреть код. Помните мы писали TESTFISH и получали ответ. Да. Тогда давайте посмо- трим откудова вызывается эта строка. Ведь она сравнивается с нашим вве- денным нами кодом. Жмем два раза на TESTFISH и оказываемся здесь. Я чтобы было по понятней понаставлю своих комментариев.
Будем надеятся с коментариями все понятно. Как я угадал, где Basic, где Deluxe. Посмотрите на выделенные строки. Если не переходит адресу 429374 записывается значение. А о нем мы говорили, когда делали патч. Так же мы увидели, что наша введеная строка заносится в память по адресу 00428EA4. Кстати, Вы заметили, что процедура у Basic регистрации и Deluxe одна, и различаются только по значению кладущимуся в стэк 2 или 3. Заходим в эту процедуру и ищем, где наш введенный код сравнивается с истинным. "Истина, где-то рядом","как говорил один мой друг, ныне покой- ник". Сразу скажу программа написана на C++ и использует MFC, если, ко- нечно, это вам что-нибудь говорит. Ищем пока не доходим до такого места.
Видно, что наш код сравнивается с чем-то. Теперь пора взятся за Soft- Ice. Заходим ставим бряк на GetDlgItemTextA строкой bpx GetDlgItemTextA. Из предыдущего фрагмента кода было видно, что именно эта функция исполь- зуется для чтения. Лезем в настройки и вводим такой код: 110022334455. Нажимаем Enter и вываливаемся в Soft-Ice нажимаем F11, чтобы вернуться в тело программы. Удаляем все бряки командой bc * и устанавливаем бряк на адрес 40327E команда bpx 40327E. Нажимаем F5. Но ничего не происходит программа до этого места не дошла. Тогда попробуем символьный код, такой FESSCOOL. Опять вводим и на сей раз вываливаемся, в Soft-Ice на нашем бряке. Даем команду d ecx, чтобы посмотреть, что будет по адресу ecx и видим следующее FESSCO760776. Жмем F5 и опять вываливаемся, опять d ecx и видим FESSCO966395. Рассуждаем логически, первое, программа использует первые 6 символов, введенного кода для генерации остальной части. Второе, эти первые 6 символов обязательно буквы, третье, первый код это скорее всего для Basic регистрации, а второй для Deluxe, поскольку процедура генерации одна. Попробуем ввести - подходит. Это круто теперь Вы можете получить код для своего имени или его части. И это круто. Можете теперь рассказать всем как вы купили эту программу и получили код, заплатив 20$. Но хорошего понемножку, и подсмотреть код просто, но что делать, ес- ли, кто-то не знает Soft-Ice можно дать ему свой код, но лучше другой. Каждый раз включать для этого Soft-Ice, ставить бряки и прочее. Неудобно лучше сделать кейген для начала на самой программе. Читайте дальше. Написание кейгена на основесамой программы Если в программе можно подсмотреть правильный номер, то написание кей- гена на основе самой программы элементарно просто. Уже в нескольких ма- нуалах я писал, как это сделать. Мы уже нашли место, где правильный номер сравнивается с нашим. Оста- лось только вывести правильный номер на экран, для этого я обычно ис- пользую функцию MessageBoxA. Ищем любой код с этой функцией. Идем в секцию функций и два раза жмем на USER32.MessageBoxA. И попадаем в такое место.
Посмотрите hex представление этой функции и перепишите на бумажку, оно нам понадобиться. Формат функции MessageBoxA такой
Еще раз внимательно посмотрите на предыдущий фрагмент кода, нам надо начиная с 40327D. Написать такие строки, через дефис я буду приводить их hex представление. Запомните адрес MessageBoxA уникален для каждой программы, поэтому я беру его hex представление из самой программы.
Джамп после этого всего необходим, чтобы программа не посчитала себя зарегеной, а то как вводить код? Как вы понимаете вываливаться будет 2 раза. Первый Basic код, второй Deluxe-код. Вот пожалуй и все. Перейдем теперь к написанию настоящего кейгена. Написание кейгена на Delphi Сегодня мы покажем класс. Soft-Ice можете отложить в сторонку. Будем писать кейген, ТОЛЬКО опираясь на код в Win32Dasm'e. У каждого внутри есть свой Soft-Ice надо только научиться им пользоваться. Заходим в про- цедуру генерации пароля 4030F0 и анализируем ее.
Надеюсь все понятно из моих комментариев. Видите как просто, зачем здесь Soft-Ice. Я сляпал кейген на Delpi. Так как это быстро и просто. Да и Вас загружать не зачем. В нем я умышленно, чтобы не разрасталась статья не привожу проверку на заглавные буквы, т.к. программа воспринимает только заглавные. Если надо будет напишите сами это не сложно. Для создания кей- гена на основной форме нужно поместить два компонента Edit с именами Edit1 и Edit2 (они по умолчанию будут такими). И одну кнопку, имя любое. Затем жмете два раза на кнопку и вставляете этот фрагмент:
Разобраться с этими строками легко, я думаю вы справитесь, если что непонятно пишите. Адрес есть в начале и в конце. Послесловие Вот и закончена работа потирая руки вы регистрируете программу на себя. Винище льется рекой вы празднуете халявно заработанные 20$. Хочу надеяться, что эта статья Вас чему-либо научила и помогла в осво- ении этой нелегкой науки. Снять регистрацию можно, в разделе реестра: HKEY_CURRENT_USER\SOFTWARE\Serenescreen\SereneAquarium Удалив параметр Code. Люди, если у Вас есть деньги и Вам понравилась эта программа ку- пите ее, поддержите разработчиков для выпуска новых версий. Тем более прога действительно хороша. Крэкеры, крякеры и кракерята, сказать практически нечего разве, что только не ругайте сильно разработчиков за такую корявую защиту. Разработчики, если хотите, чтобы за Вашу программу платили Вам, а не пиратам защищайте сильнее, а то эта защита никуда не годна, ее слома- ет даже начинающий.
Все ругательства отправлять в null Спасибо за интерес к моему творчеству! Удачи в Reversing Engeneering! P.S. Запомните все материалы публикуются только в учебных целях и автор за их использование ответственности не несет!! P.P.S. Возможно имеют место опечатки, заранее извините! With best wishes Fess И да пребудет с вами великий дух bad-сектора. Статья От патча до кейгена - Sanchs Marine Aquarium v0.99L Beta раздела Программа и Интерфейс Исследование программ может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Исследование программ ::
|
||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |