UPX

UPX
The Ultimate Packer for eXecutables
初版 1998年5月26日
最新版
4.2.2 / 2024年1月3日 (4か月前) (2024-01-03)
リポジトリ
  • github.com/upx/upx
ウィキデータを編集
プログラミング
言語
C++, アセンブリ
対応OS Windows, Linux, macOS, DOS, Atari
プラットフォーム i386, MIPS, AMD64, ARM, PPC, m68k
対応言語 英語
種別 実行ファイル圧縮
ライセンス 圧縮された実行ファイルを例外とするGPL[1]
公式サイト upx.github.io
テンプレートを表示

UPX (ultimate packer for executables)は様々なOSのファイル形式に対応したFLOSS実行ファイル圧縮ソフトウェアである。

圧縮

UPXはUCL[2] と呼ばれるデータ圧縮アルゴリズムを用いている。UCLはプロプライエタリなNRV (Not Really Vanished[3]) アルゴリズムの一部をオープンソースで実装したものである[4]

UCLは解凍用のコードがわずか数百バイトで実装できるようなシンプルな設計となっている。UCLは解凍のための追加のメモリ割り当てを要求しない。このことはUPXで圧縮された実行ファイルが余計なメモリを要求しないことを意味し、明確な優位点となっている。

UPX(2.90 beta以上)では多くのプラットフォームでLZMAが利用可能になっている。しかし、古いコンピュータでは解凍速度が遅いので16ビット環境ではデフォルトで無効化されている(--lzmaオプションを用いると強制的に有効化できる)。

解凍

UPXは解凍のための2つの方法を有している。イン・プレース手法と一時ファイルへの展開である。

イン・プレース手法は、メモリ上へ実行ファイルの解凍を行うが、UPXでサポートされているすべてのプラットフォームにおいて利用できるわけではない。イン・プレース手法が利用できない場合は一時ファイルへの展開が行われる。この方法には余分なオーバーヘッドと欠点がある。しかし、いかなる実行ファイル形式でも圧縮することができる。

一時ファイルへの展開を行う手法はいくつかの欠点がある

  • suidのような特別なアクセス権限は無視される。
  • argv[0]は無意味である。
  • アプリケーションは共通セグメントを共有できない。

UPXによって圧縮された改変されていないファイルは大抵、アンチウイルスソフトウェアによって検出され、解凍される。UPXはUPX自身で圧縮された改変されていない実行ファイルを解凍する機能も有している。

サポートされているフォーマット

脚注

  1. ^ http://upx.github.io/upx-license.html
  2. ^ http://www.oberhumer.com/opensource/ucl/
  3. ^ http://www.oberhumer.com/products/nrv/
  4. ^ http://upx.hg.sourceforge.net/hgweb/upx/upx/file/5d434f4a3fe7/README.SRC

外部リンク

ポータル FLOSS
ポータル FLOSS
データ圧縮ソフトウェア実装
映像圧縮
(比較)
非可逆
MPEG-4 ASP
H.264/MPEG-4 AVC
HEVC
その他
  • CineForm
  • DNxHD
  • Helix DNA Producer(英語版)
  • libavcodec
  • SBC
  • Sorenson
  • VP7
  • Windows Media Encoder
可逆
開発停止
音声圧縮
(比較)
非可逆
可逆
可逆圧縮*
フリーソフトウェア
圧縮アーカイバ
(比較)
フリーソフトウェア
フリーウェア
  • IZArc
  • StuffIt Expander (展開のみ)
  • UHarc/WinUHA
  • ZipGenius
商用
開発停止
  • *アーカイブしない