Распаковка UPX вручную
Для примера возьмем любой файл и запакуем его с помощью UPX. Скачиваем с сайта упаковщик и запаковываем.
Убедимся, что файл запакован. Сделать это можно несколькими способами.
1) С помощью программы Detect it easy!
Как мы видим, он показывает, что файл упакован UPX(3.94)
2) С помощью PEid
Здесь тоже видим UPX.
3) С помощью PEView. PEView дает информацию о PE Header, из который мы можем увидеть, что бинарь содержит секции UPX.
Еще один способ понять, что что-то не так с файлом, это разница между значениями SizeOfRawData (размер данных на диске) и VirtualSize (количество памяти, которое надо выделить для секции). Например, у секции UPX0, SizeOfRawData равен 0, что уже ненормально, а VirtualSize = 67000, что говорит нам о том, что в секции заполняется данными во время выполнения.
4) Если открыть файл в IDA, то получим следующее сообщение:
IDA сообщает нам, что она не смогла определить стандартные секции в файле (.text, .data, …)
5) Посмотрев таблицу импорта, с помощью Dependency walker, мы видим только функции LodaLibrary, GetProcAddress. Такой набор функций говорит о том, что таблица импорта восстанавливается во время выполнение. Вручную загружается каждая библиотека (LoadLibrary) и достаются адреса каждой функции (GetProcAddress)
Мы определили, что файл запакован, теперь попробуем распаковать его вручную, с помощью IDA. Чтобы распаковать файл, нам необходимо сделать 3 вещи: 1) Отдебажить до того момента, когда данные распакуются 2) Разрезолвить таблицу импорта 3) Поменять OEP (Original Entry Point) на изначальный
Открываем файл в IDA поставив галочку на "Manual load" и убрав с "Create imports segment" (If checked, IDA will convert .idata section definitions to "extrn" directives and truncate it).
Далее нас попросят указать Image Base (его можно посмотреть, с помощью PEView, в IMAGE_OPTIONAL_HEADER), загружаем все секции. Теперь наша задача найти, когда выполняется инструкция PUSHA/PUSHAD (Поместить в стек значения всех 32-битных регистров общего назначения ). Запускаем, ищем, ставим брейкпоинт на PUSHAD.
С этой инструкции начинается процесс распаковки UPX, поэтому все значения регистров сохраняются. Соответственно, после распаковки должна быть выполнена инструкция POPA, которая восстановит прежние значения. На нее мы и должны поставить брейкпоинт. Сделать это можно двумя способами. 1) Text search по слову POPA, ставим брейкпоинт, продолжаем выполнение до срабатывания.
2) Выполняем инструкцию PUSHA (то есть EIP стоит на строке после PUSHA). Переходим на адрес ESP, с помощью нажатия стрелочки напротив ESP в списке регистров.
Ставим Hardware on write брейкпоинт размером 4 байта. Как альтернатива, можно также поставить брейкпоинт на адрес ESP + 4. Не забудь убрать брейкпоинт, после его срабатывания. Смысл в том, что ты ставишь брейкпоинт на ESP до распаковки. Когда все распакуется, ESP вернется к прежнему значению и выполнится POPA и сработает брейкпоинт.
После срабатывания брейкпонта на POPA, где-то рядом, дальше мы должны увидеть TAIL JMP.
TAIL JMP — инструкция, которая перенаправляет выполнение на OEP. Характерной особеностью адреса, по которому совершается переход, является его отдаленность, от текущего адреса. Это происходит, потому что данные распаковываются в секции UPX1 и помещаются в UPX0. Понять, что распаковка происходит в секцию UPX0 можно было по его свойствам SizeOfRawData=0 и VirtualSize. Плагины для дебаггеров, которые определяют OEP полагаются на это свойство перехода и определяют, когда выполнение в одной секции переходит на выполнение в другой. Выполняем инструкцию jmp.
Всё, теперь мы находимся на OEP, а значит надо сделать дамп распакованной в памяти программы. Делаем это, с помощью Lord PE. Запускаем LordPE, находим процесс, делаем dump full.
Открываем дамп в PE Editor (LordPE) и прописываем OEP, он у нас равен 57703 (RVA). Это адрес мы видим, после перехода по Tail JMP. Сохраняем.
Открываем дамп в Rebuild PE (Lord PE), чтобы подправить выравнивания и т.д.
Запускаем дамп, открываем ImpRec, чтобы подправить таблицу импорта. В ImpRec выбираем процесс дампа, нажимаем “IAT AutoSearch”, “Fix Dump”. Всё, можно сравнить таблицу импорта оригинального файла и полученного.
.UPX — Расширение файла
Файл upx — это архив, созданный Ultimate Packer для исполняемых файлов (UPX). upx-это бесплатная утилита с открытым исходным кодом, которую можно использовать для сжатия и запугивания исполняемых файлов. Файлы upx, как правило, меньше исходных исполняемых файлов, и их может быть сложнее для обратного инженера.
UPX работает, сжав исполняемый код и заменив его заглушкой, которая декомпрессирует код при запуске исполняемого файла. upx можно использовать для сжатия исполняемых файлов по разным причинам, например:
- Чтобы уменьшить размер файла и сделать его быстрее для загрузки и установки.
- Чтобы защитить интеллектуальную собственность в программном обеспечении, затрудняя реверс -инженер.
- Чтобы уклониться от обнаружения антивирусным программным обеспечением.
Файлы UPX могут быть открыты с помощью любого программного обеспечения, которое может открывать исполняемые файлы, например, проводник файлов или командная строка. Однако, если файл upx запутывается, его, возможно, потребуется декомпрессировать, прежде чем его можно будет открыть.
Существует ряд различных инструментов, которые можно использовать для декомпрессии файлов upx. Одним из популярных инструментов является upx Explorer.
Как открыть файл upx?
Чтобы открыть файл upx, вы можете использовать любое программное обеспечение, которое может открыть исполняемые файлы, такие как файловый обозреватель или командная строка. Однако, если файл upx запутывается, его, возможно, потребуется декомпрессировать, прежде чем его можно будет открыть.
Чтобы распаковать файл upx, вы можете использовать такой инструмент, как upx Explorer. upx Explorer-это бесплатный и инструмент с открытым исходным кодом, который можно использовать для сжатия и декомпрессии файлов upx.
Чтобы распаковать файл upx с upx Explorer, выполните следующие действия:
- Загрузите и установите upx Explorer.
- Откройте upx Explorer.
- Нажмите кнопку «Открыть» и выберите файл upx, который вы хотите распаковать.
- Нажмите кнопку «Декомпресс».
- UPX Explorer распаковывает файл upx и сохранит декомпрессированный файл в то же место, что и исходный файл.
После того, как файл upx будет декомпрессирован, вы можете открыть его с помощью любого программного обеспечения, которое может открывать исполняемые файлы.
Как создать файл upx?
Чтобы создать файл upx, вы можете использовать утилиту upx. upx-это бесплатная утилита с открытым исходным кодом, которую можно использовать для сжатия и запугивания исполняемых файлов.
Чтобы создать файл upx с UPX, выполните следующие действия:
- Загрузите и установите UPX.
- Откройте командную строку или окно терминала.
- Перейдите в каталог, где находится исполняемый файл upx.
- Запустите следующую команду:
- являются дополнительными аргументами, которые можно использовать для управления тем, как upx сжимает входной файл.
- Это исполняемый файл, который вы хотите сжать.
- Имя файла upx, который будет создан.
Например, для сжатия исполняемого файла my_program.exe и сохранить сжатый файл как my_program_upx.exe , вы выполните следующую команду:
upx my_program.exe my_program_upx.exe
После того, как файл upx был создан, вы можете распространять его для пользователей или развернуть его на производственных серверах.
Примечание: upx не может сжать все типы исполняемых файлов. Например, upx не может сжать исполняемые файлы, которые защищены другими методами защиты кода.
Преимущества использования UPX
Есть ряд преимуществ использования UPX, в том числе:
- Уменьшенный размер файла: upx может сжимать исполняемые файлы на 10-30%. Это может улучшить время загрузки и установки для программного обеспечения.
- Улучшенная безопасность: upx может использоваться для запугивания исполняемых файлов, что может затруднить их реверс -инженер. Это может помочь защитить интеллектуальную собственность в программном обеспечении и затруднить создание вредоносных программ, которые имитируют программное обеспечение.
- Снижение использования полосы пропускания: файлы upx можно использовать для уменьшения использования полосы пропускания, необходимого для загрузки и распространения программного обеспечения. Это особенно полезно для программного обеспечения, которое распространяется по Интернету.
Недостатки использования UPX
Есть также несколько недостатков использования UPX, в том числе:
- Снижение производительности: файлы upx иногда могут оказывать небольшое влияние на производительность программного обеспечения. Это связано с тем, что заглушка upx необходимо распаковать исполняемый код, прежде чем его можно будет запустить.
- Проблемы совместимости: файлы upx не всегда совместимы с более старым программным обеспечением или с программным обеспечением, которое использует конкретные методы защиты кода.
- Риски безопасности: файлы upx можно использовать для распространения вредоносных программ. Поэтому важно открыть только файлы upx из надежных источников.
.UPX — Расширение файла
Файл upx — это архив, созданный Ultimate Packer для исполняемых файлов (UPX). upx-это бесплатная утилита с открытым исходным кодом, которую можно использовать для сжатия и запугивания исполняемых файлов. Файлы upx, как правило, меньше исходных исполняемых файлов, и их может быть сложнее для обратного инженера.
UPX работает, сжав исполняемый код и заменив его заглушкой, которая декомпрессирует код при запуске исполняемого файла. upx можно использовать для сжатия исполняемых файлов по разным причинам, например:
- Чтобы уменьшить размер файла и сделать его быстрее для загрузки и установки.
- Чтобы защитить интеллектуальную собственность в программном обеспечении, затрудняя реверс -инженер.
- Чтобы уклониться от обнаружения антивирусным программным обеспечением.
Файлы UPX могут быть открыты с помощью любого программного обеспечения, которое может открывать исполняемые файлы, например, проводник файлов или командная строка. Однако, если файл upx запутывается, его, возможно, потребуется декомпрессировать, прежде чем его можно будет открыть.
Существует ряд различных инструментов, которые можно использовать для декомпрессии файлов upx. Одним из популярных инструментов является upx Explorer.
Как открыть файл upx?
Чтобы открыть файл upx, вы можете использовать любое программное обеспечение, которое может открыть исполняемые файлы, такие как файловый обозреватель или командная строка. Однако, если файл upx запутывается, его, возможно, потребуется декомпрессировать, прежде чем его можно будет открыть.
Чтобы распаковать файл upx, вы можете использовать такой инструмент, как upx Explorer. upx Explorer-это бесплатный и инструмент с открытым исходным кодом, который можно использовать для сжатия и декомпрессии файлов upx.
Чтобы распаковать файл upx с upx Explorer, выполните следующие действия:
- Загрузите и установите upx Explorer.
- Откройте upx Explorer.
- Нажмите кнопку «Открыть» и выберите файл upx, который вы хотите распаковать.
- Нажмите кнопку «Декомпресс».
- UPX Explorer распаковывает файл upx и сохранит декомпрессированный файл в то же место, что и исходный файл.
После того, как файл upx будет декомпрессирован, вы можете открыть его с помощью любого программного обеспечения, которое может открывать исполняемые файлы.
Как создать файл upx?
Чтобы создать файл upx, вы можете использовать утилиту upx. upx-это бесплатная утилита с открытым исходным кодом, которую можно использовать для сжатия и запугивания исполняемых файлов.
Чтобы создать файл upx с UPX, выполните следующие действия:
- Загрузите и установите UPX.
- Откройте командную строку или окно терминала.
- Перейдите в каталог, где находится исполняемый файл upx.
- Запустите следующую команду:
- являются дополнительными аргументами, которые можно использовать для управления тем, как upx сжимает входной файл.
- Это исполняемый файл, который вы хотите сжать.
- Имя файла upx, который будет создан.
Например, для сжатия исполняемого файла my_program.exe и сохранить сжатый файл как my_program_upx.exe , вы выполните следующую команду:
upx my_program.exe my_program_upx.exe
После того, как файл upx был создан, вы можете распространять его для пользователей или развернуть его на производственных серверах.
Примечание: upx не может сжать все типы исполняемых файлов. Например, upx не может сжать исполняемые файлы, которые защищены другими методами защиты кода.
Преимущества использования UPX
Есть ряд преимуществ использования UPX, в том числе:
- Уменьшенный размер файла: upx может сжимать исполняемые файлы на 10-30%. Это может улучшить время загрузки и установки для программного обеспечения.
- Улучшенная безопасность: upx может использоваться для запугивания исполняемых файлов, что может затруднить их реверс -инженер. Это может помочь защитить интеллектуальную собственность в программном обеспечении и затруднить создание вредоносных программ, которые имитируют программное обеспечение.
- Снижение использования полосы пропускания: файлы upx можно использовать для уменьшения использования полосы пропускания, необходимого для загрузки и распространения программного обеспечения. Это особенно полезно для программного обеспечения, которое распространяется по Интернету.
Недостатки использования UPX
Есть также несколько недостатков использования UPX, в том числе:
- Снижение производительности: файлы upx иногда могут оказывать небольшое влияние на производительность программного обеспечения. Это связано с тем, что заглушка upx необходимо распаковать исполняемый код, прежде чем его можно будет запустить.
- Проблемы совместимости: файлы upx не всегда совместимы с более старым программным обеспечением или с программным обеспечением, которое использует конкретные методы защиты кода.
- Риски безопасности: файлы upx можно использовать для распространения вредоносных программ. Поэтому важно открыть только файлы upx из надежных источников.
PE Explorer
главная программы
pe explorer
обзорный тур
Распаковщик UPX
Автоматическая распаковка файлов, сжатых UPX
В состав PE Explorer входит плагин для распаковки UPX. Этот плагин вызывается при каждом открытии файла и анализирует, не является ли открываемый файл сжатым при помощи UPX. Поддерживаются все версии UPX, начиная с самых ранних версий (до 0.80) и заканчивая самыми новыми 3.9x версиями.
Кроме того, PE Explorer поддерживает распаковку файлов, которые после сжатия UPX подверглись модификации с использованием так называемых UPX-скрэмблеров: Advanced UPX Scrambler, UPoLyX, UPX Lock. Так же PE Explorer поддерживает распаковку Upack и NSPack.
Теперь вы можете открывать файлы, сжатые UPX, и даже не заметить, что они были сжаты!
В случае, если открываемый исполняемый файл оказывается запакован UPX, плагин для распаковки UPX автоматически распаковывает файл и воссоздаёт его в его оригинальной несжатой форме, что позволяет вам проводить дальнейший анализ файла в PE Explorer.
При сохранении на диск файл записывается так же в распакованном виде. PE Explorer не запаковывает файл обратно. По этой причине размер файла до и после открытия может существенно отличатся, даже если вы не вносили в него никаких изменений.
Плагин для распаковки UPX отображает всю информацию о ходе процесса декомпрессии файла в нижней панели лога:
Распаковка вредоносных программ
Плагин для распаковки UPX содержит механизм распаковки файлов, которые подверглись модификации после сжатия. Такие файлы не могут быть распакованы стандартными средствами самого UPX, поскольку была изменена внутренняя структура файла. Например, имя секции UPX переименовано в XYZ, или версия формата UPX исправлено с 1.20 на 3.21. Эта техника часто используется вирусмейкерами для маскировки и защиты от распаковки.
Чтобы распаковать такой EXE файл самостоятельно, вам бы пришлось запустить его и снять дамп запакованных участков памяти с последующей записью на жёсткий диск после того, как файл полностью распакуется в памяти компьютера.
PE Explorer полностью избавляет вас от необходимости этим заниматься. Всё, что нужно, чтобы распаковать подобный обфусцированный файл — это просто открыть его в PE Explorer. Все операции по распаковке происходят автоматически.
Более того, плагин для распаковки UPX предпринимает попытку восстановить исходный файл, даже если в сжатом файле отсутствует оригинальный PE заголовок. Обычно отсутствие заголовка у PE файла делает его полностью неработоспособным и не подлежащим восстановлению. Однако, используя PE Explorer, вы получаете неплохой шанс на восстановление и анализ таких файлов.
Менеджер плагинов
При выборе команды Plug-in Manager из меню Tools открыается окно Менеджера плагинов .
Менеджер плагинов отображает список плагинов, подключенных к PE Explorer, и позволяет устанавливать очередность их выполнения. Чем больше значение Priority, тем выше приоритет выполнения. Установив значение Priority равным нулю, вы отключаете плагин. Отключенные плагины помечены красным значком, включенные — зелёным.
Пожалуйста, обратите внимание, что текущая версия PE Explorer пока не поддерживает выполнение цепочки плагинов. Это значит, что сейчас вызов следующего по списку плагина произойдёт только в том случае, если предыдущий плагин вернул FALSE после исполнения. После первого же успешного срабатывания любого плагина процесс обработки прекращается и файл передаётся в PE Explorer.
Написание собственных плагинов
Плагин для распаковки UPX предназначен для только работы с файлами, сжатыми UPX. Если вы хотите расширить функциональность PE Explorer и создать свой собственный плагин для обработки файла во время его открытия, воспользуйтесь предоставленным API для плагинов. Документацию по API можно найти в файле помощи, в разделе Plug-Ins.
Обзорный тур
назад | след.