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

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

Итак, эта тулзень настолько мне понравилась, что я даже вижжу от радости :)
Но мне захотелось посмотреть, как устроена регистрация этой программки, хочу сразу сказать, что программа не проявляет никаких признаков незарегистрированности, кроме надписи Unregistred в окне "О программе"
Но жажда приключений зовёт в путь...

Необходимые инструменты:

1)SoftIce
2)Нервы
3)Мозг не обязателен (нафиг вам мозги??? - хай комп думает)

Поехали:
Я запускаю программу, открываю окно "About", ввожу имя: vallkor, РН: 123321 ставлю бряк в айсе: bpx MessageBoxA и нажимаю кнопку "Enter" (в программе, а не на клаве), при этом выскакиваю в айсе и нажимаю 2 раа F12, чтобы вернуться из системной библиотеки, мы тут:
015F:10016C18  E853ECFEFF          CALL      10005870
Теперь посмотрим выше в поисках условного перехода, который мог привести к такому грустному сообщению, и в 10 строках выше видим:
015F:10016BF1  E89A000000          CALL      10016C90 <-- вызов процедуры проверки
015F:10016BF6  83C404              ADD       ESP,04
015F:10016BF9  85C0                TEST      EAX,EAX
015F:10016BFB  740E                JZ        10016C0B <--ЕСЛИ Неправильный РН - прыгаем на плохое сообщение
Зайдём в процедуру проверки (F8) и, проскролив совсем немного, видим:
015F:10016D08  E873FCFFFF          CALL      10016980 <--сравниваем наш РН с правильным
015F:10016D0D  83C408              ADD       ESP,08
015F:10016D10  85C0                TEST      EAX,EAX
015F:10016D12  0F84E2000000        JZ        10016DFA <--прыжок, если не равны
Как окажется потом, нам правильный РН и не нужен. Итак, когда будет выполняться условный переход
JZ        10016DFA
нужно изменить флаг ZF на противоположный, чтобы не прыгнуть, а посмотреть, что же будет делать программка, если наш и правильный РН окажутся одинаовыми. После того, как мы это изменили, посмотрим, что же делает дальше программка:
...поскипано не нужное...
015F:10016DAE  52                  PUSH      EDX <--в edx имя файла: c:\Program Files\Apserver\Aon.key
015F:10016DAF  FF15FCD00110        CALL      [KERNEL32!CreateFileA] <--создаём файл с таким именем
...поскипано...
015F:10016DBD  8B1D2CD10110        MOV       EBX,[KERNEL32!WriteFile] <--заганяем в ebx адрес функции записи в файл
потом в файл делается две записи:
1).pН
2)456654
ydoonru
Нетрудно даже невооруженным глазом определить, что первая запись (.pН) указывает на то, что в фале хранится регистрационная информация а вторая запись (456654 ydoonru) - это наш РН и имя пользователя, разделённые символомами (), каждый символ РН и имени пользователя увеличен на 3, т.е.
456654 = 123321
ydoonru = vallkor
Пробуем теперь перезапустить программу... и видим, что в окне "About" наше имя в качестве зарегистрированного пользователя, с чем мы себя и поздравляем :) Теперь каждый может таким вот образом при помощи софтайса создать себе такой файлик и наслаждаться жизнью.
При попытке изменения вручную файла Aon.key у меня в окне о программе опять появилась надпись Unregistred, т.е. в тех неизвестных байтах () хранится что-то типа проверочной суммы (Check Sum), но разбираться мне уже было лень, да и зачем, ведь рабочий файлик получен и за 40 секунд такой же самый можно сделать для любого имени!
ВсЁ!

PS: Если бы имел лишние бабки - обязательно бы заплатил за такую чудную программку, чеснслово :) чего и вам желаю.

Исследовал и наваял туториал:
vallkor //PTDS
E-mail: vallkor@chat.ru
Page : http://vallkor.chat.ru

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования