Skip to content
This repository has been archived by the owner on Dec 9, 2023. It is now read-only.

Latest commit

 

History

History

upx

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

在将色图混淆器打包成单个EXE文件前,你应该先下载upx的可执行文件,并将其放置于本目录下

目录结构如下:

Ero_Img_Blender
├─ Run.py / Run.exe
├─ 程序相关的其他文件
├─ imagemagick
│      convert.exe
│      magick.exe
│      ... 省略其他文件 ...
├─ upx
│      upx.exe
│      ... 省略其他文件 ...
├─ input_imgs
│      这里存放将要处理的图片文件
└─ output_imgs
       这里存放处理后的图片文件

UPX 的维基百科页面

本段落全部文字在知识共享 署名-相同方式共享 3.0协议之条款下提供,附加条款亦可能应用。

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许可证中也明确禁止以防止前文所提及的解包为目的的修改。