|

Хакер vs Шаровары
FINNAN (finnan@mail.ru)
Xakep, номер #022, стр. 022-060-3
3. Очень часто проги имеют функции, которые при вызове проверяют правильность регистрационных данных. С помощью SoftICE-а находим такую функцию и условие, определяющее исход проверки. И опять немного "патчим" исходник, делая так, чтобы функция всегда давала добро. Результат - крек, патч или уже пропатченный екзешник. Недостатков мало, но возможны глюки.
4. Исследуем ту ключевую функцию и находим в памяти правильный SN (Serial Number), сгенерированный программой по введенным данным. Потом просто вводим его и все! Этот способ - наиболее "естественен" для проги, поэтому самый надежный.
5. Если повезет - вычислим алгоритм генерации SN и напишем keygen. Хотя за применение алгоритма в keygen-е могут наехать - нарушены авторские права.
Последний способ самый сложный, но и самый крутой. Правда, иногда бывают очень навороченные алгоритмы, на которых можно сломать голову, поэтому будем использовать способ #4, а если повезет, то выясним алгоритм и перейдем к способу #5. По пути коснемся способа #3, а с 1-м и 2-м после прочтения статьи, я думаю, ты разберешься сам.
Итак, жмем "Close", затем Help -> Enter your serial number:
Вводим SN: 0987654321, Registered user name: qwerty. Такие данные нужны, чтобы потом их легко найти в памяти. Теперь жмем "Register" и получаем "Registration Failed" :).
Как, собственно, программа сообщает нам о том, что регистрация не прошла? Вроде просто: выводит модальное окошечко, в нем картинка, надпись и кнопка. Прога для этого могла воспользоваться функцией MessageBox. Если это на самом деле так, то, поставив точку прерывания на эту функцию, мы найдем место, откуда она была вызвана. Понятно, что перед этим была проверка - верны данные или нет, поэтому найти этот ключевой код не составит труда. Теперь идем в SoftICE и ставим BPX на MESSAGEBOX, MESSAGEBOXA, MESSAGEBOXINDIRECT и MESSAGEBOXINDIRECTA (т.е. команда bpx MessageBox и т.д.; из этого списка пройдет не все, в зависимости от системы). Повторяем регистрацию еще раз, и опять "Registration Failed". Значит, эти функции не используются. Задача усложняется, но не намного. Снова идем в отладчик и убиваем эти BP командой BC *. Пытаемся зарегистрироваться еще раз. Теперь, не закрывая окно с сообщением об ошибке, активизируем консоль (<Ctrl+D>) и даем команду "S 0 L ffffffff "0987654321"", которая станет искать в памяти последовательность символов 0987654321, являющуюся введенным SN.
Синтаксис команды такой:
S <начальный адрес> L <длина поиска> <образец>.
Где образец может быть как последовательностью байт, типа "0B 0C 15 3D" (без кавычек), так и строкой символов, но в таком случае она должна заключаться в кавычки.
Когда SoftICE найдет нужную последовательность, то ты увидишь:
:S 0 L ffffffff "0987654321"
Pattern found at 0030:80C486B2 (80C486B2)
А в окне данных будет отображен тот самый адрес. Прокрути с помощью <Alt+стрелки> это окно вверх и вниз - если увидишь рядом имя регистрации, значит, мы нашли место в памяти, куда программа записывает введенные данные. Если не найдешь - продолжи поиск, но уже не с нуля, а далее.
Назад на стр. 022-060-2 Содержание Вперед на стр. 022-060-4
|