Serial fishing на примере Teleport Pro 1.29.1590Description : [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. Типа, всё :-))) |