|
 |
|
Регистрация Eastegger 2.9 |
|
Прога Eastegger 2.9 это база данных пасхальных яиц. Она работает нормально без регистрации, но в справке упоминается о возможности бесплатной регистрации через интернет, после чего появляются дополнительные функции при работе с прогой. |
|
|
Регистрация Eastegger 2.9
Введение:
Прога Eastegger 2.9 это база данных пасхальных яиц. Она работает нормально без регистрации, но в справке упоминается о возможности бесплатной регистрации через интернет, после чего появляются дополнительные функции при работе с прогой. Для этой регистрации требуется назвать еще несколько пасхальных яиц, которых нет в данной версии проги. С желанием получить полнофункциональную версия продукта я решил “посмотреть” как программа реагирует на введенные данные…
Подробности:
При первом осмотре проги PEiD показал “Microsoft Visual Basic 5.0 / 6.0”. Я вначале огорчился, т.к. не представлял как проги на Basic’е вообще работают!:)
Взлом:
После предосмотра я уже не надеялся на успешный взлом, но запустив Олю (OllyDbg) я убедился в обратном:
Прога реально написана на Basic’е, но не в P-коде!!!:)
Попробуем найти место, где выводится сообщение о неудачной регистрации:
Загрузим в Олю наш файл (Eastegger 2.9.exe), затем внимательно осмотрим импорт, т.к. в проге на VB все через ж#пу! Находим нечто похожее на вывод сообщения (должно быть: rtcMsgBox), ставим на него бряк, запускаем прогу, вводим какую-нибудь х#йню и жмем по кнопке “Активировать”.
После этого падаем на бряке и видим следующее:
004D82E2 . 8D8D 7CF6FFFF LEA ECX,DWORD PTR SS:[EBP-984]
004D82E8 . FF15 18114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarDu>; MSVBVM60.__vbaVarDup
004D82EE . 8D8D 4CF6FFFF LEA ECX,DWORD PTR SS:[EBP-9B4]
004D82F4 . 51 PUSH ECX
004D82F5 . 8D95 5CF6FFFF LEA EDX,DWORD PTR SS:[EBP-9A4]
004D82FB . 52 PUSH EDX
004D82FC . 8D85 6CF6FFFF LEA EAX,DWORD PTR SS:[EBP-994]
004D8302 . 50 PUSH EAX
004D8303 . 6A 00 PUSH 0
004D8305 . 8D8D 7CF6FFFF LEA ECX,DWORD PTR SS:[EBP-984]
004D830B . 51 PUSH ECX
004D830C . FF15 64104000 CALL DWORD PTR DS:[<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox
004D8312 . 8D95 4CF6FFFF LEA EDX,DWORD PTR SS:[EBP-9B4]
004D8318 . 52 PUSH EDX
004D8319 . 8D85 5CF6FFFF LEA EAX,DWORD PTR SS:[EBP-9A4]
004D831F . 50 PUSH EAX
004D8320 . 8D8D 6CF6FFFF LEA ECX,DWORD PTR SS:[EBP-994]
004D8326 . 51 PUSH ECX
004D8327 . 8D95 7CF6FFFF LEA EDX,DWORD PTR SS:[EBP-984]
004D832D . 52 PUSH EDX
004D832E . 6A 04 PUSH 4
004D8330 . FF15 28104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVarList
004D8336 . 83C4 14 ADD ESP,14
004D8339 . C745 FC 180000>MOV DWORD PTR SS:[EBP-4],18
004D8340 . FF15 24104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaEnd>] ; MSVBVM60.__vbaEnd
На этом не следует останавливаться!!!
Пролистаем выше на 1273 строки:), и увидим следующее:
004D70CD . 68 CC754100 PUSH Eastegge.004175CC ; UNICODE "WFF8V-QQ27X-HXJ7C-QFQTJ-HKC86"
004D70D2 . FF15 90104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCm>; MSVBVM60.__vbaStrCmp
004D70D8 . F7D8 NEG EAX
004D70DA . 1BC0 SBB EAX,EAX
004D70DC . 40 INC EAX
004D70DD . F7D8 NEG EAX
004D70DF . 66:0BF0 OR SI,AX
004D70E2 . 8B8D 3CFBFFFF MOV ECX,DWORD PTR SS:[EBP-4C4]
004D70E8 . 51 PUSH ECX
004D70E9 . 68 0C764100 PUSH Eastegge.0041760C ; UNICODE "F4H4B-3KTWJ-CTK6Q-XYK4G-39WTY"
004D70EE . FF15 90104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCm>; MSVBVM60.__vbaStrCmp
004D70F4 . F7D8 NEG EAX
004D70F6 . 1BC0 SBB EAX,EAX
004D70F8 . 40 INC EAX
004D70F9 . F7D8 NEG EAX
004D70FB . 66:0BF0 OR SI,AX
004D70FE . 8B95 38FBFFFF MOV EDX,DWORD PTR SS:[EBP-4C8]
004D7104 . 52 PUSH EDX
004D7105 . 68 4C764100 PUSH Eastegge.0041764C ; UNICODE "DJKMY-YGVQM-BXYTG-J4XJB-43J7M"
004D710A . FF15 90104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCm>; MSVBVM60.__vbaStrCmp
004D7110 . F7D8 NEG EAX
004D7112 . 1BC0 SBB EAX,EAX
004D7114 . 40 INC EAX
004D7115 . F7D8 NEG EAX
004D7117 . 66:0BF0 OR SI,AX
004D711A . 8B85 34FBFFFF MOV EAX,DWORD PTR SS:[EBP-4CC]
004D7120 . 50 PUSH EAX
004D7121 . 68 8C764100 PUSH Eastegge.0041768C ; UNICODE "PYFPV-BKWB4-FPH7M-9XHMJ-9K3GJ"
004D7126 . FF15 90104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCm>; MSVBVM60.__vbaStrCmp
Если хорошо подумать, то что это может быть…конечно это возможные варианты регистрационных строк:) Если быть точным, то их будет 297.
После проверки мы убеждаемся, что это действительно серийные номера!:)
Для лучшего использования полученных нами данных выделим в Оле все необходимые нам строки и чтобы не мучаться напишем небольшую прогу на Delphi для выполнения автоматического выдирания строк регистрации. Я написал следующую:
procedure TForm1.Button1Click(Sender: TObject);
var
f,g:textfile;
buf, tmp:string;
i:integer;
begin
AssignFile(f,'1.txt');
AssignFile(g,'2.txt');
Reset(f);
Rewrite(g);
while not (eof(f)) do begin
ReadLn(f,buf);
tmp:='';
i:=0;
if pos('"',buf)<>0 then
begin
while buf<>'"'do
i:=i+1;
i:=i+1;
while buf[i]<>'"'do
begin
tmp:=tmp+buf[i];
i:=i+1;
end;
tmp:='("'+tmp+'"),';
WriteLn(g,tmp);
end
else Continue;
end;
CloseFile(f);
CloseFile(g);
end;
После выполнения этой проги у нас появляется файл “2.txt”, в котором содержатся все возможные серийные номера!:)
Но это еще не все! Теперь напишем генератор ключей на Visual C++ (у меня v6):
Для этого запустим Visual C++, кому как удобнее, но я выбрал MFC, создадим форму и добавим нужные компоненты, после чего создадим обработчик нажатия на кнопку генерации.
Для этого в самом начале текста проги объявим массив из наших серийников следующего вида:
char keys[297][30] =
{("H6KVY-23T9P-2JB43-GRX8G-V76YW"),
("T7MT4-XFVWT-X9XQB-RFPJC-H7RPW"),
("BBYFR-V64C6-VQ9FP-K9V9R-WXKW8"),
("KTPBH-GKHXF-QVQ8Q-RB66Q-2CG78"),
("VQ7T6-FTY84-RWT4P-GXQTW-WRCY8"),
("MGCJJ-G6G7B-QFM9X-X6HHC-CGR9M"),
…………………….
("DJKMY-YGVQM-BXYTG-J4XJB-43J7M"),
("PYFPV-BKWB4-FPH7M-9XHMJ-9K3GJ")
};
После этого объявим глобальную переменную целого типа и присвоим ей значение 0:
int i=0;
Далее при клике по нашей кнопке напишем следующий незамысловатый код:
SetDlgItemText(IDC_EDIT2,keys[i]);
if (i<297) i=i+1;
else i=0;
Теперь можно компилировать и в базу кряков:)
Но на этом мы не остановимся!!!
Взлом. Вариант2:
Хотелось бы узнать как и куда Eastegger 2.9 заносит наш серийник и другую регистрационную инфу!
Для достижения нашей цели прогоним Eastegger 2.9 через FileMon, осмотрим полученный список и увидим интересные названия файлов: Eastegger_city.dat, Eastegger_Register.dat, Eastegger_user.dat. Сразу бросается в глаза слово “Register”! Ок, заархивируем его, попробуем удалить все эти файлы. Запустим Eastegger 2.9 и видим, что от нас требуют снова зарегистрироваться! Делаем вывод: в этих файлах хранится регистрационная информация! Для проверки наших предположений пытаемся зарегистрироваться под другими данными и другим серийником… Затем вновь взглянем на подозрительный файл “Eastegger_Register.dat” и посмотрим его содержимое. Просто так на вскидку сказать трудно, но если прогнать этот и предыдущий (он сейчас в архиве) файлы через прогу сравнения файлов (я использовал WinMerge), то можно увидеть, что данные файлы ничем не различаются!!!
Можно предположить, что данный файл при успешной регистрации должен иметь именно такое содержание…
Проверим! Сохраняем этот файл(Eastegger_Register.dat) где-нибудь, регистрируемся вновь, удаляем наши 3 файла, запускаем вновь и видим, что регистрация не удалась, теперь помещаем туда наш Eastegger_Register.dat и видим что Прога зарегистрирована!:)
[i]
Автор: Error13Tracer
Все советы, пожелания и посылания Error13Tracer@rambler.ru |
|
|
Error13Tracer |
|
|
|