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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

Упаковщик исполнимых файлов[править | править исходный текст]

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

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

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

Примеры упаковщиков[править | править исходный текст]

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

Распаковщики[править | править исходный текст]

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

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

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

См. также[править | править исходный текст]

Ссылки[править | править исходный текст]