Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
AntiAON v2.0 by HellLabs

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

Описание: эта программа представляет собой Анти Автоматический Определитель Номера. (это как в анекдоте про АнитАнтиАнтиАон) Программа довольно-таки славная, хоть мне так и не удалось обмануть свой собственный аон (МЕЛТ-25).

Я кранул эту программу двумя способами: 1) !!!Убираем втупую все сообщения и триал!!! Программа имеет 10-дневный триальный период, после чего отказывается выполнять свои прямые функции, т.е. препятствовать определению нашего номера. Заёмемся этим, ведь зелёных у нас не много. Итак, я перевёл время на 10 дней вперёд и посмотрел на реакцию программы: при старте выскакивает сообщение "Триал вышел". а на выходе из программы появляется сообщение "Спасибо за использование пробной версии!" Т.к. эти сообщения на русском, то будет бесполезно их искать в WDasm'овском String REference, поскольку он совсем не понимает кирилицу. Поэтому откроем antiaon2.exe в хекс-редакторе и поищем эти строки вручную, а когда найдем - впишем вместо первой что-нибудь на английском (я написал "FUCKOFF") а виесто второй "FuckOFF2". Теперь сохраняем изменения и начинаем дизассемблировать antiaon2.exe в WDasme'e. После этого открываем String Reference и ищем первую введенную нами строку (FUCKOFF) а когда нашли - кликаем на ней, чтобы попасть в листинг:

  * Reference CALL at Addresses:
  |:00402E5D,:004045FB,:00404D30 ;это адреса, по которым происходит вызов сообщений об окончании триальности
  |
  :004051DB 55                      push ebp
  :004051DC 8BEC                    mov ebp, esp
  :004051DE 81EC80000000            sub esp, 00000080
  :004051E4 56                      push esi
  :004051E5 8BF1                    mov esi, ecx
  :004051E7 837E5C00                cmp dword ptr [esi+5C], 00000000
  :004051EB 7415                    je 00405202
  :004051ED 85F6                    test esi, esi
  :004051EF 7403                    je 004051F4
  :004051F1 8B761C                  mov esi, dword ptr [esi+1C]


  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  |:004051EF(C)
  |
  :004051F4 6A30                    push 00000030

  *  Possible StringDataRef fromData Obj - >"AntiAON v2 "
  |
  :004051F6 687C644300              push 0043647C

  *  Possible StringData Ref from  Data  Ob j - >"FUCKOFF"
  |
  |
  :004051FB 68DC674300              push 004367DC
  :00405200 EB34                    jmp 00405236

  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  |:004051EB(C)
  |
  :00405202 8B86580A0000            mov eax, dword ptr [esi+00000A58]
  :00405208 2B86540A0000            sub eax, dword ptr [esi+00000A54]
  :0040520E 83C00F                  add eax, 0000000F
  :00405211 50                      push eax
  :00405212 8D4580                  lea eax, dword ptr [ebp-80]
  :00405215 6870674300              push 00436770

  :0040521A 50                      push eax

  * Reference To: USER32.wsprintfA, Ord: 02ACh
  |
  :0040521B FF1590C44200            Call dword ptr [0042C490]
  :00405221 83C40C                  add esp, 0000000C
  :00405224 85F6                    test esi, esi
  :00405226 7403                    je 0040522B
  :00405228 8B761C                  mov esi, dword ptr [esi+1C]

Итак, по трём адресам (:00402E5D,:004045FB,:00404D30) происходит вызов процедуры показа сообщений либо о количестве дней оставшегося триала, либо об окончании триала. Теперь нужно пойти по этим адресам и попытаться обойти эти сообщения, для начала посмотрим, что происходит по первому адресу (:00402E5D) :

  :00402E51 E8BA220000              call 00405110 ;проверяем зарегестрированны ли мы
  :00402E56 395E60                  cmp dword ptr [esi+60], ebx
  :00402E59 7507                    jne 00402E62 ;если да - то прыгаем
  :00402E5B 8BCE                    mov ecx, esi
  :00402E5D E879230000              call 004051DB ;если не прыгнули - вызываем процедурку с сообщениями!

  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  |:00402E59(C)
  |
  :00402E62 3BF3                    cmp esi, ebx
  :00402E64 7403                    je 00402E69
  :00402E66 8B5E1C                  mov ebx, dword ptr [esi+1C]

Как видно, по адресу 00402E59 происходит проверка на необходимость выдачи ненужных нам сообщений. Здесь достаточно заменить jne 00402E62 на jmp 00402E62 и при старте программа никогда не выдаст вредного сообщения! Но когда пытаешься позвонить кому-нить, то опять выскакивают противные сообщения, это потому, что по двум другим адресам (004045FB,:00404D30) проверки не убраны, поэтому идем по адресу 004045FB и видим:

  :004045F2 56                      push esi
  :004045F3 8BF1                    mov esi, ecx
  :004045F5 837E6000                cmp dword ptr [esi+60], 00000000
  :004045F9 7505                    jne 00404600 ; опять проверка
  :004045FB E8DB0B0000              call 004051DB ;если не прыгнули - сообщения!

Та же история, меняем по адресу 004045F9 строку jne 00404600 на jmp 00404600! Теперь идём по последнему адресу (00404D30) :

  :00404D1E 56                      push esi
  :00404D1F 8BF1                    mov esi, ecx
  :00404D21 6A01                    push 00000001
  :00404D23 E8D9C10100              call 00420F01
  :00404D28 837E6000                cmp dword ptr [esi+60], 00000000
  :00404D2C 7507                    jne 00404D35 ; снова проверка
  :00404D2E 8BCE                    mov ecx, esi
  :00404D30 E8A6040000              call 004051DB ; снова сообщения, если не прыгнули

  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  |:00404D2C(C)
  |
  :00404D35 837E5C00                cmp dword ptr [esi+5C], 00000000
  :00404D39 7534                    jne 00404D6F ;а вот тут ещё одна проверка! Её тоже надо убрать!
  :00404D3B 8D8E34040000            lea ecx, dword ptr [esi+00000434]
  :00404D41 E869CC0100              call 004219AF
  :00404D46 85C0                    test eax, eax
  :00404D48 751C                    jne 00404D66
  :00404D4A 85F6                    test esi, esi
  :00404D4C 7403                    je 00404D51
  :00404D4E 8B761C                  mov esi, dword ptr [esi+1C]

Опять меняем по адресу 00404D2C строку jne 00404D35 на jmp 00404D35! Но тут ещё одна проверка чуть ниже (00404D39) тут надо поменять строку jne 00404D6F на jne 00404D3B, чтобы никуда не прыгать. И, наверное, всё!

Теперь уберём сообщение во время завершения работы "благодарим за использование..." Мы вначале заменили в хекс-редакторе эту строку на английские символы, поэтому поищим в String REference то, что мы ввели (я ввел "FuckOFF2"), после того, как нашли - кликаем и оказываемся тут:

  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  |:00402FD7(U)
  |
  :00402FDC 6A40                    push 00000040

  * Possible StringData Ref from Data Obj - >"AntiAON v2 "
  |
  :00402FDE 687C644300              push 0043647C

  * Possible StringData Ref from Data Obj - >"FUCKOFF2"
  |
  :00402FE3 6888644300              push 00436488
  :00402FE8 50                      push eax
  :00402FE9 FFD3                    call ebx

Как видите, эта процедура вызывается из одного единого места (00402FD7) перейдём по этому адресу и видим:

  :00402FB0 8BCE                    mov ecx, esi
  :00402FB2 E82F020000              call 004031E6
  :00402FB7 8D8EB8000000            lea ecx, dword ptr [esi+000000B8]
  :00402FBD E8D8260000              call 0040569A ;вызов проверки
  :00402FC2 837E6000                cmp dword ptr [esi+60], 00000000
  :00402FC6 7523                    jne 00402FEB ;если не нужно сообщения - прыгаем
  :00402FC8 6A00                    push 00000000
  :00402FCA 8BCE                    mov ecx, esi
  :00402FCC E8A4EA0100              call 00421A75
  :00402FD1 85F6                    test esi, esi
  :00402FD3 7504                    jne 00402FD9
  :00402FD5 33C0                    xor eax, eax
  : 00 402 FD 7 E B0 3              jmp 00402FDC ;если не прыгнули - выводим сообщение

Здесь просто меняем по адресу 00402FC6 строку jne 00402FEB на jmp 00402FEB и при завершении работы программы никаких сообщений мы не увидим! Всё! Программа кракнута, можно конечно ещё заменить в хекс-редакторе надпись "НЕЗАРЕГЕСТРИРОВАННАЯ КОПИЯ" на "Зарегестрированно на Валлкора", но это уже на любителя!

Ну и как всегда, для самых ленивых готовый крак:
-----вырезать тут----------
HellLabs AntiAon 2.0 crack by vallkor//PTDS

removes trial and all messages!
antiaon2.exe
00002E59: 75 EB
00004D2C: 75 EB
00004D3A: 34 00
00002FC6: 75 EB
000045F9: 75 EB
00004605: 09 00
00036752: CD 2D
00036753: C5 20
0003681C: 48 76
0003681D: 65 61
00036820: 20 6B
00036821: 6C 6F
00036822: 61 72
00036823: 62 20
00036824: 73 20
00036826: 54 20
00036827: 65 20
00036828: 61 20
00036829: 6D 20
0003682D: F0 EE
0003682E: EE EB
0003682F: E1 ED
00036830: ED E0
00036831: E0 FF
00036832: FF 20
-----вырезать тут----------

2) Второй способ: подправляем процедуру регистрации, чтобы в любом случае мы были зарегистрированны!

Итак, когда в первой части туториала мы искали надпись "благодарим за использование программы", то рядом я случайно увидел надпись "Спасибо за регистроцию", я её тоже заменил на "fuckoff3", чтобы потом найти эту строку в WDasm'e и после дизассемблирования я открыл String Reference и нашел там эту самую строку (fuckoff3) кликнул на неё и оказался тут:

  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  |:00404FBB(C)
  |
  :00404FC0 6A40                    push 00000040

  *  Possible StringData Ref from Data Obj - >" AntiAON v2 "
  |
  :00404FC2 687C644300              push 0043647C

  *  Possible StringData Ref from Data Obj - >"fuckoff3"
  |
  :00404FC7 681C674300              push 0043671C
  :00404FCC 56                      push esi

Как видно из листинга, эта процедура вызывается только по одному адресу 00404FBB, идём по этому адресу и видим:

  :00404FAA E89D000000              call 0040504C ;процедура проверки Рег. информации
  :00404FAF 85DB                    test ebx, ebx
  :00404FB1 7420                    je 00404FD3
  :00404FB3 837E6000                cmp dword ptr [esi+60], 00000000
  :00404FB7 741A                    je 00404FD3
  :00404FB9 85F6                    test esi, esi
  :00404FBB 7403                    je  00404FC0 ;если проверка провалилась - прыгаем!
  :00404FBD 8B761C                  mov esi, dword ptr [esi+1C]

Здесь нужно посмотреть, что же происходит в самой процедуре проверки, чтобы её чуть-чуть изменить. Идём по адресу 0040504C и видим вот этот код:

  * Referenced by a CALL at Addresses:
  |:00402E4A   , :00404F3E   , :00404FAA   ;процедуру проверки вызывают из трёх мест (при старте, при дозвоне, при выходе)
  |
  :0040504C 55                      push ebp
  :0040504D 8BEC                    mov ebp, esp
  :0040504F 83EC10                  sub esp, 00000010
  :00405052 53                      push ebx
  :00405053 56                      push esi
  :00405054 8BF1                    mov esi, ecx
  :00405056 57                      push edi
  :00405057 6844674300              push 00436744
  :0040505C 83666000                and dword ptr [esi+60], 00000000
  :00405060 E8F4C80100              call 00421959 ;проверяем длинну нашего имени
  :00405065 80BE240A000000          cmp byte ptr [esi+00000A24], 00
  :0040506C 8D9E240A0000            lea ebx, dword ptr [esi+00000A24]
  :00405072 745F                    je 004050D3 ;если меньше 1 - прыгаем
  :00405074 80BE040A000000          cmp byte ptr [esi+00000A04], 00
  :0040507B 8DBE040A0000            lea edi, dword ptr [esi+00000A04]
  :00405081 7450                    je 004050D3 ; если Р.Н. меньше 1 - прыгаем
  :00405083 8D45F0                  lea eax, dword ptr [ebp-10]
  :00405086 50                      push eax
  :00405087 53                      push ebx
  :00405088 57                      push edi
  :00405089 E880D5FFFF              call 0040260E
  :0040508E 8D86440A0000            lea eax, dword ptr [esi+00000A44]
  :00405094 6A0F                    push 0000000F
  :00405096 50                      push eax
  :00405097 8D45F0                  lea eax, dword ptr [ebp-10]
  :0040509A 50                      push eax
  :0040509B E830BC0000              call 00410CD0 ;сравниваем наш РН и правильный
  :004050A0 83C418                  add esp, 00000018
  :004050A3 85C0                    test eax, eax
  :004050A5 7419                    je 004050C0 ;если равны - прыгаем!
  :004050A7 6A20                    push 00000020
  :004050A9 6A00                    push 00000000
  :004050AB 53                      push ebx
  :004050AC E88FB10000              call 00410240
  :004050B1 6A20                    push 00000020
  :004050B3 6A00                    push 00000000
  :004050B5 57                      push edi
  :004050B6 E885B10000              call 00410240
  :004050BB 83C418                  add esp, 00000018
  :004050BE EB13                    jmp 004050D3

здесь нужно поменять три строки:
1 по адресу 00405072 строку je 004050D3 на je 00405074
2 по адресу 00405081 строку je 004050D3 на je 00405083
3 по адресу 004050A5 строку je 004050C0 на jmp 004050C0

ВСЁ! Программа ведёт себя, как зарегестрированная!

И для этого случаю тоже крак:
---------вырежь тут--------
Another HellLabs AntiAon 2.0 crack by vallkor//PTDS

removes trial and all messages!
antiaon2.exe
00005073: 5F 00
00005082: 50 00
000050A5: 74 EB
---------и тут-------------

ЗЫ: мне больше понравился второй метод взлома программы, но первый тоже описал, чтобы вы могли кракнуть программу, если процедура проверки вами не найдена. Решайте сами, что прикольнее!

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

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