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

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


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

Исследование Registry Studio 1.01

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

Массу крэкерских инструментов, видеоуроков и статей вы сможете найти на видеокурсе от нашего сайта. Подробнее здесь.
 Привет всем читателям!
 Вы пялитесь на мое очередное практическое пособие (второе) по удалению из софта
 врожденных дефектов, препятствующих использованию оного во всей своей красе. :)
 На этот раз речь пойдет о софтине, именуемой Registry Studio. Это тот же виндошный
 regedit, но со всякими наворотами. Использует стандартную схему защиты: имя/серийник
 и отказывается работать по истечении N дней. Этот баг мы пофиксим... :)
 
 Вам, кроме головы на плечах, понадобится:
    * SoftIce
    * пойло (о-очень много)
    * сигареты (если курите)
 
 Что ж, хватит трепа. Работы у нас дохрена. Так что за дело.
 Как обычно, запускаем пациента... вводим данные, но не нажимаем "ОК"... ставим в
 SoftIce бряк (bpx getwindowtexta)... пробуем регистрировать софтину... всплывает SoftIce.
 
 А вот теперь начинается веселье!!! Два раза на F12 - и вы попадете сюда:
 
 0078815D  mov esi, [ebp+14]	;введенное нами имя двинуть в ESI
 00788160  push ebx              ;введенный серийник - в стек
 00788161  push esi              ;и имя туда же
 00788162  call 00784297
 . . .
 
 Теперь, установив курсор на строку "00788162  call 00784297", давите на F8, чтобы войти
 в процедуру:
 
 00784297  push ebp
 . . .
 007842A0  push esi			;снова имя в стек...
 007842A1  mov esi, [ebp+0C]
 007842A4  push esi			;и серийник туда же
 007842A5  call [KERNEL32!lstrlen]
 007842AB  cmp eax, 08			;длина пароля 8 символов?
 007842AE  jl 007842C7 			;если меньше - выход.
 
 Ага, значит серийник должен быть длиной не менее 8 символов!!! Если вы ввели меньше -
 исправьте, т. к. иначе дальше продвигаться смысла нет. Исправляйте, я подожду..........
 Вернулись? ОК! Идем дальше:
 
 007842B0  mov cl, [esi]		;в CL  идет первый символ имени
 007842B2  cmp cl, 72		;он у нас "r"?
 007842B5  jz 007842BC		;если да, то перейти дальше, иначе...
 007842B7  cmp cl, 52		;...проверяем, может быть это "R"?
 007842BA  jnz 007842C7		;если нет - на выход
 007842BC  mov al, [esi+01]	;в CL идет второй символ имени
 007842BF  cmp al, 73		;он у нас "s"?
 007842C1  jz 007842CB		;если да, то перейти дальше, иначе...
 007842C3  cmp al, 53		;...проверяем, может быть это "S"?
 007842C5  jz 007842CB		;если нет - на выход
 
 Твою мать! Оказывается, первые 2 символа в серийнике должны быть "rs" (регистр не
 важен).
 Придется снова изменять введенные рег. данные. Не торопитесь, я жду..................
 Исправили? Тогда продолжим:
 
 . . .
 007842CD  test cl, cl		;проверяем, не равен ли CL нулю?
 007842CF  jz 007842E1		;если равно - выходим из цикла
 007842D1  cmp cl, 2D		;текущий символ - это тире?
 007842D4  jz 007842DB           ;если да, то переход ----------------------+
 007842D6  mov [eax+ebp-64], cl  ;                                          |
 007842DA  inc eax           ;                                              |
 007842DB  mov cl, [esi+01]  ;в CL - следующий символ введенного имени  <---+
 007842DE  inc esi
 007842DF  jmp 007842CD		;переход в начало цикла
 
 Перед нами цикл проверки введенного рег. номера на наличие символов "-" (тире).
 Проверяется каждый символ по очереди и записывается по адресу [eax+ebp-64]. Если текущий
 символ - тире, то оно пропускается, и проверяется следующий за ним символ. Таким
 образом, по адресу [eax+ebp-64] будет храниться введенный серийник, но без символов "-".
 Если в серийнике не будет обнаружено ни одного тире, то вычисления закончатся.
 
 Да, да! Вы все поняли правильно! Нужно опять изменять регистрационные данные. Готово?
 Хорошо. Найдем же этот гребаный с/н:
 
 . . .
 00784208  mov edi, edx
 0078420A  call 007840B0
 0078420F  add esp, 10  ;!!!Не хотите проверить, что лежит по адресу в ESP? :)!!!
                        ;Введите: "d esp" (без кавычек) и натискните <ввод>.
                        ;Немного ниже (в старших адресах) вы увидите готовый серийник.
 00784212  cmp eax, esi
 . . .
 
 Вот и все! Серийник выглядит примерно так:    RS13-3041-2359-1828-6743-72
 Что ж, номер мы нашли, и это клево. Теперь можно зарегистрировать прогу и забыть о ней.
 
 Помните: кракинг - это не кодинг. Как только способ обойти защиту найден, цель считается
 достигнутой, а миссия - выполненной. Не стоит зацикливаться на одной софтине.
 
 НО! Если вы хотите написать генератор ключей, то вам придется разобраться с алгоритмом
 создания серийника. Попробуйте сделать это сами. Если что-то не будет получаться или
 запутаетесь - пишите. Я в свое время провел не одну бессонную ночь, пытаясь разобраться
 с этим дерьмом.
 
 ПОДСКАЗКА:
 По правде говоря, в алгоритме генерации с/н есть одна каверзная фишка. Там происходит
 умножение двух чисел - содержимого регистров. Насколько я понял (хотя могу и ошибаться),
 для создания одного из множителей, в регистр заносится содержимое N-ой ячейки памяти. А
 вот выбор этой ячейки (а соответственно и числа в ней) происходит псевдослучайно, в
 зависимости от длины имени, текущей буквы и других обстоятельств, поэтому предсказать
 следующее число сложновато. Но есть способы обойти и эту хитрость :)
 
 До встречи!
 
 Да, и... keep on cracking....
 



 Date  :04.09.2002
 Author:Cryo
 E-mail:cryo@cydem.zp.ua
 


Обсуждение статьи: Исследование Registry Studio 1.01 >>>


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



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


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