понедельник, 30 апреля 2007 г.

Концепция анти-казуальной игры

У меня возникла концепция игры. Она совершенно некоммерческая, и, я бы сказал, потенциальная аудитория у неё сильно близка к нулю. Но, тем не менее, раз уж креатив попёр... :) Итак, дамы и господа, представляю вашему вниманию первый черновик концепции игры "Симулятор Cracker'a".

Концепция: в распоряжение игрока предоставляется программа, работающая на виртуальной машине, без исходного кода, а также отладчик, способный работать с этой виртуальной машиной. Задача игрока - взломать защиту программы, которая меняется (усложняется) от уровня к уровню. Задача игры - обучение игрока основам работы с отладчиком и обхода защит. Приведённые в игре примеры должны быть достаточно упрощены по сравнению с реальными, чтобы сделать игру несложной для освоения, но саму концепцию нельзя сильно отдалять от реальности: никаких аркадных элементов, ярких цветов, автоматического подбора паролей и прочей ерунды, которую мы так часто видим в фильмах.

1. Виртуальная машина.
Виртуальная машина представляет собой сильно упрощённый вариант x86 с чем-то вроде DOS в качестве ОС. ВМ состоит из памяти, регистров и стэка. Она поддерживает основные арифметические команды, работу с памятью, условные переходы и вызовы подпрограмм, а также обращения "по прерывания" к "системным функциям". ВМ выполняет один процесс и не имеет никаких специальных режимов. FPU нет.

2. Программа.
При старте игры программа загружается в память виртуальной машины. Программа состоит из одного сегмента кода и одного сегмента данных. Входная точка программы всегда располагается по адресу 0, после этого выполнение программы идёт последовательно.

3. Отладчик.

Отладчик состоит из: окна "дизассемблера", окна "регистров", окна "памяти", окна "Watches" и меню команд. Игрок может использовать все основные команды простейшего отладчика: переход к следующей команде, просмотр выбранного участка памяти и регистров, просмотр стэка, установка и снятие точек останова. Возможно, имеет смысл дать игроку "брать ход назад", то есть, возвращать ВМ к предыдущему состоянию, тем более, что некоторые современные отладчики это умеют.

4. Примеры задач:
1) Отыскать пароль, которого ждёт программа (пароль хранится в области данных в незашифрованном виде, в задачу игрока входит просто найти место, в котором программа обращается к этому участку памяти. Помимо пароля, память забита мусором).

2) Сломать пароль. Задача аналогична предыдущей, но требует от игрока создания "патча" меняющего операцию проверки пароля так, чтобы программа работала с любым паролем.

3) Разгадать алгоритм создания пароля по имени пользователя. Алгоритм должен быть простейшим, что-то вроде xor по константе или что-то вроде того.

4) Отловить и удалить проверку на наличие CD-ROM (или, проще, определённого файла).

5) Преодолеть защиту, запрашивающую подтверждение пароля через Интернет (вызывающую для этого недоступную игроку "библиотеку"; кстати, этот же приём можно использовать и в других задачах, чтобы осложнить игроку жизнь)

6) Комбинированные защиты.

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

Bells & Whistles: дабы хоть немного оживить игру, можно разбавить её историями из жизни известных кряккерских групп, таких как Razor1911, Humble Guys и т.п.




Комментариев нет: