| UPX | |
|---|---|
| 初回リリース | 1998年5月26日 (1998年5月26日) |
| 安定版リリース | 5.0.2 / 2025年7月20日 (2025年7月20日) |
| リポジトリ | |
| 書かれた | C++、アセンブリ |
| オペレーティング·システム | Microsoft Windows、Linux、macOS、DOS、Atari TOS |
| プラットフォーム | i386、MIPS、AMD64、ARM、PowerPC、m68k |
| 入手可能な | 英語 |
| タイプ | 実行可能ファイルの圧縮 |
| ライセンス | 圧縮された実行ファイルを除くGPL [ 1 ] 、バイナリ配布における圧縮アルゴリズムについては独自のもの[ 2 ] |
| Webサイト | upx |
UPX(Ultimate Packer for eXecutables)は、さまざまなオペレーティングシステムのさまざまなファイル形式をサポートする無料のオープンソース実行可能パッカーです。 [ 3 ] [ 4 ]
UPXはUCLと呼ばれるデータ圧縮アルゴリズムを使用します。 [ 5 ]これは、独自のNRV(Not Really Vanished)[ 6 ]アルゴリズムの一部をオープンソースで実装したものです。[ 2 ]
UCLは、わずか数百バイトのコードで解凍プログラムを実装できるほどシンプルに設計されています。UCLでは解凍用に追加のメモリを割り当てる必要がないため、UPXで圧縮された実行ファイルは通常、追加メモリを必要としません。
UPX (2.90 ベータ版以降) はほとんどのプラットフォームでLZMAを使用できます。ただし、古いコンピュータでは解凍速度が遅いため、16 ビットではデフォルトで無効になっています (--lzma強制的に有効にするには を使用します)。
バージョン3.91以降、UPXはWindowsプラットフォーム上の64ビット(x64) PEファイルもサポートしています。[ 7 ]この機能は現在実験的なものとされています。
UPX は、インプレース手法と一時ファイルへの抽出という 2 つの解凍メカニズムをサポートしています。
実行ファイルをメモリ上に解凍するインプレース方式は、サポートされているすべてのプラットフォームで実行できるわけではありません。この方式の利点は、メモリ効率が高く、OSによって設定された環境が適切に維持されることです。
残りの方法は、一時ファイルへの展開を使用します。この手順には追加のオーバーヘッドやその他の欠点がありますが、あらゆる実行ファイル形式を圧縮できます。一時ファイルへの展開方法には、いくつかの欠点があります。
改変されていないUPXファイルは、ウイルス対策ソフトウェアのスキャナによって検出・解凍されることがよくあります。UPXには、自身でパックされた改変されていない実行ファイルを解凍する機能も組み込まれています。
UPXは以下のフォーマットをサポートしています: [ 8 ]
UPX は現在、.NET Framework上で実行するためのCILコードを含むPEファイルをサポートしていません。
-8086により、DOSを実行する初期の PC でも圧縮ファイルを実行して解凍できるようになります。Packer for Executables(UPX)などのパッカーは、サイズの縮小が主な目的であり、難読化が副産物となる可能性もあるため、実行ファイル圧縮ツールに近いと言えます。
最も広く使用されている実行ファイルパッカーの一つがUPX(実行ファイル用Ultimate Packer)です。UPXは数十種類の異なる実行ファイル形式に対応しているだけでなく、ソースコードもオンラインで公開されています。