Упаковка исполняемых файлов

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

Упаковщик исполняемых файлов

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

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

Упакованный исполняемый файл — это разновидность самораспаковывающегося архива (SFX), в котором сжатая информация и программа для распаковки находятся в одном файле.

Примеры упаковщиков

Помимо алгоритмов упаковки, встроенных в некоторые компиляторы и средства разработки (например, Visual C++ и т. п.), существует ряд инструментов для более специфических задач, например:

Распаковщики

Точная распаковка исполняемых файлов, как и обратная разработка в целом, зачастую бывает затруднена или невозможна.

Многие распаковщики (например, procdump) запускают файл и создают распакованный вариант файла из образа, загруженного в память. Однако в случае, если этот файл содержал вирус, система может быть повреждена. Кроме того, у упаковщиков существует ряд приёмов борьбы с динамической распаковкой: например, расшифровывать код не полностью, а лишь по мере исполнения, или, например, расшифровывать и запускать вирус целиком только в определённый день недели.

Статические распаковщики, которые пытаются распаковать файл, не запуская его (например, CUP386 или UNP), оказываются бесполезны, если алгоритм упаковки требует запуска файла.

См. также

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.