Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Как узнать пароли игроков в Marriage For Windows v 2.3.

Обсудить статью на форуме

Хорошая подборка видеоуроков, инструментов крэкера, книг и статей - здесь.

Инструменты:

1) SoftIce
2) HView

Все заядлые игроки в преферанс наверняка сталкивались с этой
чудесной реализацией вечной игры. Однако, когда кто-то играет лучше
тебя, то хочется ему все испортить, но не тут то было - вход в игру
может быть закрыт паролем. А как же его узнать???
В прошлом исследовании мы нашли место, где проверяется
введенный нами пароль с тем, который записан в реестре, вот это место:

015F:004C9792 807DFF00 CMP BYTE PTR [EBP-01],00 <--проверяют совпадают ли длины паролей
015F:004C9796 7447 JZ 004C97DF <--если нет - прыжок
015F:004C9798 8D55F0 LEA EDX,[EBP-10]
015F:004C979B 8B45F8 MOV EAX,[EBP-08]
015F:004C979E 8B80DC020000 MOV EAX,[EAX+000002DC]
015F:004C97A4 E8B394F6FF CALL 00432C5C
015F:004C97A9 8B45F0 MOV EAX,[EBP-10] <--адрес нашего пароля
015F:004C97AC 8B5374 MOV EDX,[EBX+74] <--адрес правильного пароля
015F:004C97AF E884A8F3FF CALL 00404038 <--сравниваем
015F:004C97B4 750F JNZ 004C97C5 <--если равны - НЕ прыгаем

Я обнаружил, что правильный пароль расшифровывается из реестра при
запуске программы, т.к. когда я его изменил в памяти, то при следующих
попытках ввода пароля мой изменённый пароль принимался за правильный.

Нам нужно найти место в программе, где зашифрованная строка
расшифровывается.

Я нашел это место, (а вы?):

015F:004B0759 8B95ACFCFFFF MOV EDX,[EBP-0354] <--"users\user#"
015F:004B075F A188484F00 MOV EAX,[004F4888] <--
015F:004B0764 8B00 MOV EAX,[EAX] <--00243745h
015F:004B0766 B998094B00 MOV ECX,004B0998 <--"Password"
015F:004B076B E88038FAFF CALL 00453FF0 <--читаем и расшифровываем
015F:004B0770 8B95B0FDFFFF MOV EDX,[EBP-0250] <--адрес уже расшифрованного пароля
015F:004B0776 8D4674 LEA EAX,[ESI+74] <--
015F:004B0779 E88235F5FF CALL 00403D00 <--

Значит по здесь:
015F:004B0770 8B95B0FDFFFF MOV EDX,[EBP-0250]
пароль уже расшифрован. А что если не разгадывать алгоритм шифра,
а просто после того, как пароль расшифрован показать его!
Итак, будем встраивать свою процедуру. Для этого нужно:
1) по адресу 004B0770 сделать безусловный переход на место, куда мы
впишем нашу процедуру:
015F:004B0770 jmp 004F1C10
2) По адресу 004F1C10 напишем нашу процедуру.
3) востановим затертую прыжком операцию:
mov edx,[ebp-0250]
4) в самом конце прыжок назад:
jmp 004B0776

После изменений:
(1)
.004B076B: E88038FAFF call .000453FF0 -------- (1)
.004B0770: E99B140400 jmp .0004F1C10 -------- (2)
.004B0775: 90 nop
.004B0776: 8D4674 lea eax,[esi][00074]
(2)процедура вывода паролей:
.004F1C10: 8B95B0FDFFFF mov edx,[ebp][0FFFFFDB0]
.004F1C16: 50 push eax
.004F1C17: 8D4679 lea eax,[esi][00079]
.004F1C1A: 6A00 push 000
.004F1C1C: 50 push eax
.004F1C1D: 52 push edx
.004F1C1E: 6A00 push 000
.004F1C20: E86FF6F0FF call MessageBoxA ;user32.dll
.004F1C25: 83EC10 sub esp,010 ;""
.004F1C28: 58 pop eax
.004F1C29: 5A pop edx
.004F1C2A: 58 pop eax
.004F1C2B: 58 pop eax
.004F1C2C: 58 pop eax
.004F1C2D: E944EBFBFF jmp .0004B0776 -------- (2)

Теперь программа при запуске показывает MessageBox в заголовке
которого имя игрока а в тексте - его пароль. Таких сообщений будет
ровно столько, сколько игроков. Если игрок не назначил пароль, то
сообщение выводиться не будет.

ЗЫ: теперь вы можете всегда узнать пароль другого человека, имея
"исправленную" версию marriage.exe
Но это делать низзя, т.к. это прямое нарушение авторских прав.
А вся эта статья только для того, чтобы обучить вас встраивать свой
же код в свои же программы!
До следующих встреч.

Исследовал и наваял туториал:
vallkor //PTDS
E-mail: vallkor@chat.ru
Page: http://vallkor.chat.ru



Обсуждение статьи: Как узнать пароли игроков в Marriage For Windows v 2.3. >>>


Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS