Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Как получить Регистрационный Номер для Sceleton ScreenSaver

Оформил: DeeCo
Автор: http://www.cracklab.narod.ru

Взять программу можно тут: http://psy.plex.ru
или тут: http://www.bik.donetsk.ua/pc_club/ в разделе software)
tutorial by vallkor (vallkor@chat.ru)

В руки мне попался этот скринсевер и, впринципе, мне понравился. На самом деле, это скорее всего обысная модель из 3dStudioMax, ну да ладно, не об этом я. Так вот, скачал я эту программу и хотел на нее посмотреть, но жестоко обломался, когда увидел надпись на экране: "Зарегестрировать можно на psy.plex.ru". Ну, думаю, люди ваще офигели: даже в скринсейвера встраивают регистрацию. Как оказалось - регистрация бесплатна, но для этого нужно лезть в инет и искать что-то, т.к. у меня с инетом напряг, то лучше я её ломану :)
Я открыл свойства рабочего стола, потом "Заставка", выбрал в меню заставок "Sceleton" и потом выбрал "Настройки", затем нажимаю "Register" и что же я вижу:
"После регистрации текст с экрана исчезнет" - очень приятно Ж)
Рег. имя:
Рег. номер:
Вводим vallkor/123321 окрываем СофтАйс (далее айс) и ставим брекпоинт bpx GetWindowTextA и нажимаем OK.
брык! Выскочили в айсе, так, значит нажимаем F5, чтобы программа и наш регистрационный номер считала. Опа! Опять выскочили в айсе.
Теперь нажимаем F11 чтобы выйти из вызова функции. И попадаем сюда:
lea edx,[ebp-08]
lea eax,[ebp-020C] ;в eax введенный нами РН
call 0040791C
mov edx,[ebp-08]  ;в edx введенный нами РН
mov eax,[ebp-04]  ;в eax введенное нами имя
call 0043A7F4     ;вызов функции генерации и проверки РН
Зайдем в эту функцию (F8) и вывалимся тут:

push ebp
mov ebp, esp
add esp, -10
push ebx
xor ecx, ecx
Это не то всё! Поэтому идем вниз по программе (F10) пока не наткнемся на это место:
call 0043A6FC ;здесь и "куют" нужный нам РН
mov eax,[ebp-0C] ;здесь нужный нам РН! нажимай d eax и он твой! (1)
mov edx,[ebp-08] ;а это введенный нами (2)
call 00403BB0    ;а это проверка наших РН'ов
Итак, как уже было сказано и показано в строке (1) в eax записывается сгенерированный РН, поэтому в строке (2) вводим d eax и в окне памяти в айсе мы видим нужный РН, пишем его на бумагу, закрываем айс, вводим его вместо "123321" и можно пользовать.
ЗЫ: как оказалось впоследствие сгенерированный РН не затирается даже после сообщения о неверном РН, что ООЧень глупо! Поэтому можно было сделать так:
s ds:0 l ffffffff "123321" и рядом в памяти валялся бы нужный нам номер!
ЗЗЫ: спасибо автору icedump'a за встроенный тетрис :)

Все пожелания и оскорбления присылайте сюда: vallkor@chat.ru

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay