скрыть

скрыть

  Форум  

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

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



Google  
 

Teleport Pro Version 1.29



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

Я вот решил поисследовать что-нибудь известное, и наткнулся на этот замечательный продукт, который способен закачивать целиком целые сервера, причем делает он это с огромным количеством настроек. Вобщем неплохая вещь. И как мне и нужно было, эта прога имеет ограничение в использовании (её можно запускать только 40 раз), регистрация, как мне показалось, не оказалась сложноватой, и я решил покракать её.

Я запустил программу и очень удивился, когда не увидел ни одного наг-окна или ещё чего-нибудь. Я изменил пару байтиков в программе, чтобы проверить программу на присутствие CRC проверки и оказалось, что она есть!!! Выскочил messageboxA с надписью "This programm was alterd!" или около того, вобщем я открыл WDasm и дизассемблировал pro.exe, затем открыл String Reference и начал искать подозрительные строки и вот я натолкнулся на строку "This program's name has been changed" , я поменял имя программы с "pro.exe" на "pro-test.exe" и запустил программу, при этом выскочило сообщение с той самой строкой о неправильном имени! Я нажал на эту строку в WDasm'e и увидел вот что:

 *  Possible String Data Reffrom Data Obj - >" This program's name has been  changed;"
                                          - >" please rename the program to its"
                                          - >" original name."
                                                  |
  :0040B87F 6878C74700              push 0047C778
  :0040B884 E8A1FF0300              call 0044B82A
  :0040B889 6A02                    push 00000002
  :0040B88B E8BD240200              call 0042DD4D

  * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  |:0040B860(C), :0040B87B(C)
  |


  *  Possible String Data Reffrom Data Obj - >" q#P "
                                                  |
  :0040B890 A110C74700              mov eax, dword ptr [0047C710]
  :0040B895 8B4DE4                  mov ecx, dword ptr [ebp-1C]
  :0040B898 57                      push edi
  :0040B899 8B7804                  mov edi, dword ptr [eax+04]
  :0040B89C 8B45E8                  mov eax, dword ptr [ebp-18]
  :0040B89F 2BC1                    sub eax, ecx
  :0040B8A1 3BF8                    cmp edi, eax
  :0040B8A3 7322                    jnb 0040B8C7
  :0040B8A5 2BC7                    sub eax, edi
  :0040B8A7 83E808                  sub eax, 00000008
Я проскролил окно листинга до места входа в эту функцию:
* Referenced by a CALL at Address:
  |:00415298   ;отсюда вызывается процедура
  |
  :0040B82F B818074600              mov eax, 00460718
  :0040B834 E8BF0B0200              call 0042C3F8
  :0040B839 83EC10                  sub esp, 00000010
  :0040B83C 53                      push ebx
  :0040B83D 33DB                    xor ebx, ebx
  :0040B83F 56                      push esi
  :0040B840 53                      push ebx
  :0040B841 6A20                    push 00000020
  :0040B843 53                      push ebx
  :0040B844 8D4DE4                  lea ecx, dword ptr [ebp-1C]
  :0040B847 E8A665FFFF              call 00401DF2
  :0040B84C FF35185A4800            push dword ptr [00485A18]
  :0040B852 8D4DE4                  lea ecx, dword ptr [ebp-1C]
  :0040B855 895DFC                  mov dword ptr [ebp-04], ebx
  :0040B858 E8AD000000              call 0040B90A
  :0040B85D 395D08                  cmp dword ptr [ebp+08], ebx
  :0040B860 742E                    je 0040B890
  :0040B862 FF7508                  push [ebp+08]
  :0040B865 FF35185A4800            push dword ptr [00485A18]
  :0040B86B E89CF6FFFF              call 0040AF0C
  :0040B870 59                      pop ecx
  :0040B871 50                      push eax
Я перешел по адресу 00415298 (Shift-F12), по которому и происходил вызов процедуры проверки правильного имени файла, и увидел вот что:
  :0041528B 83EC40                  sub esp, 00000040
  :0041528E 53                      push ebx
  :0041528F 56                      push esi
  :00415290 57                      push edi
  :00415291 8BF1                    mov esi, ecx

  *  Possible String Data Reffrom Data Obj - >" pro.exe"
  |
  :00415293 687CDB4700              push 0047DB7C
  :00415298 E89265FFFF              call 0040B82F ;(*)вызов процедуры проверки
  :0041529D 8BCE                    mov ecx, esi

  *  Possible String Data Reffrom Data Obj - >" Tennyson Maxwell"
  |
  :0041529F C70424B8D84700          mov dword ptr [esp], 0047D8B8
  :004152A6 E87E5B0400              call 0045AE29

  *  Possible String Data Reffrom Data Obj - >" Teleport Pro"
  |
  :004152AB 684CD84700              push 0047D84C
  :004152B0 8D8E6D050000            lea ecx, dword ptr [esi+0000056D]
  :004152B6 E83FCDFEFF              call 00401FFA
  :004152BB FF35185A4800            push dword ptr [00485A18]
  :004152C1 8BCE                    mov ecx, esi

Как видите, по адресу :00415298 происходит вызов процедуры проверки. Чтобы проверки не было - достаточно забить nop'ами вызов этой процеддуры. Для этого открываем hex-editor, идём по указанному адресу и меняем "E89265FFFF" на "9090909090" - теперь можно менять имя файла на любое другое :) Но как оказалось в этой же функции происходит ПРОВЕРКА НА ИЗМЕНЕНИЯ В ИСПОЛНЯЕМОМ файле (то есть CRC проверка) - Что ОООЧЕНЬ ГЛУПО! Таким образом убрав эту проверку мы тем самым убрали и проверку CRC - теперь можно править файл pro.exe как душе угодно!

Теперь я запустил 40 раз программу, чтобы исчерпать все пробные запуски и после попытки закачать что-дибо увидел сообщение о том, что все 40 раз вышли! Я опять открыл String Reference и нашел нужную строку два раза вот тут:

  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  |:0041DA22(C)
  |
  :0041DA61 A1F8204800              mov eax, dword ptr [004820F8]
  :0041DA66 3898DD040000            cmp byte ptr [eax+000004DD], bl
  :0041DA6C 743D                    je 0041DAAB ; тут проверяют - истёк ли триал на 40 запусков 
                                                ; или нет и если не истек - прыгаем!
  :0041DA6E A184E44700              mov eax, dword ptr [0047E484]
  :0041DA73 8945EC                  mov dword ptr [ebp-14], eax

  * Possible Reference to String Resource ID= 070 58 : "Sorry! The free evaluation period fo..."
                                                  |
  :0041DA76 68921B0000              push 00001B92
  :0041DA7B 8D4DEC                  lea ecx, dword ptr [ebp-14]

  :0041DA7E C745FC04000000          mov [ebp-04], 00000004
  :0041DA85 E85B730200              call 00444DE5
  :0041DA8A 53                      push ebx
  :0041DA8B 57                      push edi
  :0041DA8C 57                      push edi
  :0041DA8D C745FC05000000          mov [ebp-04], 00000005
  :0041DA94 FF75EC                  push [ebp-14]
  :0041DA97 E8BD8EFFFF              call 00416959
  :0041DA9C 83C410                  add esp, 00000010
  :0041DA9F 834DFCFF                or dword ptr [ebp-04], FFFFFFFF
  :0041DAA3 8D4DEC                  lea ecx, dword ptr [ebp-14]
  :0041DAA6 E9BF000000              jmp 0041DB6A

Как видим, по адресу 0041DA6C, нужно заменить je 0041DAAB на jmp 0041DAAB и теперь мерзких сообщений мы не увидим и всё будет работать как надо!

Но строка о незарегестрированности находится два раза в String Reference первый раз мы уже разобрали, а второй вот:

  :00412D52 B814124600              mov eax, 00461214
  :00412D57 E89C960100              call 0042C3F8
  :00412D5C 83EC6C                  sub esp, 0000006C
  :00412D5F 53                      push ebx
  :00412D60 56                      push esi
  :00412D61 57                      push edi
  :00412D62 8BF9                    mov edi, ecx
  :00412D64 8D4D88                  lea ecx, dword ptr [ebp-78]
  :00412D67 E876300000              call 00415DE2
  :00412D6C 8B7508                  mov esi, dword ptr [ebp+08]
  :00412D6F 33DB                    xor ebx, ebx
  :00412D71 395D0C                  cmp dword ptr [ebp+0C], ebx
  :00412D74 895DFC                  mov dword ptr [ebp-04], ebx
  :00412D77 7434                    je 00412DAD ; здесь проверка нужно ли окно "О программе" 
                                                ; при запуске, если вышли 40 тестовых запуска. 
                                                ; Если не нужно - прыгаем!
  :00412D79 A184E44700              mov eax, dword ptr [0047E484]
  :00412D7E 89450C                  mov dword ptr [ebp+0C], eax

  *  Possible Reference to String Resource ID=070 58 : "Sorry! The free evaluation period for..."
                                                  |
  :00412D81 68921B0000              push 00001B92
  :00412D86 8D4D0C                  lea ecx, dword ptr [ebp+0C]
  :00412D89 C645FC01                mov [ebp-04], 01
  :00412D8D E853200300              call 00444DE5
  :00412D92 8D450C                  lea eax, dword ptr [ebp+0C]
  :00412D95 8D4DF0                  lea ecx, dword ptr [ebp-10]

Как вы уже догадались, по адресу 00412D77, нужно чтобы мы всегда прыгали, поэтому меняем je 00412DAD на jmp 00412DAD и при запуске никаких напоминаний не будет!

Ну а для самых ленивых готовый крак:
--------вырезать тут------
TeleportPro v1.29 Crack by vallkor//PTDS (vallkor@chat.ru)

removes all limits :)
pro.exe
00015298: E8 90
00015299: 92 90
0001529A: 65 90
0001529B: FF 90
0001529C: FF 90
0001DA6C: 74 EB
00012D77: 74 EB
--------вырезать тут------

PS: статья написана только в образовательных целях, чтобы показать компаниям на возможные дыры в защите своих продуктов! Если вам понравилась описанная программа - вы обязаны купить её!!!

исследовал и наваял туториал:
vallkor //PTDS (vallkor@chat.ru)
{Комманда PTDS нуждается в новых членах! Если вы считаете, что способны на многое и хотите поделиться своими знаниями и взамен получить новые пишите мне}






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




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