скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Исследование 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






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook