Простой Взлом - AriSoft DirectFTP v1.0
Оформил: DeeCo
Автор: http://www.cracklab.narod.ru
Page: http://home.coqui.net/alexr/index.htm
========== Вступление: ==========
Хороших ФТП клиентов мало, и такого чтобы меня удовлетворил от и до я ещё не
видел. Не стала исключением и эта программа. Однако кракать было нечего и я
решился.
========== Разведка местности: ==========
Я запустил программу и увидел окно с просьбой ввести своё имя и серийный
номер (далее - СН). Я ввел имя "vallkor" номер "123321" и нажал "Register"
полсе чего выскочил MessageBox с надписью "Invalid serial number".
========== Активные действия: ==========
Я загрузил DirectFTP.exe в W32DAsm v 8.93 (со всеми патчами :) и после
дизассемблирования я зашёл в String Reference и начал искать ту самую строку
"Invalid serial number". И нашел её вот тут:
* Possible StringData Ref from Data Obj ->"Invalid serial number"
|
:0041131F 68FA704B00 push 004B70FA
:00411324 8BC7 mov eax, edi
:00411326 E8D5540600 call 00476800
:0041132B 50 push eax
* Reference To: USER32.MessageBoxA, Ord:0000h
В таких ситуациях должно быть ещё одно сообщение типа "Good serial" или
"Thank you for 10 dollars, asso", причем в программе располагается все так:
call CheckSerialNumber(char name, char sn)
cmp cl,0
je BadMessage
GoodMessage:
call MessageBoxA
BadMessage:
call MessageBoxA
Это, конечно, очень грубо говоря, но смысл понятен. Т.е. нам надо найти
теперь строку хорошего сообщения. Для этого мы опять заходим в
String Reference и ищем сообщение об удачной регистрации или ещё чего-нить
типа этого и ...... находим строку:
* Possible StringData Ref from Data Obj ->"Thank you for registering "
|
:00410BD7 B843704B00 mov eax, 004B7043
:00410BDC E8EFD50900 call 004AE1D0
Теперь поищем чуть выше условные переходы и найдём вот что:
:00410B61 E88AD20900 call 004ADDF0
:00410B66 59 pop ecx
:00410B67 84C9 test cl, cl <--Если СН введён правильный
:00410B69 0F84F2040000 je 00411061 <--то НЕ прыгаем
:00410B6F 6A40 push 00000040
Т.е. Заменив je 00411061 на je 00410B6F мы вводя все что угодно будем
получать сообщение об удачной регистрации. Но наша цель получить настоящий
СН для своего имени. Смотрим чуть выше и видим:
:00410B1F 8D856CFFFFFF lea eax, dword ptr [ebp+FFFFFF6C]
:00410B25 8B00 mov eax, dword ptr [eax]
:00410B27 E810960800 call 0049A13C
:00410B2C E887630900 call 004A6EB8
:00410B31 3BD8 cmp ebx, eax <--В eax введенный нами СН, а в ebx - ПРАВИЛЬНЫЙ
Теперь достаточно находясь в SoftIce курсором на строке:
:00410B31 3BD8 cmp ebx, eax
посмотреть значение регистра eax:
:? ebx
0018F33A 0001635130 "у:"
Полученый десятичный вариант и будет правильным СН: 1635130
Вот, наверное, и все. Рабочий СН получен, а писать КейГен не буду, потому
как там основной цикл на 3 экрана, а ещё внутри всякая фигня. Короче не
стоит она того.
Исследовал и наваял туториал:
vallkor //PTDS
E-mail: vallkor@chat.ru (vallkor@etel.dn.ua)
Page: http://vallkor.chat.ru
|