Привет, хабровчане. В рамках курса «Reverse-Engineering. Basic» Александр Колесников (специалист по комплексной защите объектов информатизации) подготовил авторскую статью.
Также приглашаем всех желающих на открытый вебинар по теме «Эксплуатация уязвимостей в драйвере. Часть 1». Участники вебинара вместе с экспертом разберут уязвимости переполнения в драйверах и особенности разработки эксплойтов в режиме ядра.
Статья расскажет о подходах к анализу запакованных исполняемых файлов с помощью простых средств для обратной разработки. Будут рассмотрены некоторые пакеры, которые применяются для упаковки исполняемых файлов. Все примеры будут проведены в ОС Windows, однако изучаемые подходы можно легко портировать на любую ОС.
Инструментарий и настройка ОС
Для тестов будем использовать виртуальную машину под управлением ОС Windows. Инструментарий будет содержать следующие приложения:
- отладчик x64dbg;
- установленный по умолчанию плагин x64dbg Scylla;
- hiew Demo;
Самый быстрый и простой способ провести распаковку любого исполняемого файла — применить отладчик. Но так как мы будем также рассматривать язык программирования Python, то может понадобится проект:
МЕНЯ КИНУЛ UP-X НА 15 000 000 РУБЛЕЙ
- uncompile6 проект, который позволяет разобрать байткод виртуальной машины Python;
- pyinstallerExtractor инструмент для распаковки архива pyInstaller.
Общие методы снятия паковки
Разберемся, что же такое паковка. В большинстве случаев исполняемые файлы современных языков программирования имеют довольно большой размер при минимальном наборе функций. Чтобы оптимизировать данную величину, можно применить паковку или сжатие. Наиболее распространенный на сегодняшний день пакер — UPX. Ниже приведен пример того, как пакер проводит сжатие исполняемого файла.
На картинке может показаться, что файл стал по размеру больше, однако это не всегда так. Большинство файлов за счет такой модификации могут уменьшить свой размер до 1.5 раз от исходного объема.
Что же от этого реверс-инженеру? Почему надо знать и уметь определять, что файл упакован? Приведу наглядный пример. Ниже приведен снимок файла, который не запакован:
И файл, который был пропущен через алгоритм UPX:
Изменения коснулись в этом случае двух основных точек исполняемого файла:
- Точка входа — в случае с упакованным файлом это начало алгоритма распаковки, настоящий алгоритм программы будет работать только после того, как будет распакован оригинальный файл;
- Код оригинального файла: теперь не найти паттернов, которые можно сразу разбирать как команды.
Итак, чтобы снова анализировать оригинальный файл, нужно найти настоящую или оригинальную точку входа. Для этого нужно разбить алгоритм на основные этапы:
ПРОВЕРКА САЙТА АП ИКС В 2022 ГОДУ | Поймал x99 на UP-X!
- Этап подготовки исполнения файла — загрузчик ОС настраивает окружение, загружает файл в оперативную память;
- Сохранение контекста — упаковщик сохраняет контекст исполнения файла (набор значений регистров общего назначения, которые были установлены загрузчиком ОС);
- Распаковка оригинального файла;
- Передача управления оригинальному файлу.
Все описанные выше этапы можно легко отследить в отладчике. Особенно может выделяться процедура сохранения контекста. Для нее в разных архитектурах могут быть использованы команды pushad/popad или множественное использование команды push . Поэтому всегда приложение трассируют до первого изменения регистра ESP/RSP, и ставят «Hardware Breakpoint» на адрес, который был помещен в регистр в первый раз. Второе обращение этому адресу будет в момент восстановления контекста, который заполнил загрузчик ОС. Без него приложение завершится с ошибкой.
Пример UPX
Попробуем с помощью отладчика найти оригинальную точку входа для приложения. Запечатлим оригинальную точку входа до упаковки UPX:
Как та же точка входа выглядит после упаковки:
Запустим отладчик и попробуем найти место сохранения контекста:
Ждем первого использования ESP — в отладчике при этом значение регистра подсветится красным цветом. Затем устанавливаем точку останова на адрес и просто запускаем приложение:
В результате попадаем на оригинальную точку входа:
Вот так просто, теперь используя плагин Scylla Hide можно сохранить результирующий файл на жесткий диск и продолжить его анализ.
Подобный метод можно применять для любого упаковщика, который сохраняет контекст на стек.
Пример PyInstaller
Не всегда подобный подход работает для приложений, которые используют более сложную структуру исполняемого файла. Рассмотрим файл, который был создан с помощью PyInstaller — пакет, который позволяет преобразовать Python скрипт в исполняемый файл. При генерации исполняемого файла создается архив, который содержит виртуальную машину Python и все необходимые библиотеки. Сам исходный код приложения при этом преобразуется в байт код и его нельзя дезассемблировать.
Попробуем все же получить что-то читаемое. Создадим простое приложение на Python и упакуем с помощью PyInstaller. Исходный код приложения:
def main(): print(«Hello World!») if __name__ == ‘__main__’: main()
Установим пакет pyInstaller и создадим exe файл:
pip install pyinstaller pyinstaller -F hello.py #-F создать один файл
Итак, проведем сбор информации о том, что в итоге получилось. У нас есть архив, который должен запустить виртуальную машину, и код, который мы записали в виде скрипта. Попробуем восстановить исходник и просто его прочесть даже без запуска.
После выполнения команд выше, у вас должна создаться директория ./dist/test.exe . Откроем последовательно файл с помощью pyinstallerextractor и uncompile3 :
Наш скрипт находится в директории, которая создается в результате распаковки. Наименование файла должно соответствовать названию exe файла. В нашем случае это test.pyc . Откроем его в hiew :
Декомпиляция стандартными средствами невозможна, так как инструменты просто не умеют работать с байткодом Python. Применим специализированный инструмент — uncompile6 .
Таким образом можно снова получить исходный код.
Источник: habr.com
Расширение файла UPX
UPX — это расширение файла, обычно связанное с файлами Ultimate Packer For EXecutables Format. Markus Oberhumer определил стандарт формата Ultimate Packer For EXecutables Format. Файлы с расширением UPX могут использоваться программами, распространяемыми для платформы Windows. UPX формат файла, наряду с #NUMEXTENSIONS # другими форматами файлов, относится к категории Исполняемые файлы.
PeaZip является наиболее используемой программой для работы с UPX файлами. Программное обеспечение PeaZip было разработано Giorgio Tani, и на его официальном веб-сайте вы можете найти дополнительную информацию о файлах UPX или программном обеспечении PeaZip.
Программы, которые поддерживают UPX расширение файла
Ниже приведена таблица со списком программ, которые поддерживают UPX файлы. UPX файлы можно встретить на всех системных платформах, включая мобильные, но нет гарантии, что каждый из них будет должным образом поддерживать такие файлы.
Программы, обслуживающие файл UPX
Windows
Как открыть файл UPX?
Причин, по которым у вас возникают проблемы с открытием файлов UPX в данной системе, может быть несколько. Что важно, все распространенные проблемы, связанные с файлами с расширением UPX, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Приведенный ниже список проведет вас через процесс решения возникшей проблемы.
Шаг 1. Установите PeaZip программное обеспечение
Наиболее распространенной причиной таких проблем является отсутствие соответствующих приложений, поддерживающих файлы UPX, установленные в системе. Решение этой проблемы очень простое. Загрузите PeaZip и установите его на свое устройство. Выше вы найдете полный список программ, которые поддерживают UPX файлы, классифицированные в соответствии с системными платформами, для которых они доступны. Самый безопасный способ загрузки PeaZip установлен — для этого зайдите на сайт разработчика (Giorgio Tani) и загрузите программное обеспечение, используя предоставленные ссылки.
Шаг 2. Убедитесь, что у вас установлена последняя версия PeaZip
Если проблемы с открытием файлов UPX по-прежнему возникают даже после установки PeaZip, возможно, у вас устаревшая версия программного обеспечения. Проверьте веб-сайт разработчика, доступна ли более новая версия PeaZip. Может также случиться, что создатели программного обеспечения, обновляя свои приложения, добавляют совместимость с другими, более новыми форматами файлов. Причиной того, что PeaZip не может обрабатывать файлы с UPX, может быть то, что программное обеспечение устарело. Последняя версия PeaZip должна поддерживать все форматы файлов, которые совместимы со старыми версиями программного обеспечения.
Шаг 3. Настройте приложение по умолчанию для открытия UPX файлов на PeaZip
Если у вас установлена последняя версия PeaZip и проблема сохраняется, выберите ее в качестве программы по умолчанию, которая будет использоваться для управления UPX на вашем устройстве. Процесс связывания форматов файлов с приложением по умолчанию может отличаться в деталях в зависимости от платформы, но основная процедура очень похожа.
Выбор приложения первого выбора в Windows
- Щелкните правой кнопкой мыши на файле UPX и выберите « Открыть с помощью опцией».
- Далее выберите опцию Выбрать другое приложение а затем с помощью Еще приложения откройте список доступных приложений.
- Последний шаг — выбрать опцию Найти другое приложение на этом. указать путь к папке, в которой установлен PeaZip. Теперь осталось только подтвердить свой выбор, выбрав Всегда использовать это приложение для открытия UPX файлы и нажав ОК .
Выбор приложения первого выбора в Mac OS
- Щелкните правой кнопкой мыши на файле UPX и выберите Информация.
- Откройте раздел Открыть с помощью, щелкнув его название
- Выберите PeaZip и нажмите Изменить для всех .
- Должно появиться окно с сообщением, что это изменение будет применено ко всем файлам с расширением UPX. Нажимая Вперед , вы подтверждаете свой выбор.
Шаг 4. Убедитесь, что UPX не неисправен
Вы внимательно следили за шагами, перечисленными в пунктах 1-3, но проблема все еще присутствует? Вы должны проверить, является ли файл правильным UPX файлом. Вероятно, файл поврежден и, следовательно, недоступен.
1. UPX может быть заражен вредоносным ПО — обязательно проверьте его антивирусом.
Если UPX действительно заражен, возможно, вредоносное ПО блокирует его открытие. Сканируйте файл UPX и ваш компьютер на наличие вредоносных программ или вирусов. Если файл UPX действительно заражен, следуйте инструкциям ниже.
2. Проверьте, не поврежден ли файл
Если вы получили проблемный файл UPX от третьего лица, попросите его предоставить вам еще одну копию. В процессе копирования файла могут возникнуть ошибки, делающие файл неполным или поврежденным. Это может быть источником проблем с файлом. Это может произойти, если процесс загрузки файла с расширением UPX был прерван и данные файла повреждены. Загрузите файл снова из того же источника.
3. Проверьте, есть ли у пользователя, вошедшего в систему, права администратора.
Некоторые файлы требуют повышенных прав доступа для их открытия. Войдите в систему, используя учетную запись администратора, и посмотрите, решит ли это проблему.
4. Проверьте, может ли ваша система обрабатывать PeaZip
Если система перегружена, она может не справиться с программой, которую вы используете для открытия файлов с расширением UPX. В этом случае закройте другие приложения.
5. Проверьте, есть ли у вас последние обновления операционной системы и драйверов
Регулярно обновляемая система, драйверы и программы обеспечивают безопасность вашего компьютера. Это также может предотвратить проблемы с файлами Ultimate Packer For EXecutables Format. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами UPX, влияющими на более старые версии данного программного обеспечения.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла UPX мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле UPX.
Источник: www.file-extension.info
UPX – браузер со встроенным VPN 98.0.4758.101
UPX — это приложение для прокси-браузера с самым рейтингом для Android. Он может разблокировать веб-сайты, изменив ваш IP-адрес, и сохранить вашу анонимность в сети. С более чем 7 миллионами пользователей по всему миру. UPX Browser предоставляет лучший частный браузер и анонимные сервисы просмотра.
Лучший Telegram-канал про технологии (возможно)
UPX — лучший бесплатный и неограниченный быстрый прокси, vpn-браузер для Android для разблокировки сайтов, просмотра онлайн-видео, обхода заблокированных веб-сайтов, безопасной точки доступа Wi-Fi и конфиденциального просмотра веб-страниц. Это секретный браузер со встроенным прокси-сервером vpn, обеспечивающий вашу конфиденциальность без дополнительных настроек, необходимых в школе, офисе, колледже. Свобода в Интернете не заслуживает цензуры. Просматривайте всю сеть инкогнито с помощью бесплатной разблокировки веб-сайтов в браузере и получайте бесплатный доступ ко всем заблокированным и заблокированным веб-сайтам.
Почему стоит выбрать приложение UPX Proxy Browser?
Вы можете использовать его по двум основным причинам:
- Разблокируйте сайты, заблокированные в вашей стране, с помощью специального для вас IP-адреса.
- Защитите свою конфиденциальность в Интернете, поскольку UPX — это онлайн-прокси-браузер в режиме инкогнито для Android, ваш трафик маршрутизируется через наши серверы в различных странах, таких как США, Великобритания, Германия, Франция, Сингапур, поэтому при просмотре с UPX не остается никаких следов, что делает его идеальным решением для обеспечения анонимности и безопасности.
Браузер конфиденциальности UPX позволяет:
- Антиблокировка сайтов, разблокировка YouTube, Facebook, Twitter, Instagram и т. Д.
- Просматривайте без отслеживания.
- Обеспечьте безопасность и анонимность ваших подключений с помощью Shield.
- Обойти все брандмауэры веб-сайтов.
- Наше бесплатное приложение для браузера VPN создано профессионалами.
- Безлимитный серфинг без ограничений по полосе пропускания или скорости
- Анонимный просмотр, скрывая ваш реальный IP-адрес и предоставляя частный IP-адрес.
- Разблокируйте веб-сайты в школе, офисе, на работе, через точку доступа Wi-Fi и разблокируйте веб-приложения, изображения и смотрите видео на YouTube.
- Получите функциональность браузера Chrome с помощью встроенных, готовых к использованию быстрых прокси-серверов (без дополнительных настроек).
- Встроенная скорость VPN и технология безопасного туннеля для защиты данных, конфиденциальности и безопасности.
- Включите режим браузера инкогнито или легко удалите историю.
Динамический случайный IP-адрес в качестве браузера. Прокси-приложение UPX — это самый быстрый и эффективный загрузчик веб-прокси-браузера для обеспечения анонимности и секретности. Просто открыв приложение, вы можете просматривать и получать доступ практически к любому заблокированному веб-сайту в вашей стране.
IP-коммутация. Прокси-приложение UPX автоматически и динамически назначает вам самый быстрый сервер один раз и направляет весь ваш трафик через этот сервер, поэтому вы всегда будете оставаться анонимными, неотслеживаемыми и быстрыми в Интернете!
Нет журналов позади. Мы не храним данные пользователей на наших серверах, чтобы обеспечить их безопасность и анонимность.
Разблокируйте сайты социальных сетей. Вы можете разблокировать Facebook, разблокировать Instagram, разблокировать Twitter и т. Д. Вы можете войти на эти сайты с UPX.
Постоянный быстрый интернет. Частный браузер легкий и работает очень быстро и постоянно, когда вы просматриваете веб-страницы.
Отказ от ответственности. Обратите внимание, что приложение UPX Unblocked Speed VPN Private Browser для Android обеспечит вашу защиту и безопасный приватный просмотр только внутри приложения.
Источник: trashbox.ru