UPX

UPX ("ultimate packer for executables")は様々なOSのファイル形式に対応したFLOSSの実行ファイル圧縮ソフトウェアである。
圧縮.
UPXはUCL と呼ばれるデータ圧縮アルゴリズムを用いている。UCLはプロプライエタリなNRV ("Not Really Vanished") アルゴリズムの一部をオープンソースで実装したものである。
UCLは解凍用のコードがわずか数百バイトで実装できるようなシンプルな設計となっている。UCLは解凍のための追加のメモリ割り当てを要求しない。このことはUPXで圧縮された実行ファイルが余計なメモリを要求しないことを意味し、明確な優位点となっている。
UPX（2.90 beta以上）では多くのプラットフォームでLZMAが利用可能になっている。しかし、古いコンピュータでは解凍速度が遅いので16ビット環境ではデフォルトで無効化されている(codice_1オプションを用いると強制的に有効化できる)。
解凍.
UPXは解凍のための2つの方法を有している。イン・プレース手法と一時ファイルへの展開である。
イン・プレース手法は、メモリ上へ実行ファイルの解凍を行うが、UPXでサポートされているすべてのプラットフォームにおいて利用できるわけではない。イン・プレース手法が利用できない場合は一時ファイルへの展開が行われる。この方法には余分なオーバーヘッドと欠点がある。しかし、いかなる実行ファイル形式でも圧縮することができる。実行ファイルは一時的な場所に展開され、codice_2がファイルディスクリプタの生成のために用いられる。
ファイルディスクリプタの生成されると、一時ファイルはcodice_3することができ、スタブはスタブ自身を一時ファイルの実行可能イメージで上書きするために(codice_4を経由して)ファイルハンドルにcodice_5を行う。
一時ファイルへの展開を行う手法はいくつかの欠点がある
UPXによって圧縮された改変されていないファイルは大抵、アンチウイルスソフトウェアによって検出され、解凍される。UPXはUPX自身で圧縮された改変されていない実行ファイルを解凍する機能も有している。