Извлечь видео из exe файла

Обновлено: 02.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 .

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

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

Программа имеет простой и удобный пользовательский интерфейс, представленный одним единственным окном. Установки экстрактор не требует и может запускаться с любого переносного носителя. Утилита позволяет извлекать иконки, статические и анимированные курсоры, видео в AVI формате, файлы карт, манифестов, документы HTML и некоторые другие типы файлов. Что именно должна искать утилита, можно указать непосредственно в рабочем окне.

ResourcesExtract

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

Опытные пользователи могут запускать приложение в режиме командной строки, выполнять пакетное сканирование файлов. В целом со своей работой данный экстрактор справляется неплохо, в то же время ResourcesExtract несколько уступает Universal Extractor — другой популярной программе для распаковки контейнеров. Распространяется ResourcesExtract бесплатно, рекламы программа не содержит, совместима с ОС Windows 7, 8 и 8.1. Язык интерфейса — английский.



Программа для редактирования exe файлов, которая поставляется с поддержкой создания резервных копий и пакетного экспорта. Она позволяет просмотр, замену, добавление, удаление и извлечение ресурсов, расположенных в 32-разрядных и 64-разрядных исполняемых файлах Windows и файлах ресурсов (*.res).

Способ первый: традиционная распаковка

exe файл

Традиционная распаковка не требует установленных в системе вспомогательных программ. Все, что нужно, — уже предустановлено в Windows.

Итак, процесс распаковки EXE-файла следующий:

  1. Откройте файловый менеджер «Проводник».
  2. Перейдите в папку, в которой находится файл с расширением EXE.
  3. Запустите его. Для этого достаточно дважды кликнуть по его иконке левой кнопкой мыши. Иногда для запуска требуются права администратора — в этом случае вам необходимо сначала нажать правую кнопку мыши, а потом выбрать соответствующий пункт из меню.
  4. Запустится окно инсталлятора. Именно в нем вам необходимо будет задать параметры распаковки.
  5. В первом окне вам предложат выбрать язык установщика.
  6. Затем появится приветственное окно. В нем обычно указано, что именно за программа будет установлена в систему.
  7. Далее надо будет принять пользовательское соглашение.
  8. Потом выбрать папку, в которую будут распакованы все файлы.
  9. После этого вам предложат создать дополнительные ярлыки в меню «Пуск» и на рабочем столе.
  10. После этого этапа начнется распаковка всех файлов установщика.

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












Какие файлы не имеет смысла открывать в редакторе ресурсов

Не смотря на то, что Resource Tuner предназначен для открытия и редактирования любых 32-/64-битных исполняемых файлов, существуют некоторые виды EXE файлов, в которых ресурсы практически отсутствуют.

1. Файлы, созданные при помощи Visual Basic.

В таких файлах в секции ресурсов ничего нет, кроме иконы и информации о версии. Строчки и диалоги в программах, написанных на визуальном бейсике, хранятся в своём собственном закрытом формате, и стандартная секция ресурсов в них не используется.

2. Файлы .EXE размером в гигабайт и более.

Поскольку Resource Tuner — это 32-битная программа, существуют естественные ограничения для размещения образа открываемого файла в виртуальной памяти в пределах первого гигабайта. Файл размером в гигабайт и более туда просто не поместится.

3. Самораспаковывающиеся архивы в виде EXE файлов.

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

4. Инсталляторы других программ.

В таких файлах в ресурсах ничего нет, кроме иконы и информации о версии. Очень похожи на п.3. Файл инсталлятора можно рассматривать как контейнер, внутри которого содержится другой .EXE файл в сжатом виде и подпрограмма для его извлечения. К тому же, программы для создания инсталляторов используют разные алгоритмы для хранения внутри себя архивированных данных.

Resource Tuner работает на всех версиях Windows

от 2000 и XP до 8 и 10.

Минимальные системные требования:

Процессор Intel Pentium® или AMD K5 166 MHz 16 MB RAM

Copyright © 2020 Heaventools Software. Все права сохранены.


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

Способ второй: извлечение установочных файлов

Второй метод кардинально отличается от первого. Если в первом случае нужно было распаковать файлы программы для того, чтобы после этого запустить ее на компьютере, то в этом случае нужно извлечь файлы самого инсталлятора, чтобы произвести с ними манипуляции. В примере представлена специальная программа под названием ResourcesExtract. Работает она следующим образом:

  1. Скачайте, установите и запустите приложение.
  2. Появится окно, в котором вам в первую очередь необходимо указать EXE-файл, который вы будете распаковывать. Делается это в поле Filename.
  3. После этого понадобится указать папку, в которую будут распакованы файлы. Делается это в поле Destination Folder.
  4. После этого можно приступать к распаковке. Для этого нужно нажать кнопку Start.
  5. При желании вы можете задать дополнительные параметры. Например, указать, какие именно файлы распаковывать. Делается это в области под названием Resource types to extract.

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

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

PE-Explorer

Под первым номером идет довольно распространенный редактор PE-Explorer. В отличие от своего собрата Resource Tuner, он способен редактировать не только ресурсы приложения, но и код. Несмотря на свой почтенный возраст, исправно работает даже в Windows 10. К сожалению, PE-Explorer умеет работать только с 32-битными файлами и при попытке открыть 64-битный бинарник сообщает об ошибке.

Утилита обладает богатой функциональностью: отображает все элементы заголовка РЕ, определяет, к каким DLL происходит обращение, предсказывает поведение программ и логику взаимодействия с другими модулями и даже открывает запакованные UPX, UPack или NSPack файлы. Кроме того, она позволяет просматривать и редактировать секции PE-файла, исследовать содержимое таблиц импорта и экспорта и проверять наличие и целостность цифровой подписи. В качестве «вишенки на торте» тут присутствует полноценный дизассемблер.

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

Запустим редактор и сразу же откроем наше подопытное приложение. PE-Explorer первым делом выводит информацию о заголовке PE-файла. Для получения сведений об остальных разделах достаточно пощелкать кнопки на панели инструментов. Жмем пиктограмму Disassembler и открываем окно для выбора поддерживаемых инструкций: SSE, SSE2 и прочее. Указываем необходимые и начинаем процесс нажатием кнопки Start Now.

В открывшемся окне большую часть занимает область с дизассемблерным листингом, чуть ниже располагается шестнадцатеричный дамп. Если в заголовке нижней панели выбрать вкладку Strings, то отобразятся все строки в исследуемом приложении. Так что поиском можно найти и эталонный пароль. Однако для этого пришлось бы перебрать весь внушительный список доступных строк, так что отложим этот вариант до худших времен.

Так как мы с помощью отладчика нашли адрес инструкции, которая отвечает за ход выполнения программы, то попробуем проверить этот адрес в PE-Explorer: нажимаем Ctrl-F (или Search → Find) и вводим адрес для поиска: 402801.


Что ж, я немного разочарован результатом дизассемблирования. Даже отладчик в этом месте показывает мне инструкцию test, а здесь я вижу лишь начало ее шестнадцатеричного кода: 0х85. При этом я не могу редактировать код! Зачем мне все эти возможности, если утилита не позволяет делать самую базовую вещь?

Я даже не могу списать этот недочет на ограничения демоверсии, так как о ее отличиях от платной ничего толком не сказано. Допускаю, что с теми целями, для которых этот продукт предназначен (статическое изучение приложения и вектора его выполнения), он справляется хорошо. Однако нашим требованиям программа не соответствует, поэтому смело вычеркиваю PE-Explorer из списка кандидатов.












Как распаковать EXE-файлы на Mac

программа для распаковки exe файла

Распаковка в операционной системе Mac происходит совсем другим способом. Для того, чтобы достать сами файлы с EXE, вы можете использовать простой архиватор. Принцип распаковки такой же, как и с архивами. В статье показано, как распаковать EXE-файлы, чтобы после запустить программу на компьютере. Именно таким образом вы можете запускать программы Windows в операционной системе Mac.

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

распаковать exe файл на mac

После этого вы без проблем сможете запускать файл EXE. Далее запустится инсталлятор, а дальнейшие действия аналогичны тем, что были в Windows.

Ошибки при открытии файла

Если при открытии файла возникает ошибка, то скорее всего по трём причинам: файл защищён, файл 16-битный, или это вообще не исполняемый файл.

1. Ошибка: Файл повреждён, сжат упаковщиком или защищён протектором.

Вероятность того, что файл сжат для уменьшения размера, весьма велика. Упаковщиков и протекторов для исполняемых файлов существует не один десяток, и всё время появляются новые. Resource Tuner поддерживает распаковку только одного, зато самого распостранённого упаковщика — UPX. Остальные упаковщики не поддерживаются, и вам придётся самостоятельно заниматься распаковкой файла, прежде чем вы сможете открыть файл для просмотра или редактирования.

Данная ситуация не рассматривается, как ошибка программы. Мы не собираемся ни бороться с попытками других авторов программ защитить свои творения от взлома, ни поддерживать распаковку нескольких десятков разных упаковщиков, среди которых есть и коммерчиские продукты, и самоделки.

Восстановление запуска exe вручную

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

  • Нажмите Win + R и введите regedit;
  • Найдите HKEY_CLASSES_ROOT\.exe, проще всего найти среди большого множества разделов, введя название на клавиатуре, только в быстром темпе;
  • Правый клик по значению «По умолчанию» и выберите «Изменить»;
  • Замените параметр на слово exefile;


  • Теперь в том же разделе найдите группу exefile;
  • Откройте параметр «По умолчанию» двойным кликом и установите значение “%1” %*
  • Далее перейдите внутрь в раздел shell и затем open;


  • Теперь снова в «По умолчанию» вставьте значение “%1” %*
  • Перезагрузите ПК.

Этот ряд действий позволяет добиться поставленной цели и восстановить ассоциацию файлов exe. Подобным образом можно делать и с другими форматами, но лучше воспользуйтесь специальными утилитами, вроде предыдущей.

Также следует знать, что существуют тяжелые варианты проблемы, когда даже строка «Выполнить» не работает. Тогда нажмите Ctrl+Alt+Del, затем выберите «Файл» и «Выполнить».

Особенности работы с DLL файлами и возможные проблемы

Некоторые DLL не удастся не только изменить, но даже открыть. Это происходит с защищенными библиотеками и проблема не решается без специальных программ для взлома.

Автоматические распаковщики инсталляторов

Назначение программ для распаковки инсталляторов понятно. В настоящее время инсталляторы сами представляют собой достаточно сложные программы, вносящие изменения в систему или реестр, создающие ярлыки, записывающие файлы в различные папки. Но иногда инсталляторы выполняют нежелательные действия, например, пытаются без ведома пользователя установить различные тулбары или рекламные модули, отправляют разработчику информацию о факте установки, не дают выполнить установку без ввода пароля или серийного номера, и прочие гадости. В этом случае нам требуется извлечь из дистрибутива все содержащиеся в нем файлы, не запуская сам инсталлятор. Кроме файлов из некоторых инсталляторов можно извлечь так называемые скрипты установки, в которых прописывается последовательность действий, из них можно узнать какие ключи реестра меняются, какие файлы и куда записываются и т.п. Также извлеченные из инсталляторов скрипты можно в дальнейшем использовать для создания перепакованных вариантов программ, например, уже включающие в себя файлы с отломанной регистрацией. Еще некоторые особо одаренные аффтары проверяют целостность ранее установленной программы и не дают устанавливать обновления на модифицированные инсталляции, в основном такие милые приколы встречаются на играх. Так что умение бороться с инсталляторами всегда пригодится.

Самым мощным и удобным инструментом для автоматической распаковки инсталляторов является программа Universal Extractor. Она представляет собой оболочку для других распаковщиков, всего поддерживается несколько десятков различных форматов, в том числе таких популярных, как распаковка Inno Setup, InstallShield, Wise Installer и других. Поддерживается русский язык, интеграция в контекстное меню Проводника Windows, продвинутые пользователи могут сохранить и посмотреть лог работы внешних модулей распаковки. На момент написания статьи хостинг с дистрибутивами и исходниками Universal Extractor недоступен, поэтому выложу Universal Extractor здесь.

Universal Extractor 1.6.1

Многие инсталляторы представляют собой обычный архивный файл, к которому дописан модуль для его распаковки, то есть SFX-архив (Self-extracting архив). Поскольку распространенных алгоритмов компрессии не так много, в некоторых случаях для распаковки инсталляторов можно воспользоваться обычными архиваторами, например, WinRAR или бесплатным 7zip.

Теперь переходим к специализированным распаковщиками, ориентированным на конкретный тип инсталляторов. Наиболее мощный и популярный инструмент для создания инсталляторов - бесплатный Inno Setup, он обладает скриптовым языком, позволяющим делать практически неограниченные по опциям дистрибутивы.

innounp, распаковщик инсталляторов Inno Setup версий от 2.0.8 до 5.3.11. Inno Setup Unpacker - консольная утилита, поэтому для удобства работы сделано несколько графических оболочек, например, IS Unpacker Explorer (русскую версию можно найти на сайте MSILab) или InnoSetup And NSIS Unpacker Shell (требует 7zip и innounp).

InnoSetup And NSIS Unpacker Shell 1.4

Вспомогательная утилита InnoCry предназначена для обхода паролей на инсталляторах, созданных Inno Setup. Запускаете сперва инсталлятор, в котором требуется ввод пароля, параллельно запускаете InnoCry. Затем InnoCry несколькими способами пытается пропатчить в памяти исполняемый код инсталлятора, чтобы он не требовал ввода пароля. В последней версии также появилась опция активации заблокированных кнопок.

InnoCry 1.2.7

InnoExtractor сделан на базе архиватора 7zip. Позволяет просматривать и извлекать содержимое инсталляторов Inno Setup. Большой плюс в том, что InnoExtractor постоянно совершенствуется и поддерживает как старые, так и новейшие версии этого инсталлятора.

InnoExtractor 4.8.0.156

Для распаковки инсталляторов, созданных при помощи Nullsoft Scriptable Install System или сокращенно NSIS, удобнее всего пользоваться бесплатным архиватором 7zip. Он без труда открывает такие инсталляторы для просмотра и позволяет извлекать из них нужные файлы.

E_WISE 2002.03.29 - консольная утилита для извлечения файлов из WISE-инсталляторов. Поддерживаются практически все версии Wise-инсталляторов, в комплекте есть версии распаковщика для DOS, Windows и Linux, а также документация на английском и немецком языках.

E_WISE 2002.03.29

E_WISE 2002.07.01 (Update)

HWUN (Heuristic Wise UNpacker) также предназначен для распаковки инсталляторов WISE, но в отличие от предыдущей программы использует эвристические алгоритмы для поиска необходимых сигнатур и данных, так что есть большая вероятность, что он будет работать и с более новыми версиями инсталляторов.

Setup Factory Unpacker - консольный распаковщик инсталляторов Setup Factory версии 5 и 6. Как признается сам автор, имеют место быть глюки и баги, так что пригодится больше для коллекции.

Setup Factory Unpacker


Скриншот программы InstallShield (by one exe-file) Unpacker

InstallShield (by one exe-file) Unpacker - автоматический консольный распаковщик двух из трех известных типов инсталляторов, созданных программой InstallShield. Это одиночный cab-файл, упакованный в msi-контейнер, а также набор из установочных файлов и cab-архива, также помещенный внутрь msi-файла (Microsoft Installer). Третий тип, использующий шифрование, этим распаковщиком не поддерживается.

InstallShield (by one exe-file) Unpacker 0.99

Less MSIerables также используется для извлечения файлов из MSI-контейнеров, но имеет графический интерфейс и может встраиваться в Проводник Windows. Кроме извлечения файлов показывает всю дополнительную информацию, содержащуюся в инсталляторе.

Less MSIerables 1.0.8

Orca MSI Editor 3.1.4000.1830

JSWare MSI Unpacker - одна из новых разработок. Позволяет просматривать и извлекать файлы, а также смотреть какие настройки инсталлятор вносит в реестр при установке. Всячески рекомендую к использованию.

JSWare MSI Unpacker

Остался последний вопрос: а как определить, с помощью какой программы был собран тот или иной инсталлятор? Ответить на этот вопрос помогут программы для анализа исполняемых файлов. Например, PEiD четко определяет инсталляторы как "Inno Installer 5.1.2 [Overlay]" или "Nullsoft PiMP Stub [Nullsoft PiMP SFX]", так что проблем с идентификацией и выбором нужного инструментария быть не должно.

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