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 命令行工具的详细信息,包括使用说明、命令选项、示例和其他相关内容。
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐