Как распаковать файл vdpack

Обновлено: 03.07.2024

Привет, хабровчане. В рамках курса "Reverse-Engineering. Basic" Александр Колесников (специалист по комплексной защите объектов информатизации) подготовил авторскую статью.

Также приглашаем всех желающих на открытый вебинар по теме «Эксплуатация уязвимостей в драйвере. Часть 1». Участники вебинара вместе с экспертом разберут уязвимости переполнения в драйверах и особенности разработки эксплойтов в режиме ядра.

Статья расскажет о подходах к анализу запакованных исполняемых файлов с помощью простых средств для обратной разработки. Будут рассмотрены некоторые пакеры, которые применяются для упаковки исполняемых файлов. Все примеры будут проведены в ОС Windows, однако изучаемые подходы можно легко портировать на любую ОС.

Инструментарий и настройка ОС

Для тестов будем использовать виртуальную машину под управлением ОС Windows. Инструментарий будет содержать следующие приложения:

установленный по умолчанию плагин x64dbg Scylla;

Самый быстрый и простой способ провести распаковку любого исполняемого файла — применить отладчик. Но так как мы будем также рассматривать язык программирования Python, то может понадобится проект:

uncompile6 проект, который позволяет разобрать байткод виртуальной машины Python;

pyinstallerExtractor инструмент для распаковки архива pyInstaller.

Общие методы снятия паковки

Разберемся, что же такое паковка. В большинстве случаев исполняемые файлы современных языков программирования имеют довольно большой размер при минимальном наборе функций. Чтобы оптимизировать данную величину, можно применить паковку или сжатие. Наиболее распространенный на сегодняшний день пакер — UPX. Ниже приведен пример того, как пакер проводит сжатие исполняемого файла.


На картинке может показаться, что файл стал по размеру больше, однако это не всегда так. Большинство файлов за счет такой модификации могут уменьшить свой размер до 1.5 раз от исходного объема.

Что же от этого реверс-инженеру? Почему надо знать и уметь определять, что файл упакован? Приведу наглядный пример. Ниже приведен снимок файла, который не запакован:


И файл, который был пропущен через алгоритм UPX:


Изменения коснулись в этом случае двух основных точек исполняемого файла:

Точка входа — в случае с упакованным файлом это начало алгоритма распаковки, настоящий алгоритм программы будет работать только после того, как будет распакован оригинальный файл;

Код оригинального файла: теперь не найти паттернов, которые можно сразу разбирать как команды.

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

Этап подготовки исполнения файла — загрузчик ОС настраивает окружение, загружает файл в оперативную память;

Сохранение контекста — упаковщик сохраняет контекст исполнения файла (набор значений регистров общего назначения, которые были установлены загрузчиком ОС);

Распаковка оригинального файла;

Передача управления оригинальному файлу.

Все описанные выше этапы можно легко отследить в отладчике. Особенно может выделяться процедура сохранения контекста. Для нее в разных архитектурах могут быть использованы команды pushad/popad или множественное использование команды push . Поэтому всегда приложение трассируют до первого изменения регистра ESP/RSP, и ставят "Hardware Breakpoint" на адрес, который был помещен в регистр в первый раз. Второе обращение этому адресу будет в момент восстановления контекста, который заполнил загрузчик ОС. Без него приложение завершится с ошибкой.

Пример UPX

Попробуем с помощью отладчика найти оригинальную точку входа для приложения. Запечатлим оригинальную точку входа до упаковки UPX:


Как та же точка входа выглядит после упаковки:


Запустим отладчик и попробуем найти место сохранения контекста:


Ждем первого использования ESP — в отладчике при этом значение регистра подсветится красным цветом. Затем устанавливаем точку останова на адрес и просто запускаем приложение:


В результате попадаем на оригинальную точку входа:


Вот так просто, теперь используя плагин Scylla Hide можно сохранить результирующий файл на жесткий диск и продолжить его анализ.

Подобный метод можно применять для любого упаковщика, который сохраняет контекст на стек.

Пример PyInstaller

Не всегда подобный подход работает для приложений, которые используют более сложную структуру исполняемого файла. Рассмотрим файл, который был создан с помощью PyInstaller — пакет, который позволяет преобразовать Python скрипт в исполняемый файл. При генерации исполняемого файла создается архив, который содержит виртуальную машину Python и все необходимые библиотеки. Сам исходный код приложения при этом преобразуется в байт код и его нельзя дезассемблировать.

Попробуем все же получить что-то читаемое. Создадим простое приложение на Python и упакуем с помощью PyInstaller. Исходный код приложения:

Установим пакет pyInstaller и создадим exe файл:

Итак, проведем сбор информации о том, что в итоге получилось. У нас есть архив, который должен запустить виртуальную машину, и код, который мы записали в виде скрипта. Попробуем восстановить исходник и просто его прочесть даже без запуска.

После выполнения команд выше, у вас должна создаться директория ./dist/test.exe . Откроем последовательно файл с помощью pyinstallerextractor и uncompile3 :


Наш скрипт находится в директории, которая создается в результате распаковки. Наименование файла должно соответствовать названию exe файла. В нашем случае это test.pyc . Откроем его в hiew :


Декомпиляция стандартными средствами невозможна, так как инструменты просто не умеют работать с байткодом Python. Применим специализированный инструмент — uncompile6 .


GTA: The Trilogy — The Definitive Edition работает на движке Unreal Engine, и для хранения игровых файлов в этом движке используются паки (файлы с расширением .pak). Чтобы установить мод для обновленной трилогии, необходимо создать свой .pak файл, в который положить измененные файлы. Но как это сделать?

В данной статье вы узнаете, как распаковать game.pak, в котором лежат все игровые файлы, а также мы расскажем о создании своих .pak файлов.

Как создавать моды для GTA: The Trilogy — The Definitive Edition. Распаковка и создание паков (.pak)

Как распаковать игровые файлы GTA: The Trilogy — The Definitive Edition

Скачайте программу Umodel. Запустите umodel_gta_trilogy.exe.

Как создавать моды для GTA: The Trilogy — The Definitive Edition. Распаковка и создание паков (.pak)

Перед вами откроется структура пака. Щелкните на кнопку «Инструменты» (Tools) и перейдите в «Параметры» (Options).

Как создавать моды для GTA: The Trilogy — The Definitive Edition. Распаковка и создание паков (.pak)

Здесь вы можете настроить параметры извлечения и сохранения извлеченных файлов. Рекомендуем установить параметры, как на скриншоте ниже, это упростит вам работу в будущем. Щелкните ОК.

Как создавать моды для GTA: The Trilogy — The Definitive Edition. Распаковка и создание паков (.pak)

Чтобы что-то извлечь, просто выберите файл в списке и нажмите «Экспорт» (Export). Вам будет предложено указать версию Unreal Engine, выберите 4.26 и нажмите OK. В приведенном ниже примере мы экспортировали файл SM_colt45.uasset, расположенный в Game SanAndreas Weapons. Этот формат можно открыть в Blender и экспортировать в .OBJ.

Как создавать моды для GTA: The Trilogy — The Definitive Edition. Распаковка и создание паков (.pak)

Как создать свой pak файл для GTA: The Trilogy — The Definitive Edition

Вы отредактировали какой-то игровой файл и теперь хотите добавить его в игру. Для этого нужно создать свой pak файл, но как это сделать?

Вам потребуется программа UnrealPak, которую можно скачать с GitHub . После установки программы запустите командную строку и пропишите следующий код:

"D:GamesEpic GamesUE_4.25EngineBinariesWin64UnrealPak.exe" “D:UnpacksExtractedDataTest.pak” -Create= "D:UnpacksExtractedDatadataToPack.txt"

Test.pak - пак, который будет сгенерирован, dataToPack.txt - файл, который будет в него упакован. Путь к UnrealPak.exe и путь, где будет создан новый pak файл вы должны указать сами.

Как создавать моды для GTA: The Trilogy — The Definitive Edition. Распаковка и создание паков (.pak)

Обратите внимание, что внутри вашего пака структура файлов должна совпадать с той, что находится в оригинальном game.pak. в ином случае мод работать не будет! Посмотреть структуру вы можете в распакованном game.pak

Советы по поиску игровых файлов

  • Текстуры из gta3img обычно находятся в SanAndreas Textures gta3 (они разделены по категориям);
  • В верхней части программы есть кнопка с изображением лупы - она ищет файлы только в той папке, в которой вы находитесь (не включает вложенные папки).

чем открыть pak файлы

Имея дело с файлом в формате PAK, необходимо знать его происхождение, поскольку это расширение используется большим количеством ПО, начиная от игр (например, Quake или Starbound) и заканчивая навигационным софтом компании Sygic. В большинстве случаев с открытием архива с расширением PAK могут справится и обычные архиваторы. Кроме того, можете использовать и программы-распаковщики, написанные под конкретный алгоритм сжатия.

Способ 1: IZArc

Популярный бесплатный архиватор от российского разработчика. Выгодно отличается постоянным обновлением и улучшением.

IZArc – достойная альтернатива платным решениям вроде WinRAR или WinZip, однако алгоритмы компрессии данных в нем не самые совершенные, поэтому для сильного сжатия крупных файлов эта программа не подходит.

Способ 2: FilZip

Бесплатный архиватор, который уже достаточно давно не обновлялся. Последнее, впрочем не мешает программе хорошо справляться со своими функциями.

FilZip тоже годится в качестве альтернативы ВинРАР, однако только в случае небольших файлов – с крупными архивами из-за устаревшего кода программа работает неохотно. И да, зашифрованные ключом AES-256 сжатые папки в ФилЗип тоже не открываются.

Способ 3: ALZip

Уже более продвинутое решение, чем описанные выше программы, которое тоже способно открывать PAK-архивы.

ALZip в контекстном меню системы

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

ALZip похож на многие другие приложения-архиваторы, однако в нем есть свои особенности – например, архив можно пересохранить в другом формате. Недостатки программы – плохо работает с зашифрованными файлами, особенно когда они были закодированы в новейшей версии WinRAR.

Способ 4: WinZip

Один из самых популярных и современных архиваторов для Windows также обладает функционалом просмотра и распаковки PAK-архивов.

Винзип как основной рабочий инструмент подойдет не каждому – несмотря на современный интерфейс и постоянные обновления, список поддерживаемых им форматов все-таки меньше, чем у конкурентов. Да и платность программы тоже понравится не всем.

Способ 5: 7-Zip

Самая популярная бесплатная программа для сжатия данных поддерживает и формат PAK.

Альтернативный способ открытия включает в себя манипуляции с системным контекстным меню.

Все, что можно сказать о 7-Zip, уже было неоднократно сказано. Добавим к достоинствам программы быструю работу, и сразу же к недостаткам – чувствительность к быстродействию компьютера.

Способ 6: WinRAR

Самый распространенный архиватор тоже поддерживает работу со сжатыми папками в расширении PAK.

Есть еще один любопытный способ открывать PAK-файлы. Способ включает в себя вмешательство в системные настройки, так что если не уверены в себе – этим вариантом лучше не пользоваться.

Его можно открыть любым подходящим архиватором – как одним из описанных в этой статье, так и каким-нибудь другим, способным работать с ZIP-файлами. Этот трюк работает, потому что формат PAK – один из старых вариантов формата ZIP.

Способ 7: Распаковщики игровых ресурсов

В случае, когда ни один из вышеперечисленных методов вам не помог, и открыть файл с расширением PAK не удается – скорее всего, вы столкнулись с упакованными в этот формат ресурсами для какой-нибудь компьютерной игры. Как правило, такие архивы имеют в названии слова «Assets», «Level» или «Resources», или труднопонимаемое рядовому пользователю название. Увы, но тут чаще всего бессилен даже способ с изменением расширения на ZIP – дело в том, что для защиты от копирования разработчики чаще всего упаковывают ресурсы собственными алгоритмами, которые универсальные архиваторы не понимают.

Однако существуют утилиты-распаковщики, чаще всего написанные фанатами той или иной игры с целью создания модификаций. Мы покажем вам работу с такими утилитами на примере мода для Quake, взятого с сайта ModDB, и распаковщика PAK Explorer, созданного коммьюнити сайта Quake Terminus.

Кроме Quake, формат PAK используют еще несколько десятков других игр. Обычно для каждой из них нужен свой распаковщик, и описанный выше Pak Explorer не подойдет для, скажем, Starbound – у этой игры совсем другой принцип и код компрессии ресурсов, для которого нужна другая программа. Впрочем, иногда может помочь фокус с изменением расширения, но в большинстве случаев все-таки нужно пользоваться отдельной утилитой.

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.


Распаковываем .pak файл и вытаскиваем модели, текстуры, звуки и тд.


4,531 уникальных посетителей
46 добавили в избранное




Распаковка и просмотр ресурсов(моделей, текстур и тд).




Я настоятельно рекомендую после распаковки ресурсов удалять вручную игру, дабы быть уверенным на 100%, что вас не покарает баншот.

Лучше производить все действия с выключенным стимом!

Для этого нужно после распаковки ресурсов, их скопировать в отдельную произвольную папку, чтобы можно было с ними удобно работать, а затем удалить саму папку с игрой вручную.
Вот эту . \Steam\SteamApps\common\Dead by Daylight <--
После удаления игры вручную, запустите проверку целостности кэша игры, и игра скачается заново.

Ваш прогресс и настройки игры это не заденет, тк это хранится в скрытой папке.
Примерно вот тут - C:\Users\ваша_учетная_ запись\AppData\Local\DeadByDaylight

И самое главное: Ребята, НЕ ПЫТАТЕСЬ ЧТО-ТО МЕНЯТЬ В ФАЙЛАХ ИГРЫ, за это ЗАБАНЯТ. те запаковывать ресурсы заново, заменив звуки к примеру.

Распаковка и просмотр ресурсов(моделей, текстур и тд).

PS.. чтобы скачать, скопируйте ссылку на яндекс диск в адресную строку вашего браузера и уберите пробел между yadi

Далее запускаем unpacker, указываем путь к *.pak файлу, жмем распаковать. После распаковки в корневом каталоге появятся ресурсы игры, их я рекомендую перенести в отдельную папку, а затем удалить папку дбд и скачать его заново. Ну вдруг распакованные ресурсы не понравятся какому-нибудь античиту.

После запускаем программу umodel.exe, через которую можно просматривать модельки и текстуры, она также позволяет делать скриншоты.

После обновления Dead by Daylight до версии 1.4.0, umodel.exe перестал автоматически определять версию движка и начал выдавать ошибку при просмотре моделей, для решения этой проблемы необходимо вручную указывать версию.

Запускаем его, ставим галочку - "Override game detection", в первом столбце выбираем - "Unreal engine 4", во втором столбце выбираем - "Unreal engine 4.13", после этого можно просмотривать модели и текстуры.

PS.. формат ogg уже можно прослушивать практически любым проигрывателем и при желании переконвертировать в формат mp3.

PS.. чтобы скачать, скопируйте ссылку на яндекс диск в адресную строку вашего браузера и уберите пробел между yadi

Итак, запускаем unpacker, указываем путь к *.pak файлу, жмем распаковать. После распаковки в корневом каталоге появятся ресурсы игры, их я рекомендую перенести в отдельную папку, а затем удалить папку дбд и скачать его заново. Ну вдруг распакованные ресурсы не понравятся какому-нибудь античиту.

В распакованных файлах ищем папку WwiseAudio, это и есть нужные нам звуки. Заходим в папку пока не натолкнемся на файлы с расширениями *.wem и *.bnk.

Файл wem уже можно спокойно декодировать, это звук.
Файл bnk это своеобразный архив, который содержит в себе звуки формата wem.

Файлы bnk имеют названия, как например Generator, что как бы намекает на звуки генератора.

Файлы раскодировщика необходимо закинуть в папку с файлами wem и bnk, далее перетаскиваем файл bnk на bnkextr.exe и получаем кучу файлов wem с названиями примерно 0001.wem, 0002.wem и тд. Хочу заметить, что разные bnk архивы содержат wem с одними и теми же названиями, поэтому если распаковывать все файлы разом, то они будут заменять друг друга. Рекомендую в папку с раскодировщиком кидать по одному bnk.

После того как мы получим wem файлы, их нужно декодировать, для этого запустите скрипт unpack.bat, после этого следуйте инструкциям на экране командной строки. Как только процесс декодирования завершится вы увидите кучу файлов ogg, которые можно спокойно прослушивать.
Не нужные файлы wem можно удалить, запустив скрипт delwen.bat, запускаете и все файлы wem из каталога будут удалены.

PS.. чтобы скачать, скопируйте ссылку на яндекс диск в адресную строку вашего браузера и уберите пробел между yadi

Моя Группа Steam.
Создана для того же что и группа ВК. Может стим для кого-то просто удобнее.

Мой YouTube канал.
Мой канал на ютубе, где я размещаю видео гайды и не только.

Читайте также: