概要
UPX(Ultimate Packer for eXecutables)は、実行形式のファイルやライブラリを圧縮し、サイズを大幅に削減するOSSのツール。
サポート形式
・PE:(Portable Executable):Windowsの.exe/.dllなど
・ELF:(linux/Unix系のバイナリ)
・Mach-O:macOSの実行ファイル
などなど
特徴
圧縮率
・一般的に50%~70%のサイズ削減が可能。Zip/Gzipよりも高い圧縮率を実現。
高速展開
・解答は、10MB/s以上と高速である。古いハードウェアでもリアルタイムに実行可能。
自己完結型実行
・圧縮後のバイナリには展開用のスタブが組み込まれ、追加ライブラリ不要で動作する。
拡張性
・OSSかつプラグイン機構により、独自のフォーマットの追加も可能。
簡単な動作原理
スタブと圧縮
- 元のバイナリをブロック単位で圧縮
- 圧縮済みデータと展開用スタブを連結
- 起動時にスタブが展開し、メモリ上で実行
メモリとランタイム
・圧縮前と比べたメモリ使用量の増加は最小限に抑えられている。完全にオーバーヘッドがないわけではない。
参考文献(参照日2025年5月24日)