Исследование Font Creator Program 4.0
Перейти на главную страницу, индексную страницу.
Автор: GL#0M gl00m-crk@yandex.ru
Цель: Font Creator Program 4.0
Инструменты: W32Dasm, Hiew.
iNTRODUCTION
"Редактор шрифтов среднего уровня - такую характеристику можно дать этой программе от компании
High-Logic. Возможно, наибольшую пользу Font Creator представляет для тех, кому уже не хватает программ для
начинающих и кто хочет попробовать свои силы на следующем уровне, но не имеет достаточно средств, чтобы
приобрести дорогие профессиональные редакторы" - Журнал Chip 08/2003
Помнится...
Помнится, когда-то, я исследовал третью версию этой замечательной программы. Ключ был найден уже
через пол часа. Вот и решил проверить, изменилось ли у авторов отношение к защите.
Взлом
Что ж, посмотрим... При заходе в программу появится Nag, который оповестит нас о том, что программа будет работать
(без каких-либо ограничений) всего лишь 30 дней. Нас просят нажать на кнопку "Start", для того чтобы продолжить,
или "Register", для регистрации. Попробуем-ка зарегестрироваться...
Вот тут-то я и уткнулся в нехилое окно для ввода "License Key". При беглом рассмотрении, алгоритм
был RSA, а это уже не шуточки. Времени на создание ключа не было, поэтому решил патчить.
Вперёд! Откроем нашу жертву в W32Dasm'е и зайдём в раздел Refs -> String Data References. Поищим там
что-нибудь связанное с регистрацией. Мне тут же бросилась в глаза надпись (UNREGISTERED) - это она каждый раз
светится в заголовке программы. Нажав на неё два раза мы окажемся на очень интересном месте:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005B7EE4(C)
|
:005B7F2B A1FC7F5C00 mov eax, dword ptr [005C7FFC]
:005B7F30 803800 cmp byte ptr [eax], 00 // сравнение eax с нулём
:005B7F33 742E je 005B7F63 // если eax=0, то прыгаем
:005B7F35 A12C805C00 mov eax, dword ptr [005C802C]
:005B7F3A FF7008 push [eax+08]
:005B7F3D 68D47F5B00 push 005B7FD4
:005B7F42 A12C805C00 mov eax, dword ptr [005C802C]
:005B7F47 FF7010 push [eax+10]
:005B7F4A 8D45F0 lea eax, dword ptr [ebp-10]
:005B7F4D BA03000000 mov edx, 00000003
:005B7F52 E83DC8E4FF call 00404794
:005B7F57 8B55F0 mov edx, dword ptr [ebp-10]
:005B7F5A 8BC3 mov eax, ebx
:005B7F5C E8D368EBFF call 0046E834
:005B7F61 EB31 jmp 005B7F94 // здесь мы прыгаем если всё OK.
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005B7F33(C) // сюда происходит прыжок именно с этого адреса
|
:005B7F63 A12C805C00 mov eax, dword ptr [005C802C]
:005B7F68 FF7008 push [eax+08]
:005B7F6B 68D47F5B00 push 005B7FD4
:005B7F70 A12C805C00 mov eax, dword ptr [005C802C]
:005B7F75 FF7010 push [eax+10]
* Possible StringData Ref from Code Obj ->" (UNREGISTERED)"
|
:005B7F78 68E07F5B00 push 005B7FE0 // вот здесь мы оказались
:005B7F7D 8D45EC lea eax, dword ptr [ebp-14]
:005B7F80 BA04000000 mov edx, 00000004
:005B7F85 E80AC8E4FF call 00404794
:005B7F8A 8B55EC mov edx, dword ptr [ebp-14]
:005B7F8D 8BC3 mov eax, ebx
:005B7F8F E8A068EBFF call 0046E834
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005B7F61(U)
|
:005B7F94 33C0 xor eax, eax
:005B7F96 5A pop edx
:005B7F97 59 pop ecx
:005B7F98 59 pop ecx
:005B7F99 648910 mov dword ptr fs:[eax], edx
:005B7F9C 68C37F5B00 push 005B7FC3
|
Т.е. нам нужно просто-напросто зайти в Hiew и заменить конамду cmp byte ptr [eax], 00 (по адресу 005B7F30) на
mov byte ptr [eax], 01, а команду je 005B7F63 (по адресу 005B7F33) на xchg al,al (или два nop'а). Это всё соответствует
замене опкодов 80,38,00,74,2E на опкоды C6,00,01,86,C0. Проделав эти манипуляции, мы получим полностью работоспособную
программу, без каких-либо ограничений и надписей. Вру, надпись в About'е осталась, но её можно легко заменить в том же
Hiew на что-нибудь другое. Я например заменил на "This product is cracked by GL#0M". Всё, удачи!
P.S. Как показало данное исследование, разработчики, понадеявшись на замысловатый алгоритм вычисления ключа,
совсем забыли о защите исполнимого кода программы, что не уберегло их от банального запатчивания. "Зрите в корень мужики!"
Все пожелания и предложения отправляйте на мыло. Постараюсь ответить.
Этот материал опубликован в целях самообразования, за последствия которого Автор ответственности не несёт!
Материалы находятся на сайте
http://cracklab.narod.ru/doc/
|