Привет Гость!
Ты можешь:
Войти или зарегистрироваться

Забыл пароль
Регистрация
Меню сайта
Главная страница Каталог файлов Всё для моддинга Новости Моды ПК игр Форум Flash игры/журналы Помощь сайту WAP/PDA версия сайта Мы вКонтакте
Категории
Уроки по модификации java [174]
Уроки по переводу java игр [15]
Программы для компьютера [100]
Программы для телефона [82]
Модификация смартфонных игр [15]
Symbian, Android, iPhone и т.д.
Прочее [35]
Уроки по модификации ПК игр [9]
Мини-чат
Главная » Статьи » Уроки по модификации java

29.10.2012, 17:44

Как извлекают ресурсы из игр

Очень часто производители игр прячут свои игровые ресурсы (изображения, музыка, текст) от свободного доступа. Для вытаскивания этих ресурсов требуется написать распаковщик (unpacker). Для перевода игр также требуется написать упаковщик (packer), что гораздо сложнее. Существуют также универсальные программы для извлечения ресурсов, но во многих случаях они бесполезны. В этой статье я расскажу как создаются программы для работы с шифрованными ресурсами (на примере java ME игры «Some Allies And Enemies Sword» ).

Процесс расшифровки

После открытия архива с игрой и первичного осмотра сразу понятно, что ресурсы хранятся в каталоге «sprite», в шифрованном виде. У всех этих файлов понятные имена, что дает возможность провести поиск этих имен в класс-файлах:

После просмотра результатов нашлась строка в классе «x» с нужным именем:

Из строки видно, что нужен класс k, которому передается имя ресурса в качестве параметра string. Открыв класс «k», найдя нужный метод и просмотрев его, понятно, что именно в этом методе происходит загрузка, расшифровка и создание изображений из ресурсов (abyte0[] — содержит в себе PNG и IHDR ):

Далее выделена строка, в которой и происходит расшифровка изображения (используется xor):


Чтобы найти эту самую строку расшифровки, потребовалось воссоздать загрузку ресурсов, для этого пара строчек кода (а точнее, весь метод) скопировалась в IDE с некоторыми поправками:

В режиме отладки проверяется чтение ресурсов с последующим сравнением в HEX редакторе:

Теперь немного о структуре файла: нужная часть начинается с символов «SOFG», при чтении проверяется, что именно эти символы — начало блока с изображениями. Далее 4 байта это шифр, с помощью которого кодируются изображения, в каждом файле он свой. Далее 1 байт — количество изображений в файле, далее — 4 байта длина изображения и само изображение без «PNG» (на скрине — выделенная область).

Когда структура разобрана, дописывается программа-распаковщик и извлекаются изображения:


Теперь необходимо написать упаковщик файлов, что намного сложнее. Я написал его отдельной программой, так как это быстрее, но требуется больше «ручной работы» в HEX редакторе. Принцип работы упаковщика: выбираются файлы, снова шифруются и соединяются.


И в конце сравниваются исходный файл и полученный при упаковке, чтобы не было в них различий. Для этого в Total Commander’е есть удобный инструмент — сравнение файлов:

На этом техническая работа закончена, осталось только перевести игру. Примечание: файл touxiang.rar немного отличался от всех остальных, для него пришлось доработать распаковщик, как оказалось, в этом файле изображения игровых персонажей.

Заключение: рассмотренная в игре «защита» довольно легкая, таких, к сожалению, мало. В играх от крупных производителей все сложнее, например, есть индексный файл, в котором указывается информация о расположении ресурсов в игре, которые, в свою очередь, хорошо спрятаны. Плюс декомпилированные классы читать и понимать очень сложно, для этого нужен хороший программист.

Ссылка на рассмотренную игру.
P.S. Данная статья приведена в целях ознакомления, декомпиляция и прочие действия могут быть запрещены производителями.

Автор статьи - wakko, вот его сайт.

Категория: Уроки по модификации java | Добавил: Tommy_M | Автор: wakko
Просмотров: 2746 | Комментарии: 4 | Рейтинг: 5.0/2

Всего комментариев: 4
Спам
ValekS   (31.10.2012 17:34)
Слишком муторно всё это... Да и знания java нужны...

Спам
ALDECOTAN   (30.10.2012 16:57)
Мда... опоздали выходит мы с хирургом насчет выхода статьи... Уже сделали)

Спам
Pggs   (29.10.2012 22:12)
она как бы стандартная (ну у меня да ) а так скачай называется Total Commander 7.5

Спам
Werewolf   (29.10.2012 17:54)
а где взять эту прогу?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

о, привет
Новинки
  • Файлы
  • Статьи
  • Новости

SILENT EVIL 3D 2018 v.1.3 Beta (относительно стабильный билд)
Комментов: 45 | Загрузок: 207
Ancient Empires 2. Mod By Black Phoenix. Skirmish Edition 2018 year
Комментов: 1 | Загрузок: 10
Quantum
Комментов: 12 | Загрузок: 79
Evil Dead Regeneration Java Beta
Комментов: 3 | Загрузок: 70
Walking Zombie :D
Комментов: 4 | Загрузок: 55
Grim Reaper
Комментов: 0 | Загрузок: 40
Warsong Checkers
Комментов: 0 | Загрузок: 29
Meat2Eat: Pavlov Alive
Комментов: 1 | Загрузок: 41
The Chaos Engine
Комментов: 0 | Загрузок: 30
The Eyes
Комментов: 1 | Загрузок: 54

БЫСТРАЯ НАВИГАЦИЯ ПО САЙТУ
Комментов: 3 | Просмотров: 2468
Работа с EMG Studio
Комментов: 9 | Просмотров: 3764
J2ME Loader - 1.2.5.1 (эмулятор Java на Android)
Комментов: 2 | Просмотров: 1685
M3G to OBJ Converter + Lang Editor
Комментов: 2 | Просмотров: 539
Исходный код Gish Reloaded
Комментов: 2 | Просмотров: 1631
Моды Minecraft PE
Комментов: 0 | Просмотров: 1317
Оптимизация графики
Комментов: 5 | Просмотров: 2352

Old Gameloft games
Комментов: 0 | Просмотров: 74
С наступающим короч)
Комментов: 1 | Просмотров: 496
Silent Evil - что же с релизом?
Комментов: 5 | Просмотров: 363
Alien Shooter на телефон! |Java| (Полное прохождение)
Комментов: 0 | Просмотров: 399
Duke Nukem Mobile |Java| Прохождение (2004)
Комментов: 1 | Просмотров: 393
ЛУЧШИЕ ИГРЫ ЗА ИСТОРИЮ JAVA #2 Дополнение
Комментов: 2 | Просмотров: 741
F.E.A.R. Mobile (Полное прохождение долгожданного мода + и небольшой обзор)
Комментов: 2 | Просмотров: 619
Случайный мод
1524 322 6 4.0
Статистика
Онлайн всего: 2
Гостей: 2
Пользователей: 0
Пользователи
Гости сайта

[ Нас сегодня посетили ]
При копировании материалов, желательно оставлять ссылку на этот сайт!
© Tommy_M 2009-2018 | Хостинг от uCoz