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

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


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

Странный случай в MVP Bridge

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

Очень удобно, когда все крэкерские инструменты, книги и статьи в одном месте. Используйте сборник от EXELAB - вот тут.

Автор: Demode <r091003@km.ru>

Цель данной статьи изучение весьма странного случая. . .

Цель - MVP_Bridge_for_Windows_v3.40

Программу можно найти: http://www.mvpsoft.com/soft-card.html

Инструментарий:

HIEW - no comment

Wdsm10K - no comment

К сожалению, все остальные полезные инструменты в этом случае нам не помощники. . .

Итак : PEiD показывает, что "Not a valid PE file" ! ! !

Судорожные попытки использовать что-нибудь из классического арсенала тщетны: дебагеры просто не понимают что мы сквозь них пропускаем ! В лучшем случае IDA выдает сообщение о попытке загрузки "binary file"! и совершенно бредовый листинг!
HIEW, кончено, не отказывается трудиться, но результатов этого труда будет явно недостаточно.
Wdsm10K большую часть дисассемблирует, но окончание программы скрыто мраком.

Наверное, наши шансы невелики. . . Но попробуем!

И так: программа при старте уведомляет, что это "Evaluation Copy" и в нашем распоряжении 30 дней и 20 запусков. После чего, если игрушка приглянулась, нам придется ее купить!
Сразу же на шее чувствуются холодные лапы и эгоистичная жаба начинает свое действо по перекрытию кислорода. Не дадимся!

Ну-с, начнем!
На время не будем обращать внимание на надоедливые наги с текстами из "README" и "ORDER.FRM".
Разрешительные ограничения свидетельствуют об использовании или регистра или какого-нибудь файла .ini, но ни файл-монитор, ни рег-монитор по параметру "Mvpbr.exe" практически ничего не проказали!

1 WINCMD32.EXE:984 OpenKey HKLM\System\CurrentControlSet\Control\Session Manager\AppCompatibility\Mvpbr.mod.D.exe NOTFOUND
2 wINCMD32.EXE:984 OpenKey HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\Mvpbr.mod.D.exe NOTFOUND
3 WINCMD32.EXE:984 OpenKey HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\Mvpbr.mod.D.exe NOTFOUND

Просто монстр, а не программа! Попытка же даже просто просмотреть несколько сотен обращений к реестру при запуски программы - НЕ ОБСУЖДАЕТСЯ ! Впрочем, дотошный читатель, конечно же, сможет отыскать в логе REGMON`a искомое, но мы будем использовать инструментальные средства.

Попробуем найти в листинге Wdsm10K "REG" как начало "REGOPEN" или что-либо в этом роде. И сразу же получаем:

:0001.0430 9AFFFF0000 call SHELL.REGOPENKEY

и собственно весь блок:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.039C(U)
|
:0001.03BD C68614FF41 mov byte ptr [bp-00EC], 41
:0001.03C2 C68615FF63 mov byte ptr [bp-00EB], 63
:0001.03C7 C68616FF63 mov byte ptr [bp-00EA], 63
:0001.03CC C68617FF65 mov byte ptr [bp-00E9], 65
:0001.03D1 C68618FF73 mov byte ptr [bp-00E8], 73
:0001.03D6 C68619FF73 mov byte ptr [bp-00E7], 73
:0001.03DB C6861AFF6F mov byte ptr [bp-00E6], 6F
:0001.03E0 C6861BFF72 mov byte ptr [bp-00E5], 72
:0001.03E5 C6861CFF69 mov byte ptr [bp-00E4], 69
:0001.03EA C6861DFF65 mov byte ptr [bp-00E3], 65
:0001.03EF C6861EFF73 mov byte ptr [bp-00E2], 73
:0001.03F4 C6861FFF5C mov byte ptr [bp-00E1], 5C
:0001.03F9 C68620FF50 mov byte ptr [bp-00E0], 50
:0001.03FE C68621FF6F mov byte ptr [bp-00DF], 6F
:0001.0403 C68622FF69 mov byte ptr [bp-00DE], 69
:0001.0408 C68623FF6E mov byte ptr [bp-00DD], 6E
:0001.040D C68624FF74 mov byte ptr [bp-00DC], 74
:0001.0412 C68625FF36 mov byte ptr [bp-00DB], 36
:0001.0417 C68626FF00 mov byte ptr [bp-00DA], 00
:0001.041C 6A00 push 0000
:0001.041E 6A01 push 0001
:0001.0420 8D8614FF lea ax, [bp+FF14]
:0001.0424 8CD2 mov dx, ss
:0001.0426 52 push dx
:0001.0427 50 push ax
:0001.0428 8D86DEFC lea ax, [bp+FCDE]
:0001.042C 8CD2 mov dx, ss
:0001.042E 52 push dx
:0001.042F 50 push ax
:0001.0430 9AFFFF0000 call SHELL.REGOPENKEY
:0001.0435 3D0000 cmp ax, 0000
:0001.0438 7403 je 043D
:0001.043A E94005 jmp 097D

Значит, о ветви регистра "HK_CLASS_ROOT\Accessories\Point6" мы уже знаем! Давайте ознакомимся с содержимым:
всего ТРИ параметра: "D1", "D2", "T1". Наверное, "D1" - дата первого старта, "D2" - текущая дата, "T1" - количество стартов. Два - три запуска с просмотром содержимого этой ветви рестра полностью подтверждают наши предположения.
Скорее всего, программа при запуске должна сначала проверить: Есть ли ветвь рестра, что хранится в параметрах (читай, сколько времени и запусков в запасе) и в зависимости от результатов либо поиграть с нами, либо закруглиться, либо создать запись в реестре:
:0001.0430 9AFFFF0000 call SHELL.REGOPENKEY ; открываем ветвь
:0001.0435 3D0000 cmp ax, 0000 ; успешно?
:0001.0438 7403 je 043D ; да
:0001.043A E94005 jmp 097D ; нет, создаем

На самом деле, чуть ниже есть аналогичная проверка наличия разделов и некий анализ содержимого, но для нас это уже не актуально.
(приводится информативно)
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.0438(C)
|
:0001.043D 83FA00 cmp dx, 0000
:0001.0440 7403 je 0445
:0001.0442 E93805 jmp 097D

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.0440(C)
|
:0001.0445 C786E2FC6400 mov word ptr [bp-031E], 0064
:0001.044B C786E4FC0000 mov word ptr [bp-031C], 0000

Перед нами выбор:
1. продправить алгоритм под вариант "каждый раз - новый и первый!"
2. попытаться разобраться в анализе содержимого "D1", "D2", "T1" и исправлять все там.

Я выбрал более доступный вариант "1":
"убираем" ":0001.0438 7403 je 043D" либо на "jmps 043A" либо на "NOP + NOP".
Но это еще не все. В процедуре "0001.097D" таким же способом уберем переход
":0001.0992 7403 je 0997", который вызывают сообщение:
"System installation error. Contact technical support."

:0001.098F 3D0000 cmp ax, 0000
:0001.0992 7403 je 0997
:0001.0994 E97400 jmp 0A0B

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.0992(C)
|
* Possible StringData Ref from Data Seg 033 ->"Failed to initialize the modem."
|
:0001.0997 68D007 push SEG ADDR of Segment 0010

* Possible StringData Ref from Data Seg 010 ->"System installation error. Contact "
->"technical support."

Что открывает прямую дорогу в "0001.0A0B", где мы можем видеть вызов "SHELL.REGCREATEKEY":

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.0994(U)
|
:0001.0A0B 8D86DCFC lea ax, [bp+FCDC]
:0001.0A0F 8CD2 mov dx, ss
:0001.0A11 52 push dx
:0001.0A12 50 push ax

несколько ниже -

:0001.0A5E 8CD2 mov dx, ss
:0001.0A60 52 push dx
:0001.0A61 50 push ax
:0001.0A62 9AFFFF0000 call SHELL.REGCREATEKEY
:0001.0A67 8D86D8FC lea ax, [bp+FCD8]

Об ограничении 30-тидневного периода и 20 запусках мы "забыли" !

Теперь займемся нагами "README" и "ORDER.FRM".

Поиск текста "Readme" в Wdsm10K и в HIEW рузультатов не дал. . . Обратим внимание на кнопки в первом наге: "ОК" и "Order Now" и поищем текст "Order Now":

Name: DialogID_0107, # of Controls=003, Caption:"Order Info", ClassName:""
001 - ControlID:0001, Control Class:"" Control Text:"OK"
002 - ControlID:00D9, Control Class:"" Control Text:""
003 - ControlID:04A8, Control Class:"" Control Text:"&Order Now"

А это означает, что теперь будем искать "DialogID_0107" ! И на листочек выписываем 10 адресов.
Поскольку отладчик в помощь не ожидается, то будем методично "отсекать" варианты.
(Рекомендую отдельно сохранить модифицированный нами "Mvpbr.exe" с именем "Mvpbr.mod.exe" для бысторого восстановления экзешника после "промашки с вариантом" вызова нага, чтобы не терять время на "повторение пройденного".)
Лично я "отсекал" варианты модификацией джампов, что есть ниже по коду, на "джамп_на_себя".
Если программа "повисла" после закрытия нага - мы нашли вызов.
Уже вторая попытка даст нам место вызова нага:

* Possible Reference to Dialog: DialogID_0107
|
* Possible StringData Ref from Data Seg 025 ->"BUSY"
|
:0003.6BDA 680701 push 0107
:0003.6BDD 6A00 push 0000
:0003.6BDF 6A00 push 0000
:0003.6BE1 FF7608 push word ptr [bp+08]
:0003.6BE4 FF7606 push word ptr [bp+06]

чуть ниже:

:0003.6C1E FF7606 push word ptr [bp+06]
:0003.6C21 9A2AC2EA6B call 0007.C22A
:0003.6C26 8B4606 mov ax, [bp+06]
:0003.6C29 8B5608 mov dx, [bp+08]
:0003.6C2C E90000 jmp 6C2F

"Убираем" ":0003.6C21 9A2AC2EA6B call 0007.C22A" джампом "jmps 6C26"

Стартовый наг "Order Now" и такой же наг при выходе из программы отсутствуют!

Примемся за "ORDER.FRM".

Напомню, дебагер трудиться отказался, а после "RETF 0010" в модуле, где мы убирали наг, "догадаться" где всплывем НЕВОЗМОЖНО!

:0003.6C21 9A2AC2EA6B call 0007.C22A
:0003.6C26 8B4606 mov ax, [bp+06]
:0003.6C29 8B5608 mov dx, [bp+08]
:0003.6C2C E90000 jmp 6C2F

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0003.6C2C(U)
|
:0003.6C2F 5F pop di
:0003.6C30 5E pop si
:0003.6C31 C9 leave
:0003.6C32 CA1000 retf 0010

Так что, нужно искать другие пути.

Поиск в Wdsm10K "ORDER.FRM" дает список из 11 адресов, а происк "KERNEL.WINEXE" - только шесть.
и нам придется, как сказано выше, "отсекать" варианты.

Будем использовать иной принцип "отсечения": замена "PUSH 0001" джампом на следующую после "CALL" команду.
Несколько итераций и после правки:

:0002.1D3A 6A01 push 0001
:0002.1D3C 9AFFFF0000 call KERNEL.WINEXEC
:0002.1D41 C45E06 les bx, [bp+06]

наг "ORDER.FRM" не "мешает"!

Мы почти закончили - осталось исправить "Evaluation Copy" на более приятное глазу "Deluxe".
Ищем в HIEW "Evaluation Copy" и по трех адресам (A0359h, D1070h, D842Fh) вместо искомого пишем следующий код: "44656с75786500".

Нам удалось справиться с поставленной задачей с использованием минимального инструментария.

Послесловие: Для чего, собственно, патичь? Ответ скрыт в README программы:

If you like this software or find it useful, then you must register with MVP
Software. To "register" a shareware game means to purchase it directly from
the developer. (Shareware games are evaluation versions only, which means you
have the right to try them, but after trying them you must either register
them with the author or delete them from your system.) When you register you
will receive MVP Bridge Deluxe v3.4 for Windows, which includes all of the
features found in the evaluation version, plus:
* The full functioning software with no time limits
* The latest version of the software (we update this program regularly)
* Full-screen display at three different resolutions
* Six background musical selections
* Two different card face graphics
* 20 different card back graphics
* 27-page printed manual

В упрощенном переводе: Регистрация в программе отсутствует! Купите - получите !

NO COMMENT!

Критику, отзывы, пожелания и вопросы автору можно адресовать на "R091003@km.ru".

Успехов в Ваших делах!

Demode


Обсуждение статьи: Странный случай в MVP Bridge >>>


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



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


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