Serial fishing на примере Teleport Pro 1.29.1590
Перейти на главную страницу, индексную страницу.
Description : [WIN] Teleport Pro 1.29.1590
Crack subject : Trial limitation (40 uses only and 200 files per project)
Crack made by : Runtime_err0r
Crack made at : 26-04-2002
Comments : http://www.tenmax.com
Protection : (X)Beginner ( )Intermediate ( )Advanced ( )Expert
Time for hack : 00:10
Type of hack : Serial
Used packer : none
Used unpacker : none
File size : 851968 bytes
Src language : Visual C++
Price : $39.95 US
Used tools : TRW 1.22, calc.exe :-)))
Under Music : Ленинград "Пираты XXI века"
Внимание !!!
Данная статья носит образовательный характер и
предназначена для разработчиков программных защит.
Автор не несёт
никакой ответственности за возможное использование материалов данной
статьи в противозаконных целях.
А люди не летают, не летают как птицы
Оттого что отрастили большие ягодицы,
Оттого что нелётная погода,
Оттого что п-ползать нынче мода. |
В этой статье я хочу продемонстрировать на простом примере метод, который называется
"serial fishing". Прежде чем пояснить его суть я процетирую отрывок из книги KPNC
"Техника и философия хакерских атак": "Мир давно привык к тому, что популярные технологии
вовсе не обязательно бывают хорошими. Именно так произошло и в области защиты
условно-бесплатного программного обеспечения. Наибольшее распространение получила защита,
основанная на регистрации клиента. Слабость этого механизма в том, что регистрационный код,
генерируемый на основе имени пользователя, может быть проверен единственно возможным
способом: аналогичной генерацией и последующей сверкой."
Из этого следует, что совершенно не обязательно разбираться в тонкостях генерации серийного
номера и писать keygen, достаточно просто найти в программе тот момент, когда программа
сгенерировала правильный серийник и сравнивает его с введённым, затем посмотреть содержимое
нужного регистра и всё - правильный серийный номер у нас в руках !!!
Теперь от теории перейдём к практике. Прежде всего надо необходимо найти то
место в программе, где программа считывает введённые регистрационные данные
и сверяет их с правильными. Вариантов тут немного, в данном случае ставим бряку
на GetWindowText. Итак, запускаем TRW (подойдёт и SoftIce, но мне TRW нравится
больше), нажимаем кнопку Browse, выбираем C:\Program Files\Teleport Pro\pro.exe
и нажимаем кнопку Load. Всплывёт окошко TRW, нажимаем F5, запускается Teleport.
(Если вы уже являетесь зарегистрированным владельцем программы, то для выполнения
следующих действий найдите в реестре раздел HKEY_CURRENT_USER\Software\Tennyson Maxwell\Teleport Pro\User
и удалите ключ Registration)
Теперь входим в пункт меню Help -> Register... и вводим следующие данные:
Your Name: Runtime_error
Company:
Registration Code: 1234567890
Название компании можно ввести любое или вообще не вводить - в генерации
серийного номера оно не участвует. Теперь самое время запустить виндузовский калькулятор
и пересчитать наш серийник в hex, у меня получилось 499602В2.
Теперь нажимаем Ctrl-n всплывает окно TRW, теперь вводим pbx GetWindowText [Enter]
и Ctrl-n ещё раз. Теперь нажимаем кнопку OK, TRW брякнется где-то в недрах системной
библиотеки USER, жмём F12 3 раза и попадаем в код pro.exe:
0167:0044B3CF POP EBP
0167:0044B3D0 RET 0C
0167:0044B3D3 PUSH ESI
0167:0044B3D4 MOV ESI,[ESP+08]
0167:0044B3D8 PUSH EDI
0167:0044B3D9 MOV ECX,ESI
0167:0044B3DB PUSH DWORD [ESP+10]
0167:0044B3DF CALL 0044B1AA
0167:0044B3E4 XOR EDI,EDI
0167:0044B3E6 CMP [ESI],EDI
0167:0044B3E8 JZ 0044B400
0167:0044B3EA PUSH EDI
0167:0044B3EB PUSH EDI
0167:0044B3EC PUSH DWORD F0
0167:0044B3F1 PUSH EAX
0167:0044B3F2 CALL `USER32!SendMessageA`
0167:0044B3F8 MOV ECX,[ESP+14]
Тут ничего интересного нет - жмём F12 ещё раз, оказываемся здесь:
0167:00426735 POP EBX
0167:00426736 RET 04
0167:00426739 MOV EAX,004690B0
0167:0042673E RET
0167:0042673F MOV EAX,004638F0
0167:00426744 CALL 0042C3F8
0167:00426749 PUSH ECX
0167:0042674A PUSH ECX
0167:0042674B PUSH EBX
0167:0042674C PUSH ESI
0167:0042674D MOV ESI,ECX
0167:0042674F CALL 00440B04
0167:00426754 MOV EAX,[0047E484]
0167:00426759 MOV [EBP-14],EAX
0167:0042675C XOR EBX,EBX
0167:0042675E MOV [EBP-10],EAX
Тут тоже ничего интересного, жмём F12 ещё раз, попадаем сюда:
0167:004433D6 LEAVE
0167:004433D7 RET 04
0167:004433DA MOV EAX,ECX
0167:004433DC MOV ECX,[ESP+08]
0167:004433E0 AND DWORD [EAX+08],BYTE +00
0167:004433E4 MOV [EAX],ECX
0167:004433E6 MOV ECX,[ESP+04]
0167:004433EA MOV [EAX+04],ECX
0167:004433ED RET 08
0167:004433F0 PUSH EBP
0167:004433F1 MOV EBP,ESP
0167:004433F3 SUB ESP,BYTE +60
0167:004433F6 PUSH EBX
0167:004433F7 PUSH ESI
0167:004433F8 MOV ESI,ECX
0167:004433FA PUSH EDI
0167:004433FB MOV [EBP-08],ESI
Если теперь нажать F12 ещё раз, то программа Teleport выдаст окошко:
We're sorry! The registration number you entered appears to be invalid...
Поэтому дальше будем трассировать кнопкой F10, внимательно следя за значениями
регистров (если окно регистров не видно на экране, включите его командой wr).
После команды RET мы попадаем сюда:
0167:00426905 MOV EAX,[EDI+DD]
0167:0042690B XOR EBX,EBX
0167:0042690D PUSH BYTE +0A
0167:0042690F PUSH EBX
0167:00426910 PUSH EAX
0167:00426911 CALL 0042D274
После этого вызова значение регистра EAX изменится на 499602В2. Упс, да это же наш
серийный номер, смотрим дальше .....
0167:00426916 MOV ECX,[004820F8]
0167:0042691C ADD ESP,BYTE +0C
0167:0042691F MOV [EBP-18],EAX
Теперь наш серийник помещён по адресу [EBP-18].
0167:00426922 CMP [ECX+04DB],BL
0167:00426928 JZ NEAR 00426B40
0167:0042692E CMP EAX,EBX
0167:00426930 MOV ESI,0047DA00
0167:00426935 JZ NEAR 00426A41
0167:0042693B PUSH DWORD [EDI+D5]
0167:00426941 CALL 004272DC
0167:00426946 CMP [EBP-18],EAX
Теперь регистр EAX равен 42BFA2C2 и он сравнивается с введённым серийником. Интересно,
не так ли? Попробуем перевести его в десятичный формат (должно получиться 1119855298)
и ввести в окошко регистрации ....
Thank you! Your copy of Teleport Pro is now registered. All limits have been removed.
Типа, всё :-)))
Материалы находятся на сайте
http://cracklab.narod.ru/doc/