热门问题
时间线
聊天
视角

UPX

来自维基百科,自由的百科全书

UPX
Remove ads

UPX(英語:the Ultimate Packer for eXecutables)是一個自由開源的可執行程序文件加殼器,支持許多不同操作系統下的可執行文件格式。

事实速览 首次發布, 當前版本 ...

壓縮

UPX使用一種叫做UCL的壓縮演算法,為NRV(Not Really Vanished)演算法的一個開源部分實做。

得益於UCL的簡單設計,其解壓縮程式碼只需要額外的數百位元組。UCL最大的好處是在解壓縮過程中不需要額外的記憶體,意味着經過UPX壓縮的可執行文件執行時通常也不需要為了解壓縮付出額外記憶體。

UPX(從2.90 beta版本開始)可以在大多數平台上使用LZMA演算法,但因為速度慢,在16位元平台上LZMA演算法預設被停止使用。(可以使用參數—lzma強制使用)。

從版本3.91開始,UPX在Windows平台上還支持64位(x64)可執行文件。此功能目前宣布為實驗性。

解壓縮

UPX支持兩種解壓方式:就地解壓或解壓至臨時文件夾。

就地解壓方法會直接把可執行文件提取到內存。但這種方式不可能支持所有系統平台,因此在必要之時UPX會使用另一種解壓方式:將壓縮文件提取到臨時文件夾。這種方式支持封裝任何平台和格式的可執行文件,可執行文件往往先會被提取到一個位置,之後用open()打開。

然而提取到臨時文件夾這種方式除了造成了額外占用之外,還有以下幾個缺點:

  • 特殊權限會被忽略,如設置用戶標識符。
  • argv[0](即程序中獲取到的可執行文件名)將會無效。
  • 多實例應用程序將無法共享共同的程序部分(如內存內的相同代碼)。

未特意以防止解包為目的修改過的UPX包通常能夠被殺毒軟件識別並進行解壓操作。UPX也內置能夠解壓未修改UPX包的功能。在默認的UPX許可證中也明確禁止以防止前文所提及的解包為目的的修改。

支持的格式

UPX目前[何時?]不支持為了在.NET Framework.運行而包含了 CIL代碼的Windows/PE EXE 文件。

注釋

參考資料

外部連結

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads