Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
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 нуждается в новых членах! Если вы считаете, что способны на многое и хотите поделиться своими знаниями и взамен получить новые пишите мне}

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay