Главная » Статьи » Крэкинг |
Исследование Zuma Deluxe.
-----[Вступление] Это 50-ая взломанная мной программа, поэтому решил написать небольшой тутор, так сказать отметить. Хотя всё таки - это игра, а не прога, но это сути не меняет, в ней использовалась защита, размещённая в длл. Так что, для развития не повредит. Ну понеслась. -----[Основная часть] Приступим. Что тут у нас в readme.txt:
Ну ну, какие они наивные. Ладно натравим на файлик Zuma.exe любой анализатор. Хм, вроде файл не пакован,
максимум, что я узнал это "Gamehouse Media Protector Version Unknown". Ну и это не точно. Ладно загрузим наш файлик в
Олли и увидим:
И что же тут интересного спросите вы, а вот что: ZUMARES.DoMessage. Идём в директорию с игрой и деиствительно, видим
файлик: zumares.dll. Так, теперь всё проясняется, прога использует эту длл в работе. Теперь откроем длл в LordPE и
посмотрим экспорт функций, меня очень привлекла функция isTrial (думую из названия всё понятно). Загрузим эту длл
в олли и чуть-чуть поисследуем. Если вы это сделали, то мы окажемся в её начале и увидим:
Так, ну тут всё как на ладони. Вызывается функция isTrial и в зависимости от значения, которое она вернёт
в регистре EAX, у программы будет разное поведение (JE SHORT 100030E6)
откроем учебник по асму, и посмотрим комманду TEST:
В регистр eax заносится значение из ячейки [10006028] типа DWORD. Предположим что это переменная типа Boolean, которая может принимать значение 1 или 0. Теперь всё понятно, осталось только выяснить, что же она должна вернуть то =) Для этого загрузим программу в олли и поставим бряк на адресс 10001E10, потом запусти прогу. Прервёмся (а куда она денется) и смотрим, что у нас лежит по адрессу [10006028]
Ну я так и думал, 1. Теперь надо сделать так, чтобы по этому адрессу всегда был 0. Этого можно добиться разными путями. По хорошему, надо отследить все обращения к этой переменной и в тех местах, когда туда будет записана 1, поправить код так, чтобы этого не произошло. Но мы сделаем хитрее. Помните функцию isTrial, которая находится в zumares.dll. Давайте её не много поправим. было:
стало:
Т.е. мы помещаем в регистр EAX ноль. Осталось запустить игру и проверить все наши предположения. Ура, всех ограничений, как не было. Мы добились чего хотели. -----[Заключение] Вот видите, всё не так страшно и сложно (но так бывает не всегда). Не надо принимать всё написанное здесь за образец! Вы должны черпать из статей главное, т.е. метод исследования. В следующий раз я посмотрю что-нибудь посложнее, а пока разрешите откланяться. [04.05.2006 by Hellsp@wn] Источник: http://hellspawn.nm.ru/ | |||||||||
Просмотров: 3203 | Рейтинг: 5.0/1 |
Всего комментариев: 0 | |