1. 简介

UPX(全称: Ultimate Packer for eXecutables),是一个开源的可履行文件紧缩东西。它的主要意图是将可履行文件和同享库(一般是二进制文件)紧缩为更小的尺度,然后削减磁盘占用空间和下载时刻。

UPX 采用无损紧缩技能,能够在不影响可履行文件的功用的情况下(紧缩后的文件仍可直接履行)减小文件的巨细。它一般用于减小应用程序、二进制文件或脚本的巨细,特别是在需求分发或传输这些文件时,以削减带宽和存储本钱。

2. 根本用法

2.1 首次用户

  1. 使用 x upx 即可主动下载并使用

    • 在终端运转 eval "$(curl https://get.x-cmd.com)" 即可完成 x 指令装置, 详情参阅 x-cmd 官网
  2. x-cmd 供给1分钟教程,其中包含了 upx 指令常用功用的 demo 示例,能够帮你快速上手 upx 。

2.2 使用示例

  1. 紧缩 ls 可履行文件为 als 文件。(als 文件仍可直接履行)
    指令格局:x upx <需求紧缩的可履行文件途径> -o <紧缩后的保存途径>
$ /bin/ls

$ x upx /bin/ls -o als
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2023
UPX 4.0.2       Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 30th 2023
        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
    141880 ->     61992   43.69%   linux/amd64   als
Packed 1 file.

$ ./als
  1. 使用 -l-t 选项判别文件是否通过 upx 紧缩。
    指令格局:x upx -l <文件途径>
    -l 功用选项为例,关于未通过 upx 紧缩的文件(如 /bin/ls ),会有如下提示(/bin/ls: NotPackedException: not packed by UPX)。
$ x upx -l /bin/ls als
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2023
UPX 4.0.2       Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 30th 2023
        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
upx: /bin/ls: NotPackedException: not packed by UPX
    141880 ->     61992   43.69%   linux/amd64   als
  1. 使用 -d 选项能够复原通过 upx 紧缩的文件。
    指令格局:x upx -d <文件途径>
$ x upx -d als
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2023
UPX 4.0.2       Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 30th 2023
        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
    146975 <-     61992   42.18%   linux/amd64   als
Unpacked 1 file.

3. 功用特色

3.1 多渠道可履行文件紧缩与高速解压

  1. 支持紧缩和解压各种不同渠道和架构下的可履行文:支持列表
  2. UPX 供给超卓的解压速度,在Pentium 133 (英特尔90年代末的一款干流桌面计算机处理器)上,解压速度大约为 10 MiB/秒,在 Athlon XP 2000 (AMD的一款cpu于2002年6月发布)上,解压速度大约为 200 MiB/秒。来历

3.2 杰出的紧缩性能和可扩展性

  1. UPX 团队宣称其在紧缩方面优于 zip 和 gzip,一般能够将程序和DLL文件的巨细减小约50%-70%。来历
  2. UPX 使用类布局(class layout),支持轻松增加新的可履行文件格局或紧缩算法

4. 竞品和相关作品

  1. PECompact 是一个用于紧缩 Windows 可履行文件的东西,它能够减小可履行文件的巨细,并供给了一些维护选项。

5. 进一步阅览

  • UPX 源代码 – UPX 项意图源代码托管在 GitHub,你能够在这里找到最新版别的 UPX 和参加社区奉献。
  • 维基百科 – 维基百科页面供给了关于 UPX 的详细前史和技能细节。
  • upx 手册页 – 供给关于 UPX 指令行东西的详细信息,包括使用说明、指令选项、示例和其他相关内容。