Исследование CD-Spectrum Pro 2000
Оформил: DeeCo
Автор: http://www.cracklab.narod.ru
Эта програмка заменяет стандартный проигрыватель компактов в Форточках и ещё
целая куча возможностей. Вобщем как потом оказалось, это shareware версия, но
вся её шароварность в том, что появляются напоминающие НАГлые окна с
напоминанием о регистрации (может ещё что-нибудь). Мне захотелось
посмотреть, что же за защита у программы.
Я открыл "О программе" затем выбрал вкладку "Ввестии рег. код", в поле имя
ввёл "vallkor" в поле пароль ввёл "123321". И нажал на Submit. После этого
выскочило подозрительное окошко с информацией о неверном коде (окошко
подозрительно выглядело, было похоже на Делфийское окошечко :()
Ну да ничего! Я захожу в айс и сталю брекпоинты:
bpx GetWindowTextA
bpx GetDlgItemTextA
"А" в конце, т.к. это 32 битная программа (о чём я узнал из хелпа).
и выхожу из айса, опять ввожё пароль (т.к. его стёрла программа после первого
нажатия на "Submit". И выскакиваем в айс.
Значит имя считалось, но нам надо чтобы и пароль наш считался, для этого
выходим из айса (F5), но тут же опять вываливаемся в него. Вот! Считался и
пароль. Но мы находимся в какой-то системной библиотеке, чтобы вернуться в
нашу программу нажимаем F11, и мы оказываемся тут:
call edi ; здесь читаем наш рег. номер
lea eax, [ebp-40]
push eax
call 00403704
mov dword ptr [esp], 0040A060
push esi
push ebx
mov edi, eax
call [user32!SetDlgItemTextA] ; убираем рег. номер из EditBox'a
lea eax, [ebp-00C0]
push eax
push edi
call 0040315B ;(*) собственно процедура проверки
pop ecx
test eax, eax ; смотрит результаты проверки
pop ecx
jz 00401DC7 ; если всё ок, то не прыгаем
xor esi, esi
Как видно из этого листинга тут всего одна подозрительная процедура (я её
обозначил (*). Значит будем искать там, итак, когда курсор айса будет на
этой пройедуре, то чтобы зайти в неё нужно нажать F8, после этого мы здесь:
push esi
push edi
mov edi, [esp+0C] ; в edi записали наш РН (123321)
push 04
push edi
call 00402DE4 ;(*) зайдем сюда по F8 и увидим:
push ebp
mov ebp, esp
push esi
push edi
mov edi, [ebp+08] ; в edi записали наш РН (123321)
mov eax, 0000C797 ;(*) в eax записали ПРАВИЛЬНЫЙ РН!(чтобы его увидеть
нужно ввести комманду "? eax" и вам высветится ваш РН
У меня был - 51095)
cmp edi, eax ; сравнивают наш РН (123321) и правильный (51095)
ja 00402EE2 ; еслин не равны - прыгаем
Вот собственно и всё! Теперь можно убрать все бряки из айса (bc *) и выйти
из него. Теперь вводим найденный нами РН и пользуемся зарегестрированной
версией и всеми последующими апдейтами!!!
Да, кстати, судя по всему правильный РН сгенерировался сразу после прочтения
имени (vallkor), что довольно необычно, поскольку обычно генерят после
прочтения и имени и введенного РН.
И вот ещё что, эта статья написана только в образовательных целях, поэтому
если вам понравилась программа CD/Spectrum Pro 2000, то купите её за 20$
Исследование провёл и изложил это всё в туториал:
vallkor //PTDS (vallkor@chat.ru)
{Комманда PTDS нуждается в новых членах! Если вы считаете, что способны
на многое и хотите поделиться своими знаниями и взамен получить новые
пишите мне}
|