| 初回リリース | 1998年5月26日 |
|---|---|
| 安定版リリース | 4.2.2 / 2024年1月3日 |
| リポジトリ |
|
| 書かれた | C++、アセンブリ |
| オペレーティング·システム | Microsoft Windows、Linux、macOS、DOS、Atari TOS |
| プラットフォーム | i386、MIPS、AMD64、ARM、PowerPC、m68k |
| 利用可能 | 英語 |
| タイプ | 実行ファイルの圧縮 |
| ライセンス | 圧縮実行ファイルを除くGPL [1] 、バイナリ配布における圧縮アルゴリズムはプロプライエタリ[2] |
| Webサイト | 翻訳元 |
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強制的に有効にするには を使用します)。
UPXバージョン3.91以降では、 Windowsプラットフォーム上の64ビット(x64)PEファイルもサポートしています。[7]この機能は現在、実験的なものとして宣言されています。
減圧
UPX は、インプレース手法と一時ファイルへの抽出という 2 つの解凍メカニズムをサポートしています。
実行ファイルをメモリに解凍するインプレース手法は、サポートされているすべてのプラットフォームで使用できるわけではありません。この手法には、メモリの面でより効率的であり、OS によって設定された環境が正しいままであるという利点があります。
残りは一時ファイルへの抽出を使用します。この手順には追加のオーバーヘッドやその他の欠点が伴いますが、任意の実行可能ファイル形式をパックできます。一時ファイルへの抽出方法には、いくつかの欠点があります。
改変されていない UPX パックは、多くの場合、ウイルス対策ソフトウェアスキャナーによって検出され、解凍されます。UPX には、自身でパックされた改変されていない実行可能ファイルを解凍する組み込み機能もあります。
サポートされている形式
UPXは以下のフォーマットをサポートしています: [8]
- ポータブル実行可能ファイル(PE、EXE、DLLファイル):
- DJGPP2で使用されるCOFF実行ファイル
- a.out形式、BSD i386 (削除)
- 生の 8086/DOS ファイル: [nb 1]
- Watcom / LE ( DOS4G、PMODE/W、DOS32A 、CauseWayで使用) [引用が必要]
- TMT/adam (TMT Pascal コンパイラによって生成されたもの)
- アタリ/TOS
- Linuxカーネル、i386、x86-64、ARM
- Linux実行可能およびリンク可能フォーマット、i386、x86-64、ARM、PowerPC、MIPS
- プレイステーション1 /EXE (MIPS R3000)
- Darwin Mach-O、ppc32、i386、x86-64 など
UPX は現在、.NET Framework上で実行することを目的としたCILコードを含むPEファイルをサポートしていません。
注記
- ^ abc DOS ターゲットの場合、UPX は、組み込みの解凍プログラムを 8088/8086 プロセッサと互換性を持たせるための特別なオプションをサポートしており、これにより
-8086、DOS を実行する初期の PC でも圧縮ファイルを実行して解凍することができます。 - ^ DOS .COM スタイルのファイルを圧縮する機能は、他のバイナリ実行可能ファイルの圧縮にも利用できます。FreeDOSおよびEDR -DOSカーネル ファイルの中には、この方法で UPX 圧縮可能なものがあることが知られています。
- ^ DOS .COM スタイルのファイルを圧縮する機能は、これらのファイルを使用するドライバー/アプリケーションが UPX 圧縮ファイルを検出し、ファイルに埋め込まれた解凍プログラムにジャンプするように拡張されている場合、非実行バイナリ データファイルの圧縮にも利用できます。FreeDOSは、これを .CPX ファイル、UPX 圧縮された .CPI フォント ファイルに利用することが知られています。
参考文献
- ^ 「UPXライセンス契約」。2016年3月12日時点のオリジナルよりアーカイブ。2016年9月14日閲覧。
- ^ ab “The UPX Hacker's Guide”. GitHub . 2022年2月19日. 2022年5月14日時点のオリジナルよりアーカイブ。 2016年9月14日閲覧。
- ^ Marak, Victor (2015). Windows マルウェア分析の基本. Packt Publishing. p. 188. ISBN 978-1-78528-151-8. 2022年5月14日にオリジナルからアーカイブされました。2015年11月22日に取得。
Ultimate Packer for Executables (UPX) などのパッカーは、サイズの縮小が主な目的であり、副産物として生じる可能性のある難読化ではないため、実行可能ファイルの圧縮ツールに近いと言えます...
- ^ Blunden, Bill (2013). The Rootkit Arsenal (第2版). Jones & Bartlett Learning. pp. 353–355. ISBN 978-1-4496-2636-5. 2022年5月14日時点のオリジナルよりアーカイブ。2015年11月22日閲覧。
最もよく使われている実行可能パッカーの1つはUPX(実行可能ファイル用のUltimate Packer)です。UPXは数十種類の異なる実行可能形式を処理できるだけでなく、ソースコードもオンラインで入手できます。
- ^ Markus Oberhumer. 「UCLデータ圧縮ライブラリ」。oberhumer.com。2024年6月28日時点のオリジナルよりアーカイブ。2022年1月11日閲覧。
- ^ Markus Oberhumer. 「NRV 圧縮ライブラリ」。2012 年 9 月 9 日時点のオリジナルよりアーカイブ。
- ^ 「UPX News」。2018年1月4日時点のオリジナルよりアーカイブ。2016年9月14日閲覧。
- ^ – Linux一般コマンドマニュアル
- ^ 「dos extender rtm32 - スタブのファイル形式? \ VOGONS」。2022年1月11日時点のオリジナルよりアーカイブ。2022年1月11日閲覧。
外部リンク
- 公式サイト
