В данной статье я расскажу вам о том, как вытащить любую модель к примеру из такой игры, как Half-Life: Alyx.
Так как это первая русифицированная статья по вытаскиванию моделей из движка Source 2 (в дальнейшем S2) постараюсь более подробно все описать.
Если тема вас заинтересует, то оформлю вторую статью по тому, как вытащить текстуры из S2.
Первое и необходимое, что нам пригодится это:
Сама игра (в своем случае я использую HL:A)
VRF Source 2 Resource Viewer — скачать тут;
Pragma — скачать тут, либо взять бесплатный ключ для Steam;
Blender 2.80 — скачать тут;
3ds max (по желанию) — скачать тут.
Что такое Pragma?
Pragma — это программа схожа с Source Filmmaker, но работающая с движком S2.
Все подробности по поводу обновлений программы, ключей для Steam и прочего вы можете узнать лично на дискорд-канале Pragma.
Разберем случай экспорта модели Alyx Vance:
1. Открываем VRF -> Открываем pak01_dir.vpk (путь «../Half-Life Alyx/game/hlvr/*.vpk»)
Как достать 3Д модели из игр.
Слева выдаст такой список разных папок и файлов.
Переходим по пути «models/characters». Так как мы берем модель Alyx, то самая первая папка соответственно будет нашей, которую надо будет вытащить. Жмем ПКМ на папку -> Export. Экспортировать можно куда угодно, хоть на рабочий стол.
2. Модель уже вытащили, осталось ее конвертировать в формат *.glTF для того, чтобы программа Blender смогла ее считать.
Как конвертировать в формат *.glTF:
Открываем папку программы Pragma и переходим по такому пути «../addons/hlalyx_models» -> Переносим сюда свою экспортированную папку «models».
Запускаем программу и после ее запуска нам потребуется только консоль.
( Внимание! Окно программы ни в коем случае не сворачивайте, иначе выдаст ошибку и консоль перестанет работать).
Вводим на английском без кавычек «map entry». Затем нужно будет ввести команду:
util_export_model -model «charactersalyxalyx.wmd» -verbose -export_images 1 -image_format png -generate_ao 0
Должно выйти в таком духе:
Дальше можно закрыть программу, она нам больше не потребуется.
Переходим по пути «../addons/filmmaker/export/characters/alyx» и находим там один файл под названием «alyx.glTF».
3. Открываем Blender -> File -> Import (*.glTF) -> Вуаля! Модель импортирована (единственное, я не догадываюсь как исправить положение костей, поэтому я их просто удаляю).
4. Не столь обходимый пункт, но он связан с 3ds max. Если вы работаете в этой программе, то из программы Blender необходимо файл экспортировать в формате «*.fbx», чтобы 3ds max смог его считать.
P.S. Если вы собираетесь копировать эту статью и использовать у себя, то просьба оставлять оригинального автора (то есть меня).
Источник: hlmod.ru
Вытаскиваем модели из The Elder Scrolls V Skyrim
Практическое руководство по взлому (и защите) игр на Unity
Когда речь идёт о программном обеспечении, термин «взлом» зачастую ассоциируют с пиратством и нарушением авторских прав. Данная статья не об этом; напротив, я решительно не одобряю любые действия, которые прямо или косвенно могут навредить другим разработчикам. Тем не менее, эта статья всё же является практическим руководством по взлому. Используя инструменты и методы о которых далее пойдёт речь, вы сможете проверить защиту собственной Unity игры и узнаете, как обезопасить её от взлома и кражи ресурсов.
Введение
В основе взлома лежит знание: необходимо понимать особенности компиляции Unity-проекта, чтобы его взломать. Прочитав статью, вы узнаете, каким образом Unity компилирует ресурсы игры и как извлечь из них исходные материалы: текстуры, шейдеры, 3D-модели и скрипты. Эти навыки будут полезны не только для анализа безопасности проекта, но также для его продвинутой отладки.
В связи с закрытостью исходного кода, Unity часто работает как «черный ящик» и порой единственный способ понять, что именно в нём происходит — это изучение скомпилированной версии скриптов. Кроме прочего, декомпиляция чужой игры может стать серьёзным подспорьем в поиске её секретов и «пасхальных яиц». Например, именно таким образом было найдено решение финальной головоломки в игре FEZ.
Находим ресурсы игры
Рассмотрим для примера игру, собранную под ОС Windows и загруженную через Steam. Чтобы добраться до директории, в которой находятся нужные нам ресурсы, откроем окно свойств игры в библиотеке Steam и в закладке «Local files» нажмём «Browse local files…».
Когда Unity компилирует проект под Windows, ресурсы всегда упаковываются по схожей схеме: исполняемый файл (например, Game.exe ) будет находится в корне директории игры, а по соседству расположится директория, содержащая все игровые ресурсы — Game_Data .
Извлекаем текстуры и шейдеры
Большинство ресурсов Unity-проекта упаковываются в файлы проприетарного формата с расширениями .assets и .resources . Наиболее популярный на сегодняшний день инструмент для просмотра таких файлов и извлечения из них ресурсов — Unity Assets Explorer.
Графический интерфейс программы не отличается удобством, а также она страдает от нескольких критических багов. Не взирая на это, программа вполне способна извлечь большинство текстур и шейдеров из игры. Полученные в результате текстуры будут иметь формат DDS, который можно «прочитать» с помощью Windows Texture Viewer.
С шейдерами ситуация обстоит сложнее: они извлекаются в уже скомпилированным виде и, насколько мне известно, решений для их автоматической трансляции в удобочитаемый формат не существует. Тем не менее, это обстоятельство не мешает импортировать и использовать полученные шейдеры в другом Unity-проекте. Не забывайте, однако, что подобная «кража» нарушает авторские права и является актом пиратства.
Извлекаем 3D-модели
Трёхмерные модели в типовой Unity-сборке «разбросаны» по различным ресурсам, а некоторые из них и вовсе могут генерироваться во время игры. Вместо копания в файлах, существует интересная альтернатива — получить данные о геометрии прямиком из памяти графического ускорителя. Когда игра запущена, вся информация о текстурах и моделях, видимых на экране, находится в памяти видеокарты. С помощью утилиты 3D Ripper DX можно извлечь всю эту информацию и сохранить в формате, понятном 3D-редакторам (например, 3D Studio Max). Учтите, что программа не самая простая в обращении — возможно, придётся обратиться к документации.
Взламываем PlayerPrefs
PlayerPrefs — это класс из стандартной библиотеки Unity, который позволяет сохранять данные в долговременную память устройства. Он часто используется разработчиками для хранения различных настроек, достижений, прогресса игрока и другой информации о состоянии игры. На ОС Windows эти данные сохраняются в системном реестре по следующему пути: HKEY_CURRENT_USERSoftware[company name][game name] .
С помощью стандартной утилиты regedit можно легко модифицировать любые значения PlayerPrefs, изменяя тем самым конфигурацию и статус игры.
Защищаем PlayerPrefs
Помешать пользователю редактировать значения в системном реестре мы не в силах. А вот проверить, изменялись ли эти значения без нашего ведома — вполне реально. В этом нам помогут хеш-функции: сравнив контрольные суммы хранимых данных, мы сможем убедиться, что никто и ничто, кроме нашего кода эти данные не изменяло.
public class SafePlayerPrefs < private string key; private Listproperties = new List(); public SafePlayerPrefs (string key, params string [] properties) < this.key = key; foreach (string property in properties) this.properties.Add(property); Save(); >// Вычисляем контрольную сумму private string GenerateChecksum () < string hash = «»; foreach (string property in properties) < hash += property + «:»; if (PlayerPrefs.HasKey(property)) hash += PlayerPrefs.GetString(property); >return Md5Sum(hash + key); > // Сохраняем контрольную сумму public void Save() < string checksum = GenerateChecksum(); PlayerPrefs.SetString(«CHECKSUM» + key, checksum); PlayerPrefs.Save(); >// Проверяем, изменялись ли данные public bool HasBeenEdited () < if (! PlayerPrefs.HasKey(«CHECKSUM» + key)) return true; string checksumSaved = PlayerPrefs.GetString(«CHECKSUM» + key); string checksumReal = GenerateChecksum(); return checksumSaved.Equals(checksumReal); >// . >
Приведенный выше класс — упрощенный пример реализации, работающий со строковыми переменными. Для инициализации ему необходимо передать секретный ключ и список PlayerPrefs-ключей, значения которых должны быть защищены:
SafePlayerPrefs spp = new SafePlayerPrefs(«MyGame», «PlayerName», «Score»);
Затем его можно использовать следующим образом:
// Сохраняем данные в PlayerPrefs как обычно PlayerPrefs.SetString(«PlayerName», name); PlayerPrefs.SetString(«Score», score); spp.Save(); // Проверяем, редактировались ли значения if (spp.HasBeenEdited()) Debug.Log(«Error!»);
При каждом вызове метода Save , на основе значений всех параметров, ключи которых были переданы классу при инициализации, вычисляется и сохраняется контрольная сумма. Используя метод HasBeenEdited мы затем можем проверить, изменялись ли защищенные параметры без нашего ведома.
Взламываем исходный код
Для Windows-сборок Unity компилирует и сохраняет исходный код всех игровых скриптов в директорию Managed . Интересуют нас следующие библиотеки: Assembly-CSharp.dll , Assembly-CSharp-firstpass.dll и Assembly-UnityScript.dll .
Для декомпиляции и просмотра managed-кода .NET библиотек (коими и являются наши жертвы) существуют довольно удобные и при этом бесплатные утилиты: IlSpy и dotPeek.
Данных подход особенно эффективен для наших целей: Unity очень скупо оптимизирует исходный код игровых скриптов, практически не изменяя его структуру, а также не скрывает названия переменных. Это позволяет с легкостью читать и понимать декомпилированый материал.
Защищаем исходный код
Раз Unity не заботится о сохранности нашего кода — сделаем это сами. Благо, существует утилита, готовая автоматически зашифровать плоды нашего интеллектуального труда: Unity 3D Obfuscator.
И хотя программа отлично справляется со своими обязанностями, многие классы, адресуемые извне родной библиотеки, всё же не могут быть зашифрованы без риска нарушения связанности — будьте осторожны!
Взламываем память игры
Cheat Engine — широко известная программа для взлома игр. Она находит ту область оперативной памяти, которая принадлежит процессу запущенной игры и позволяет произвольно её изменять.
Эта программа пользуется тем фактом, что разработчики игр очень редко защищают значения переменных. Рассмотрим следующий пример: в некой игре у нас есть 100 патронов; используя Cheat Engine, можно выполнить поиск участков памяти, которые хранят значение «100». Затем мы делаем выстрел — запас патронов составляет 99 единиц. Снова сканируем память, но теперь ищем значение «99». После нескольких подобных итераций можно с легкостью обнаружить расположение большинства переменных игры и произвольно их изменять.
Защищаем память игры
Cheat Engine столь эффективна от того, что значения переменных хранятся в своём изначальном виде, без какой-либо защиты. Серьёзно усложнить жизнь «читерам» довольно просто: нужно лишь немного изменить способ работы с переменными. Создадим структуру SafeFloat , которая послужит нам безопасной заменой стандартного float :
public struct SafeFloat < private float offset; private float value; public SafeFloat (float value = 0) < offset = Random.Range(-1000, +1000); this.value = value + offset; >public float GetValue () < return value — offset; >public void Dispose () < offset = 0; value = 0; >public override string ToString() < return GetValue().ToString(); >public static SafeFloat operator +(SafeFloat f1, SafeFloat f2) < return new SafeFloat(f1.GetValue() + f2.GetValue()); >// . похожим образом перегружаем остальные операторы >
Использовать нашу новую структуру можно следующим образом:
SafeFloat health = new SafeFloat(100); SafeFloat damage = new SafeFloat(5); health -= damage; SafeFloat nextLevel = health + new SafeFloat(10); Debug.Log(health);
Если вы выводите значения переменных на экран, хакеры всё ещё смогут перехватить и поменять их, но это не повлияет на действительные значения, хранящиеся в памяти и использующиеся в логике игры.
Заключение
К сожалению, существует не так уж много способов защитить игру от взлома. Будучи установленной на пользовательское устройство, она фактически раскрывает все ваши текстуры, модели и исходный код. Если кто-то захочет декомпилировать игру и украсть ресурсы — это лишь вопрос времени.
Невзирая на это, существуют действенные методы, которые позволят серьёзно усложнить жизнь злоумышленникам. Это не значит, что нужно вдаваться в панику, шифровать весь исходный код и защищать каждую переменную, но по крайней мере задумайтесь, какие ресурсы вашего проекта действительно важны и что вы можете сделать для их защиты.
Дополнительная информация
- Unity3D Attack By Reverse Engineering: Интересная статья, описывающая распространённые ошибки безопасности при реализации систем подсчёта очков в играх на Unity;
- disunity: Одна из лучших утилит для просмотра и извлечения ресурсов из Unity игр. К сожалению, она несовместима с последней версией движка;
- Unity Studio: Программа для визуализации и извлечения 3D моделей. Также не работает с Unity 5.
Источник: habr.com
Как вытащить модели из скайрим
DAGANT
Просмотр профиля
11.05.2007, 14:39:57
Группа: Пользователь
Сообщений: 481
Регистрация: 05.05.2007
Пользователь №: 3616
Репутация: 24
- STALKER_Data_Unpacker_RU.exe — это программа откроет нам доступ в содержимое gamedats
- OGFViewer — эта программа поможет нам просмотреть нужную модель в окне 3D вида
- DDS Converter 2 — наиболее удобный на мой взгляд конвертор текстур можете пользоваться конечно фотоЖ
- explor3d — переконвертирует модель из OBJ формата в 3ds поправка (можно просто пользоваться 3dmax он тоже понимает obj формат).
- 3Ds MAX — в представлении не нуждается..
КреатиФФных дел МАСТЕР!
375943678
МОИ СТАТЬИ:
Вытаскиваем модели из S.T.A.L.K.E.R.
____________________
GTA: Арзамас Developer
Zhooles
Просмотр профиля
11.05.2007, 14:44:27
Группа: Пользователь
Сообщений: 4612
Регистрация: 23.09.2006
Из: Ukrainian East
Пользователь №: 2384
Репутация: 123
dagant, скоро выпустят SDK и ничего не нужно будет.
lex
Просмотр профиля
11.05.2007, 15:08:35
Группа: Пользователь
Сообщений: 6562
Регистрация: 12.07.2005
Пользователь №: 789
Репутация: 190
статья ненужная, но пусть буит.
tykran
Просмотр профиля
11.05.2007, 17:12:15
Группа: Пользователь
Сообщений: 661
Регистрация: 26.10.2006
Из: КАЗАНЬ
Пользователь №: 2513
Репутация: 24
прикольно, сейчас попробуем!
сыль подправь
на explor3d
мой сайт про игры в которых есть россия. 🙂
lex
Просмотр профиля
11.05.2007, 17:17:33
Группа: Пользователь
Сообщений: 6562
Регистрация: 12.07.2005
Пользователь №: 789
Репутация: 190
да я както ненашел сцыль на эту прогу.
А нах она нужна то? Макс вроде понимает формат OBJ (см. скрин)
tykran
Просмотр профиля
11.05.2007, 17:45:12
Группа: Пользователь
Сообщений: 661
Регистрация: 26.10.2006
Из: КАЗАНЬ
Пользователь №: 2513
Репутация: 24
о епт у меня на компе места ни фига нет
как токо подчистюсь, сразцу посмотрю
QUOTE |
SDK |
мой сайт про игры в которых есть россия. 🙂
11.05.2007, 22:53:32
нах ддс конвертер ненужен! ЮЗАЕМ ИРФАН ВЬЮ
Zhooles
Просмотр профиля
11.05.2007, 22:56:22
Группа: Пользователь
Сообщений: 4612
Регистрация: 23.09.2006
Из: Ukrainian East
Пользователь №: 2384
Репутация: 123
тижон, ирфанвбю не отображает альфаканал у ддсок. а так вполне норм. для альфа-канальных юзаем плагин Imagine для коммандера, его достоинства:
1. альфа-канал понимает
2. его сохраняет при пересохранении файла (в отличии от Ирфанвью)
tykran
Просмотр профиля
12.05.2007, 07:56:16
Группа: Пользователь
Сообщений: 661
Регистрация: 26.10.2006
Из: КАЗАНЬ
Пользователь №: 2513
Репутация: 24
А нах она нужна то? Макс вроде понимает формат OBJ (см. скрин)
у меня 3д макс 6
и нифига нет экспорта
в формат *.оbj*
у меня на харде есть эта прога
explor3d (exploration 3d) и deep exploration
обе проги понимают формат .оbj,
но требуют регистрации.
нужен кряк,
помогите плиз.
мой сайт про игры в которых есть россия. 🙂
Zhooles
Просмотр профиля
12.05.2007, 13:05:58
Группа: Пользователь
Сообщений: 4612
Регистрация: 23.09.2006
Из: Ukrainian East
Пользователь №: 2384
Репутация: 123
tykran
Просмотр профиля
12.05.2007, 15:36:41
Группа: Пользователь
Сообщений: 661
Регистрация: 26.10.2006
Из: КАЗАНЬ
Пользователь №: 2513
Репутация: 24
корышник, я модемщик.
мой сайт про игры в которых есть россия. 🙂
Tector
Просмотр профиля
13.05.2007, 10:58:20
Группа: Пользователь
Сообщений: 242
Регистрация: 04.05.2007
Из: С. Петербург
Пользователь №: 3607
Репутация: 7
Вот ссылка на Explore3D (его настоящее название 3D Exploration, нашел только на каком-то китайском сайте ). Качать отсюда
— 240-811-040
MuTKoc 13
Просмотр профиля
13.05.2007, 22:44:35
Группа: Пользователь
Сообщений: 369
Регистрация: 06.11.2006
Пользователь №: 2550
Репутация: 25
tykran, сходи, как я, в магазин, выложи сотню и будет те щасье)))
Так, возможность есть, так а хто сетаки бут выдирать и мод клепать ? )))
Я узнал, что у меня
Есть огромная семья:
И тропинка, и лесок,
В поле каждый колосок!
Речка. Небо голубое.
Это все мое. Родное.
Это родина моя. Всех Люблю на свете Я!
-=-=-=-=-=-=-=-=-=-=-
«А сильнее, брат, тот, за кем Правда. » — Данила Багров
-=-=-=-=-=-=-=-=-=-=-
Злые Вы, уйду Я от Вас. =(
DAGANT
Просмотр профиля
14.05.2007, 18:53:44
Группа: Пользователь
Сообщений: 481
Регистрация: 05.05.2007
Пользователь №: 3616
Репутация: 24
Я буду выдерать и мод збацаю типа последний сталкер или чето в этом роде, но это попозже.
КреатиФФных дел МАСТЕР!
375943678
МОИ СТАТЬИ:
Вытаскиваем модели из S.T.A.L.K.E.R.
____________________
GTA: Арзамас Developer
DAGANT
Просмотр профиля
15.05.2007, 09:04:06
Группа: Пользователь
Сообщений: 481
Регистрация: 05.05.2007
Пользователь №: 3616
Репутация: 24
Бета-версия MP-SDK.
ВЫШЕЛ редактор уровней для STALKER скачать его можно отсюда
http://www.gsc-game.ru/index.php?t=projects
КреатиФФных дел МАСТЕР!
375943678
МОИ СТАТЬИ:
Вытаскиваем модели из S.T.A.L.K.E.R.
____________________
GTA: Арзамас Developer
tykran
Просмотр профиля
15.05.2007, 09:20:26
Группа: Пользователь
Сообщений: 661
Регистрация: 26.10.2006
Из: КАЗАНЬ
Пользователь №: 2513
Репутация: 24
опоздал, меньше спать надо,
новость уже здесь.
мой сайт про игры в которых есть россия. 🙂
DAGANT
Просмотр профиля
15.05.2007, 12:02:16
Группа: Пользователь
Сообщений: 481
Регистрация: 05.05.2007
Пользователь №: 3616
Репутация: 24
Решил сделать STALKER weapons pack (SWP) вот ниже некоторые скряаншоты. Пока готово:
Groza
AK-47
mp5
Создам отдельную тему, а тута пока пару скринов.
Прикрепленные файлы
1.JPG ( 16.79 килобайт ) Кол-во скачиваний: 641
КреатиФФных дел МАСТЕР!
375943678
МОИ СТАТЬИ:
Вытаскиваем модели из S.T.A.L.K.E.R.
____________________
GTA: Арзамас Developer
16.05.2007, 21:10:21
Молодец DAGANT. Продолжай не останавливайся. Я поддерживаю тебя. Я тоже по отечественным моделям западаю (цифровую камеру в руки и вперед по городу, а потом за комп)
DAGANT
Просмотр профиля
16.05.2007, 21:18:51
Группа: Пользователь
Сообщений: 481
Регистрация: 05.05.2007
Пользователь №: 3616
Репутация: 24
Хочеш помоч тогда дуй сюда https://gtamaps.net/forum/index.php?showtopic=8741
КреатиФФных дел МАСТЕР!
375943678
МОИ СТАТЬИ:
Вытаскиваем модели из S.T.A.L.K.E.R.
____________________
GTA: Арзамас Developer
Источник: gtamaps.net