Исследование CD-Spectrum Pro 2000

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Оформил: 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 нуждается в новых членах! Если вы считаете, что способны на многое и хотите поделиться своими знаниями и взамен получить новые пишите мне}

{/codecitation}

Добавить комментарий