Исследуем игру с аркадного автомата ч. Хабрахабр. Уф, вот меня и разбанили на хабре, и у меня есть для вас отличная статья, так что всем привет! Введение. Никогда не задумывались, что стоит в аркадных автоматах? Какие ОС, какие технологии используются для разработки игр? Как их защищают от копирования и модифицирования? Если да, то добро пожаловать в этот топик. Внутренности. Итак, что же внутри нашего автомата? Обычный x. 86 компьютер с платой PIUIO и JAMMAУсилитель, кроссовер и эквалайзер. Панель со светодиодами. Описание игрового автомата «STRIKE SHOOTER DP-2» для PS3 Move: Насадка в виде пистолета для контроллера PS3 Move Motion. С комплектом PS Move вес становится почти как у настоящей! Подключаем gun к Sony PlayStation 3. В игре автомат ведет себя безукоризненно – высокая точность, глубокое. Ценители азарта смогут в любое время суток запустить игровые автоматы онлайн Oasis Poker PS с карточной тематикой. Как и азартное устройство . Панель управления с кнопками «TEST», «SERVICE» и крутилками эквалайзера. LCD или CRT экран. Нас же, конечно, в первую очередь интересует компьютер. Есть несколько ревизий внутренностей последней версии компьютера: Материнская плата: Gigabyte GA- 9. GCM- S2. L / Asrock G4. M- S3. Графический адаптер: Geforce 8. GS / Geforce 9. 30. GSПамять: DDR2 / DDR3 5. MBПроцессор: Intel Celeron. Сама игра находится на винчестере. В комплекте USB- донгл Safe. Net Micro. Dog. Исследование. С чего же начать? Естественно, со снятия дампа винчестера. Это делается в линуксе одной командой: dd if=/dev/sd. X of=./dump. bin bs=1. M. И идем пить чай, т. Винчестеры используются на 1. Никогда ничего не делайте на работающем винчестере! Всегда нужно использовать образ! Образ снят. Давайте запустим cfdisk на него. Игровые автоматы (гэмблинг, автоматы, аппараты, апики, апары, однорукие бандиты) — сопутствующее для любого уважающего себя . Что же мы видим? Два раздела с файловой системой ext. Файловая система сразу может навести на мысль, что внутри стоит что- то UNIX- подобное, с большой вероятностью это, конечно, Linux. Давайте же запустим его в виртуалке. Я люблю qemu, поэтому использую его. И больше ничего. Дальше либо qemu завершается с ошибкой вроде: qemu: fatal: Trying to execute code outside RAM or ROM at 0xa. Честно говоря, я знал, что у этой игры привязка к винчестеру, и стало очевидно, что алгоритм достаточно простой и не использует проверку целостности данных, а сразу передает управление расшифрованным данным, а в случае с виртуалкой, просто мусору. Далее я, скорее больше ради интереса, а не в ожидании каких- то открытий, решил посмотреть, что же лежит на тех двух разделах с файловой системой ext. Один только «x» как- то выделяется из этой массы — это shared библиотека, которая, вероятно, подгружается игрой (на самом же деле — нет). Что же дальше? Ну, полезли в сам винчестер. Я их убрал, чтобы этот топик не гуглился по этим данным. Если хотите, узнать, что же там было, HEX- данные я не менял.)Что это? Объясняю. По адресу 0- 1. BE располагается MBR- загрузчик, самый наипростейший, который грузит с первого нашедшего диска stage. Интереснейшая строчка расположена на 3. F, очень похоже на серийный номер винчестера, версию прошивки и модель. Да что тут гадать, так и есть ; )Описание. Данные. Серийный номер (2. VMQWT4. 7Версия прошивки (8 байт)CC4. Название модели (4. ST3. 16. 03. 18. AS(2. Я пошел по легкому пути: не стал разбирать алгоритм работы stage. DRIVE. Также, qemu позволяет дампить память гостевой машины, что нам будет полезно. DRIVE. Нам же нужно как- то получить файловую систему. Наверняка, вместе с ядром грузится initrd или initramfs, в которой либо и лежат все необходимые файлы, либо который расшифровывает и подключает rootfs. Вернемся к нашему дампу памяти и пройдемся по нему замечательной утилитой Bin. Walk: DECIMAL HEX DESCRIPTION. ELF 3. 2- bit LSB core file Intel 8. SYSV). 1. 41. 88. A4. 0 Copyright string: .
А вот Cram. FS с 2. После того, как Cram. FS лежит у вас на винчестере в виде файла, попытаемся его распаковать. Я использовал cramfs- 2. Ну а что вы ожидали? Думали, все так просто будет? Текстовые файлы, вроде /etc/init. Но вот ни один исполняемый файл и ни одна библиотека не запускаются. Сначала я думал, что игра использует либо модифицированное ядро, либо модифицированный libc. Патчил исполняемые файлы, смотрел, как примерно они отличаются от hello world, т. Затем грешил на релоки, т. Размышлял над этим около 3 дней. Пришел к выводу, что исполняемые файлы каким- то образом бьются в Cram. FS, а текстовые остаются в оригинальном виде. И был прав!/etc/init. Но нам же нужно каким- то образом засунуть модифицированный Cram. FS обратно в образ. Поискав строку «Compressed Ram. FS» в образе винчестера, я был несколько удивлен, что он лежит незашифрованным! Только, конечно, не просто так, а с «паддингом», весь файл на винчестере разбит на блоки по 3. КБ данных и 5. 12 байт пустоты. Ну, это, вроде бы, не проблема! Так уж получилось, что изменил я не только /etc/init. Ладно, собрал ФС с оригинальным /etc/init. Как оказалось, их было много, я долго пытался понять, в чем же дело, оказывается, cramfs- 2. Хорошо, скачал обычный cramfs- tools из репозиториев, собрал им, и вдруг увидел, что, помимо контрольной суммы, различается последний байт у файлов. У оригинального файла 0x. Удивленный таким положением дел, заменил в своем файле последний байт, засунул его в образ винчестера и УРА! Образ запустился с моей модифицированной ФС, и я получил консоль. Никакой сложности простое копирование файлов не создало, запускные файлы теперь действительно запускались на моей linux- системе, и именно на этом шаге я понял, что, действительно, Cram. FS специальным образом изменяет исполняемые файлы. Бегло посмотрев на mount. Какой- то он не такой, упоминания это версии игры, которую я исследую, нет, и вообще, как- то что- то не то. Понял, что этот файл принадлежит другой версии игры, и выдвинул предположение, что, видимо, после проверки USB- донгла он откуда- то берет и расшифровывает другой файл. Все оказалось куда смешнее. При первом запуске он действительно просто монтирует файловые системы, но при повторном запуске он читает с винчестера некоторое количество данных со смещения 0x. F8. 02. 00 или 0x. Cram. FS на правильный. Вот этот ход мне действительно понравился! Я был в ярости, но, в то же время, горд находчивостью разработчиков. Заключение. Статья получилась несколько скомканной и состоит скорее из моих мыслей, догадок и наблюдений. Надеюсь, ее было интересно читать. Часть 2 будет чисто техническая, и, возможно, будет содержать разбор файловой системы игры и отвязывание игры от USB- донгла.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
November 2016
Categories |