- Баллы
- 103
На днях любопытства ради попробовал посмотреть как изнутри устроен протокол общения между собой девайсов с сетевой игрой Minecraft Pocket Edition. Результаты достаточно интересные.
Прошу всех школьников, желающих СКАЧАТЬ и замутить свой сервер Poket Ediшon уходить сюда. Оригинальная тема была написана на ********, но утонула под тоннами флуда. Посему прошу не флудить и отвечать только если есть что ответить. Спасибо.
Что я делал:
- Создал Wi-Fi точку доступа на лептопе без шифрования и присоединил к ней оба девайса. Запустил на лептопе Wireshark (перехватчик пакетов), на девайсах - майнкрафт, посмотрел что передается в сети.
- Скачал с одного девайса исполняемый файл (тот, что взломан, т.е. расшифрованный) и пропустил через IDA Pro.
- Скачал apk-пакет для андроида (у меня нет девайсов на андроиде), декомпилировал его в ява-код, ничего интересного не нашел.
- Зато! Внутри apk-пакета обнаружился файл libminecraftpe.so, который я тоже пропустил через IDA Pro.
- Написал очень простую (~50 строк) программку на яве, которая позволяет получить логин-пакет и пытается ответить. Ответить не получилось, работаю над этим.
Что я накопал:
- Майнкрафт общается по UDP. Для общения по сети используется бесплатная библиотека RakNet. Сервер использует порт 19132.
- Даже в текущей версии игры есть код, отвечающий за: TNT, компас, алмазные тулзы (называются emerald), пауков, криперов, коров, свиней, измерения (nether?), летающих мобов (?
), плавающих мобов (squid?), нанесение друг другу урона, сообщения.
- В коде присутствует код сетевых пакетов, отвечающих за экипировку игроков, респаун, сообщения, установку времени суток, взрывы, использование вещей, нажимание кнопок\рычагов.
Если кто-либо заинтересован в реверс-инжиниринге Minecraft PE – я выкладываю свои наработки, вдруг кому интересно.
Дамп пакетов: http://dl.dropbox.com/u/5758571/MCPE_packet_dumps.zip
Пакеты дампались во время одной игровой сессии (т.е. без перезапуска и переподключения), на двух iOS-девайсах (iPod Touch 5.0.1 и iPhone 4S 5.0.1). Архив с дампами содержит файлы формата Wireshark. Дампы содержат короткие очереди пакетов(30-100), снятые во время повторяющихся действий на девайсах: открывание\закрывание двери, подпрыгивание и т.д. В всего архиве 8 дампов.
Дамп классов андроидной библиотеки: http://dl.dropbox.com/u/5758571/mpe0.2.0.dump2.txt
Делал не я, но то, что делал я почти полностью совпадает с этим, только немного грязнее.
Библиотека RakNet, которую использует майнкрафт для общения по сети: http://www.raknet.com/raknet/downloads/RakNet_PC-4.036.zip
Она защищена копирайтом, так что если вам нужна она для чего-то еще, кроме как просто посмотреть - получите бесплатную лицензию на http://www.jenkinssoftware.com/hobbyist.html
Крайне краткое описание пакетов, отвечающих за логин: http://dl.dropbox.com/u/5758571/MCPE_packet_format.txt
Описание других пакетов (четырех), относительно скудное: http://wiki.vg/Talk:Pocket_Minecraft_Protocol
Мою программку на яве, "сервер", даже видно в списке активных игр. Также я написал подобие очереди пакетов так что теперь подключать можно более одного устройства. Сервер все так же ничего не умеет, кроме логин-последовательности (до пакета 0x08).
Выложил эту поделку на гитхабе https://github.com/toxuin/MCPES - если кому интересно - поковыряйте.
Протокол реверсирован крайне плохо. Из 29 пакетов известно назначение только 2.
Если у кого-нибудь есть какие-нибудь наработки или желание\возможность поковырять Покет Майнкрафт - выходите на контакт.
Прошу всех школьников, желающих СКАЧАТЬ и замутить свой сервер Poket Ediшon уходить сюда. Оригинальная тема была написана на ********, но утонула под тоннами флуда. Посему прошу не флудить и отвечать только если есть что ответить. Спасибо.
Что я делал:
- Создал Wi-Fi точку доступа на лептопе без шифрования и присоединил к ней оба девайса. Запустил на лептопе Wireshark (перехватчик пакетов), на девайсах - майнкрафт, посмотрел что передается в сети.
- Скачал с одного девайса исполняемый файл (тот, что взломан, т.е. расшифрованный) и пропустил через IDA Pro.
- Скачал apk-пакет для андроида (у меня нет девайсов на андроиде), декомпилировал его в ява-код, ничего интересного не нашел.
- Зато! Внутри apk-пакета обнаружился файл libminecraftpe.so, который я тоже пропустил через IDA Pro.
- Написал очень простую (~50 строк) программку на яве, которая позволяет получить логин-пакет и пытается ответить. Ответить не получилось, работаю над этим.
Что я накопал:
- Майнкрафт общается по UDP. Для общения по сети используется бесплатная библиотека RakNet. Сервер использует порт 19132.
- Даже в текущей версии игры есть код, отвечающий за: TNT, компас, алмазные тулзы (называются emerald), пауков, криперов, коров, свиней, измерения (nether?), летающих мобов (?
), плавающих мобов (squid?), нанесение друг другу урона, сообщения.- В коде присутствует код сетевых пакетов, отвечающих за экипировку игроков, респаун, сообщения, установку времени суток, взрывы, использование вещей, нажимание кнопок\рычагов.
Если кто-либо заинтересован в реверс-инжиниринге Minecraft PE – я выкладываю свои наработки, вдруг кому интересно.
Дамп пакетов: http://dl.dropbox.com/u/5758571/MCPE_packet_dumps.zip
Пакеты дампались во время одной игровой сессии (т.е. без перезапуска и переподключения), на двух iOS-девайсах (iPod Touch 5.0.1 и iPhone 4S 5.0.1). Архив с дампами содержит файлы формата Wireshark. Дампы содержат короткие очереди пакетов(30-100), снятые во время повторяющихся действий на девайсах: открывание\закрывание двери, подпрыгивание и т.д. В всего архиве 8 дампов.
Дамп классов андроидной библиотеки: http://dl.dropbox.com/u/5758571/mpe0.2.0.dump2.txt
Делал не я, но то, что делал я почти полностью совпадает с этим, только немного грязнее.
Библиотека RakNet, которую использует майнкрафт для общения по сети: http://www.raknet.com/raknet/downloads/RakNet_PC-4.036.zip
Она защищена копирайтом, так что если вам нужна она для чего-то еще, кроме как просто посмотреть - получите бесплатную лицензию на http://www.jenkinssoftware.com/hobbyist.html
Крайне краткое описание пакетов, отвечающих за логин: http://dl.dropbox.com/u/5758571/MCPE_packet_format.txt
Описание других пакетов (четырех), относительно скудное: http://wiki.vg/Talk:Pocket_Minecraft_Protocol
Мою программку на яве, "сервер", даже видно в списке активных игр. Также я написал подобие очереди пакетов так что теперь подключать можно более одного устройства. Сервер все так же ничего не умеет, кроме логин-последовательности (до пакета 0x08).
Выложил эту поделку на гитхабе https://github.com/toxuin/MCPES - если кому интересно - поковыряйте.
Протокол реверсирован крайне плохо. Из 29 пакетов известно назначение только 2.
Если у кого-нибудь есть какие-нибудь наработки или желание\возможность поковырять Покет Майнкрафт - выходите на контакт.
Изначальная утопическая задумка была сделать так, чтобы с покетедишна можно было подключаться к "большим" серверам. Очевидно возможностей карманной версии на полный настольный экспириенс не хватит, но побегать-початиться - вполне. Все уперлось в вопиющую недокументированность протокола и мою полную некомпетентность как анализатора пакетов, гы.