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.

Типа, всё :-)))


<= Вернуться к статьям