AntiAON v2.0 by HellLabs

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

———и тут————-

 

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

Добавить комментарий