1. 简介
UPX(全称: Ultimate Packer for eXecutables),是一个开源的可履行文件紧缩东西。它的主要意图是将可履行文件和同享库(一般是二进制文件)紧缩为更小的尺度,然后削减磁盘占用空间和下载时刻。
UPX 采用无损紧缩技能,能够在不影响可履行文件的功用的情况下(紧缩后的文件仍可直接履行)减小文件的巨细。它一般用于减小应用程序、二进制文件或脚本的巨细,特别是在需求分发或传输这些文件时,以削减带宽和存储本钱。
2. 根本用法
2.1 首次用户
-
使用
x upx
即可主动下载并使用 -
x-cmd 供给1分钟教程,其中包含了 upx 指令常用功用的 demo 示例,能够帮你快速上手 upx 。
2.2 使用示例
- 紧缩 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
- 使用
-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
- 使用
-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 多渠道可履行文件紧缩与高速解压
- 支持紧缩和解压各种不同渠道和架构下的可履行文:支持列表
- UPX 供给超卓的解压速度,在Pentium 133 (英特尔90年代末的一款干流桌面计算机处理器)上,解压速度大约为 10 MiB/秒,在 Athlon XP 2000 (AMD的一款cpu于2002年6月发布)上,解压速度大约为 200 MiB/秒。来历
3.2 杰出的紧缩性能和可扩展性
- UPX 团队宣称其在紧缩方面优于 zip 和 gzip,一般能够将程序和DLL文件的巨细减小约50%-70%。来历
- UPX 使用类布局(class layout),支持轻松增加新的可履行文件格局或紧缩算法。
4. 竞品和相关作品
- PECompact 是一个用于紧缩 Windows 可履行文件的东西,它能够减小可履行文件的巨细,并供给了一些维护选项。