Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Регистрация основанная на серийных ключах.

Обсудить статью на форуме

Хорошая подборка видеоуроков, инструментов крэкера, книг и статей - здесь.

Эту статейку написал скорее всего Владимир Каталов на тему защиты shareware-программ, но я думаю что она будет полезна не только программистам, но и крэкерам тоже.

При хорошем знании ассемблера очень просто обойти защиту типа имя пользователя-регкод: когда пользователь вводит свое имя и регистрационный код, программа генерирует "правильный" код и сравнивает его с тем, который он ввел, поэтому "перехватить" этот код (просто считать его из памяти) не составлет особого труда. В большинстве случаев достаточно просто поставить breakpoint на функцию lstrcmp -- и все дела... Упаковка программы, анти-дебаггерные и анти-дизассемблерные "примочки" помогают слабо.

А вот метод фиксированного ключа может быть реализован достаточно неплохо. Хранить "правильные" ключи в программе совсем не обязательно - можно подчинить их некоторым правилам; что-то подобное делает Microsoft со своими CD-keys, но у них все слишком просто. Алгоритм проверки может быть длинным и запутанным, так что его дизассемблирование (и "разборка", что же он делает) причинит немало головной боли. Именно первый метод я и применил для защиты своей программы (Advanced Disk Catalog - старые версии), но и он был "сломан" (хотя, как мне написал ломавший его хакер, подборка всего двух правильных ключей отняла у него много времени). Тогда мне в голову пришла идея: а что, если ключи хранить внутри программы, но зашифрованными? Я "сгенерил" некоторое количество ключей (абсолютно случайным образом), зашифровал их (по отдельности) 128-битным ключом по алгоритму RSA и прошил в программу в виде ресурса. Когда пользователь вводит ключ, он шифруется по тому же алгоритму и сравнивается с правильными. Так как система с открытым ключом не позволяет произвести обратное преобразование, базируясь только на открытом ключе (а закрытого нет даже у меня - расшифровывать-то не надо), то подобрать ключи невозможно даже теоретически.

Есть, впрочем, еще одна проблема: хакер (или "крэкер", если угодно) может заменить 'je' на 'jne' (или что-то в этом роде) там, где происходит последняя проверка, и функция "IsValidKey(...)" будет всегда возвращать TRUE. Останется лишь написать маленький patch... Чтобы защититься и от этого, я вычисляю CRC своего exe-файла и сравниваю его с правильный, прошитым тоже внутри программы (естественно, при вычислении эта часть файла -- где лежит правильный CRC -- исключается; а "прошивается" он после компиляции). Кстати, это еще и защита от вирусов. Вообще-то, проверку CRC тоже можно локализовать и "запатчить", но это уже немного сложнее, особенно если программа вызывает функции чтения/записи и для других целей. Кроме того, не стоит в случае несовпадения CRC сразу об этом сообщать, иначе можно будет поставить hardware breakpoint и найти место, где он вычисляется. И последнее. Если хочется защитить программы совсем уж "круто", томожно несколько функций в своей программе (те, которые должны вызываться только в зарегистрированной версии), зашифровать по тому же алгоритму с открытым ключом. При этом, естественно, часть серийного номера (отсылаемого зарегистрировавшимся) надо сделать "статическим", т.е. неизменным для всех пользователей. На основе этой части после регистрации генерируется полный закрытый ключ, который далее используется для расшифровки указанных функций. Таким образом, даже если будет написан patch, позволяющий "зарегистрироваться" с любым (произвольным) кодом, расшифровка пройдет неправильно, и вместо нормального кода будет выполняться "мусор".

Этот способ я применил в другой своей программе (Advanced ZIP Password Recovery), и ее пока не вскрыли. Всего наилучшего !

Комментарий от Bad_guy: действительно, если некоторые нужные функции зашифрованы, расшифровать их практически невозможно, и я бы сказал, что для защиты программы этого метода с лихвой достаточно, но никогда не надо забывать, что есть такой способ взлома как кража правильного кода (хотя такой метод противоречит крэкерской этике, да и не крэкерство это вовсе). На мой же взгляд программа - это сейф, содержимое которого вам известно, и прежде чем начинать взламывать этот сейф надо подумать: так ли вам нужно его содержимое ? Автор вот говорит - никто не взломает Advanced ZIP Password Recovery, ну и пускай спит спокойно, а я пока поищу бесплатный аналог (если припрёт).



Обсуждение статьи: Регистрация основанная на серийных ключах. >>>


Комментарии к статье: Регистрация основанная на серийных ключах.

EST2000 19.03.2006 23:11:50
Отличная статья, автор молодец !!!
---
VEDROiD 21.04.2006 10:18:51
Рульная статья! А Фир по-моему лучший экшн'2005 :)
---
namer 23.04.2006 20:48:04
У меня скрипт ищущий OEP не работает. Т.е. Оли на паузе зависает и приложения не видно тоже
---
Svetlyi 11.05.2006 23:37:01
вот-вот больше статей для начинающих, как про BlueFace
---
Maximus 07.08.2006 22:42:05
Фтопку статьи: Распаковал стриппером, пропатчил несколько байт
---
452 20.08.2006 15:30:38
Навид круто. Буду читать в поезде по дороге на учебу 5 часов подряд.
Ну есть здесь одна проблемка где ето можно скачать ввиде на распечатку?
---
Snake 60 04.05.2007 14:19:31
Поменял по адресу :00407285 (см.статью) je на jne и зарегил пустой строкой - это сработало, но при выходе из проги регистрация не сохраняется. Поэтому - это не есть правильный взлом. Думаю, так как писал MozgC делать правильней, но у меня не получилос =)) так как пробовал в Olly... Хорошо бы продублировать статейку для Ольки... ;) А так, verry good, узнал для себя кое-что новое. Так держать, побольше бы таких туториалов...
---
Wal 25.08.2007 09:28:14
Спасибо за статью! Все получилось. Всегда приятно открывать для себя что-то новое.
---
Voyager 02.09.2007 19:35:55
Статья на отлично! Конечно, за исключением того, что в самом тексте ее есть некоторые растянутые моменты, которые могу поначалу путать читателя. Но все расписано довольно подробно и с тем же просто и доступно.
---
Voyager 03.09.2007 20:00:57
Замечательные статьи! На отлично.
В отличие от первой, в этой статейке сведения более конкретные, но доступность и понятность их почти не изменилась. Все это, безусловно, большие плюсы.
---
aka_shaitan 13.03.2008 09:53:21
Большое спасибо MozgC.Для начинающих очень полезная статья.Правда я использовал Олю.Ну и добавил от себя,что теперича Синее Лицо Registered to:Copyright 2008 aka_shaitan с помощью Exescope.В общем так держать MozgC.
---
arkadihard 23.04.2008 08:51:41
Не понятно как запускать, и что нажимать в (SoftIce) застрял на середине статьи и немогу нечего поделать, люди добрые подскажите плиз.

непонятная часть:
и открываем окно софтайса (CTRL D)
"скачал-установил" нажимаю CTRL D, нечего не происходит
какой .exe программы запускать не понятно!
---
SwantA 19.07.2008 16:02:06
читал как любимую фантастичускую книжку))
а до этого так боялся пакеров/протекторов!
---
arnym 22.10.2008 20:12:17
Отличный FAQ. No pочему не упомянута тенденция добавлять трояны в крэки и PIN-генераторы? И советовать пользователю отключуть "false positives" в антивирусных прогах? Надо бы обьяснить, чем плох этот способ заработать. И как определить, есть ли троян в генераторе или крэке, кроме прогонки антивируса конечно?
---
diR 29.10.2008 18:36:41
пока ничего не понял.
---
ronald 11.01.2009 18:43:25
Я лично просто сделал так:
00407279 JMP 0040727A
работает при любом введённом коде
---
imaxno 23.02.2009 16:48:39
Да, автору респект по его статьям "вырастут" програмисты :)
---
ZLOvar 22.12.2009 16:50:38
Кул статья! MozgC, держи !!
---
andreyantoshin 05.01.2010 20:58:45
А есть возможность поподробнее рассписать и желательно с картинками, на какую кнопуку нажимать, чтобы постаить breakpoint на MessageBox. И как его обойти.
---
WhiteAngel 09.01.2010 01:39:54
Всё супер, вот только скачав по ссылке BlueFace получил сразу зареганную версию, поэтому пришлось повреить на слово.
---
grey_wolf 16.01.2010 18:54:08
клас!огромній респект вам!только маленький вопрос-а нельзя эту библию сделать в виде книги,типа файлом справки?извените если был наглым,если кто может,то зделайте и поделитесь сылочкой
---
PsiBoX 16.07.2010 16:11:48
Согласен с fev.
olly намного проще и удобнее полная совместимость с xp (не знаю, правда ли, но говорят что и с Vista)
Автору зачет за статью, все понятно и грамотно описано для новичков... мне лично все понятно было.

---
t0k3n1z3r 09.08.2010 22:49:54
Классная идея.

---
31010 17.08.2010 10:55:49
А кто скажет, на XP с SP3 надо скачивать и менять OSINFO.DAT???
---
gurnalistfm 19.08.2010 19:12:58
Большое спасибо. Это не сайт, а клондайк для новичка.

---

Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS