Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Полезная утилитка, но большей частью для новичков, так как очень неудобна в обращении при хаканье кода... но зато под Windows! Разумеется, ShareWare; т.е. хочешь пользоваться — регистрируйся. Не то чтобы в незарегистрированной версии были заблокированы какие-то полезные возможности... но все же надпись "UnRegistred" довольно неприятна...
Ломается это не сложно — для регистрации выбираем специальный пункт меню, куда вводим свое имя, а затем код регистрации. Первая мысль, приходящая в голову: ВРХ GetWindowText. Оппс! Это сработало... теперь трассируем и видим, что условный переход выполнялся после сравнения с переменной [OECOh], которая в регистрированной версии не должна быть равна нулю. Ну, тут теперь и нечего делать — ВРМ DS:OECOh и перезагружаем программу. Ответ отладчика на ВРМ:
С6 06 СО ОЕ 00 MOV Byte ptr [OECOJ.O <-- это
C4 7E 06 LES Dl, (BP+6]
Теперь заменим это на:
С6 06 СО ОЕ 01 MOV Byte ptr [OECO],1
C4 7E 06 LES Dl, [BP+6]
Интересно, что сейчас в окне регистрации можно вводить что угодно и это работает!
Примененный способ достаточно универсален для защит "регистрации" — приложение вводит переменную "Registred", обычно булевскую (хотя и не обязательно), и в инициализационных процедурах, делая проверку регистрации, устаналивает ее. Вот эту-то строку мы изменили в данном случае! (И в других случаях тоже перспективнее именно такая замена)...
Теперь все отлично, но все же почему-то в заголовке окна вместо имени редактируемого файла горит 'Unregistred version...' Непорядок! Ну, тут задачка для начинающих — ставим ВРХ SetWindowText и ждем появления оного в заголовке. Оп-пс! Сначала появился 'верный' заголовок, затем затерся просьбой о регистрации... Просматривая окружающие коды в дизассемблере, находим те, которые могут шунтировать это сообщение. Где-то сверху на приличном расстоянии мы их и находим. Вот они:
7403 JE Loc_l
Е9 7F 00 JMP Ругательное_сообщение
:Loc_l
26 3В 85 54 04 CMP AX,ES:[DI+454]
75 78 JNZ Ругательное сообщение
: Normal Cont
Хм, можно сразу заменить JE Loc_l на NormaLCont, а можно последовательно: JE Loc_l -> JMP Loc_l; JNZ NormaLCont -> NOP+NOP. Как кому по душе...
Вот "защита" и взломана...
Дата публикования: 2014-12-08; Прочитано: 204 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!