![]() |
eXeL@B —› Вопросы новичков —› Исследование игры "Казаки - последний довод королей" [StarForce] |
Посл.ответ | Сообщение |
|
Создано: 21 сентября 2013 15:36 · Личное сообщение · #1 Всем привет! Недавно прочел статью "Star-Force: КАЗАКИ by ASMax", ничего не понял, но идейно вдохновился. Перечитал на форуме кучу оффтопа и понял немного больше - защита очень не из простых. Скачал образ, но к сожалению игра под XP не запустилась, тогда я скачал образ из Антиотладка: Code:
Code:
Проверка целостности: Code:
Дальше проверка установлен ли драйвер защиты, поиск диска по метке "COSSACKS_A" и чтение случайных данных, проверка CDKey и загрузка с файла protect.dll каких то данных в выделенную память. А вот дальше начинается какая то фигня. Вызывается _DllDispatch. Чето она там делает и "циклится" на коде: Code:
Этот кусок я пробовал трассировать, но он постоянно прыгает на свое начало. Однако, если запустить процесс, то вылазит сообщение "диск не найден", т.е. как то он все-таки выходит из цикла. Я пробовал ставить бряк на выход из _DllDispatch, но это закончилось отказом системы. Позже практика показала, что совершенно не важно где стоит бряк и сработает он или нет. Пробовал аттачится к процессу после сообщения, но тогда Olly просто висит и ничего не происходит. В общем тут затык. Куда смотреть, куда копать? ![]() |
|
Создано: 21 сентября 2013 15:55 · Личное сообщение · #2 |
|
Создано: 21 сентября 2013 17:51 · Личное сообщение · #3 |
|
Создано: 21 сентября 2013 18:10 · Личное сообщение · #4 [Nomad] пишет: Вы смотрите слишком старую версию стара, сейчас актуальная 5.7.xx. Все очень сильно поменялось Кабы-чё ляпнуть.... ![]() [Nomad] пишет: Как вариант погуглить статьи от Yasuichi Kitamura или свиновода ![]() ![]() ![]() ![]() Immortal Pony пишет: Вызывается _DllDispatch. Чето она там делает и "циклится" на коде Это VM StarForce. ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 21 сентября 2013 18:14 · Личное сообщение · #5 |
|
Создано: 21 сентября 2013 19:00 · Личное сообщение · #6 [Nomad] пишет: Вы смотрите слишком старую версию стара, сейчас актуальная 5.7.xx. Все очень сильно поменялось Не сомневаюсь, но защита вызывает лишь академический интерес, для расширения кругозора, так сказать, поэтому раз уж начал, не буду хвататься за все подряд. [Nomad] пишет: погуглить статьи от Yasuichi Kitamura или свиновода Нашел статью "Распаковка StarForce: King’s Bounty". Опять же, распаковка. Два раза нажмите эту кнопку, один раз ту и еще вот эту, потом запустите скрипт - все, вы восхитительны. О работе защиты практически ни слова. Свиновода нашел только ClockMan пишет: Это VM StarForce. Я так понимаю VM это некий интерпретатор псевдокода. Где-нибудь можно взглянуть на примеры практической реализации разбора такого псевдокода? ![]() |
|
Создано: 21 сентября 2013 19:37 · Личное сообщение · #7 |
|
Создано: 22 сентября 2013 12:43 · Личное сообщение · #8 |
|
Создано: 22 сентября 2013 20:51 · Личное сообщение · #9 Тихо сам с собой продолжаю разбор интерпретатора байткода. Code:
Тут все просто. Сохраняем регистры, флаги, в ebp вершину стека до входа в _DllDispatch, выделяем память на стеке и полностью обнуляем под контекст ВМ. Выделенная память условно разбивается на 2 страницы. Пока достоверно неизвестно зачем, но предполагаю что первая страница - непосредственно контекст ВМ, а вторая под код и данные. Code:
Далее происходит заполнение второй страницы контекста константами 1,...0F, 10,...,F0, ... , 10000000,...,F0000000. Позже из них будет сгенерирован недостающий код ВМ. Code:
И вновь основной обработчик байткода handler0 Code:
Что мне это дало: Code:
Пока это все. В аттаче лог работы ВМ до перехода handler0 на расшифрованный другой обработчик. ![]() ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Исследование игры "Казаки - последний довод королей" [StarForce] |