UPX-windows版本的编译

本文详细介绍了在Visual Studio环境下编译UPX源代码的步骤,包括准备环境、添加压缩相关源文件、设置预处理器指令、解决编译问题等关键步骤,最终实现成功编译并使用UPX进行软件加固。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上有不少教程谈到如何在Linux下编译UPX源代码.但是几乎没有VS下编译的指南.
因工作需要,我从一份老版本UPX-VS项目中,摸索出了最新版本VS编译的步骤,拿出来分享给大家.

列两篇文章:
upx交叉编译过程提供了包的下载链接
Android NDK UPX加固提供了最新UPX的下载网址和Linux下编译教程.

首先将zlib库和ucl库放在同级UPX\src\目录下:
upx目录结构

你可以参考老版本的VS目录结构,老版本我放在这里了:
http://download.youkuaiyun.com/detail/dalerkd/9410525

尝试编译会发现找不到一些头文件.在VC++目录中包含目录添加下面类似于下面的内容:

$(SolutionDir)\src\ucl;
$(SolutionDir)\src\zlib;
$(SolutionDir)\src\;

当然你需要对个别放错位置的头文件进行移动.不会超过3个哟.

再次直接用VS编译发现报错如下:
UPX报错1

其实就是两个错误.
错误1原因

  1. 如上图,VS不支持动态数组.这里需要修改.好的办法是将new.记得delete哟.然后下面的sizeof的内容改成一个变量替换一下.
  2. 最后一个”stroull”找不到标识符.笔者发现低于VS2013的库不提供这个函数.囧.当然G++标准库是提供了的.所以你需要使用VS2013.

此外你需要在预处理器中添加:

UCL_NO_ASM;

最后一点是,会有compress文件名冲突,只要修改其中一个文件名即可编译通过.

我们总结一下:
0. 备好VS2013
1. 将必要的压缩相关源文件添加进项目中来。
2. 预处理器中添加指令。
3. 让UPX找到它所需要文件的位置。
4. 处理余下的小问题。

2016年5月23日 21:47:14结

<think>好的,用户需要查找关于在Linux环境下使用UPX的相关资料,包括使用说明、文档和教程。首先,我得确认UPX是什么。UPX是一个可执行文件压缩工具,能够压缩各种格式的可执行文件和动态库,减少文件大小,同时保持其可运行性。用户可能是在寻找如何在Linux上安装和使用UPX,或者遇到了具体的问题需要解决。 接下来,我需要回忆UPX在Linux下的基本用法。通常,安装可以通过包管理器,比如apt-get install upx-ucl。然后使用命令压缩文件,比如upx filename。但用户可能需要更详细的步骤,比如不同压缩级别的选项,解压缩的方法,或者处理特定文件类型的注意事项。 用户提到的文档和教程部分,可能需要官方文档的链接,或者推荐一些可靠的第三方教程。同时,需要注意用户提到的引用来源中有一些不相关的链接,比如关于OpenGL和orx-project的引用,可能是在之前的上下文中出现的内容,但与本问题无关,所以应该忽略这些不相关的引用。 另外,用户可能想了解UPX的进阶用法,比如如何压缩动态库,如何处理压缩后的兼容性问题,或者在脚本中自动化使用UPX。同时,可能存在的常见问题,比如某些文件无法压缩,或者压缩后无法运行的情况,需要提供解决方案。 还需要检查是否有关于UPX的最新版本信息,或者不同Linux发行版中的安装方式差异,比如基于Debian的系统使用apt,而Red Hat系使用yum或dnf。此外,可能涉及UPX的命令行参数详解,比如--best, --brute等选项的区别,以及如何恢复被压缩的文件。 最后,生成相关问题时要考虑用户可能进一步想了解的内容,比如性能影响、安全注意事项、与其他压缩工具的比较等。</think>### UPX在Linux环境下的使用与文档 UPX(Ultimate Packer for eXecutables)是一款开源的可执行文件压缩工具,支持多种平台和文件格式。以下是在Linux系统下的使用方法和相关资源: #### 1. **安装UPX** 在Debian/Ubuntu系统可通过以下命令安装: ```bash sudo apt-get install upx-ucl ``` 其他Linux发行版可通过源码编译安装: ```bash wget https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-amd64_linux.tar.xz tar -xvf upx-4.0.2-amd64_linux.tar.xz cd upx-4.0.2-amd64_linux sudo cp upx /usr/local/bin/ ``` #### 2. **基础用法** - **压缩可执行文件**: ```bash upx filename # 默认压缩级别 upx --best filename # 最高压缩率 ``` - **解压文件**: ```bash upx -d compressed_file ``` - **查看压缩信息**: ```bash upx -l compressed_file ``` #### 3. **支持的文件格式** UPX支持ELF(Linux可执行文件)、PE(Windows可执行文件)等格式。例如,压缩ELF文件: ```bash upx --elf-compression=3 filename ``` #### 4. **文档与教程** - **官方文档**:访问[UPX GitHub仓库](https://github.com/upx/upx)获取最新说明和源码。 - **命令行帮助**: ```bash upx --help # 查看所有选项 ``` - **第三方教程**: - [UPX实战指南](https://linuxconfig.org/how-to-compress-executable-files-with-upx-on-linux)(英文) - [压缩可执行文件的优化策略](https://www.baeldung.com/linux/upx-compress-executables)(英文) #### 5. **注意事项** - **兼容性**:压缩后的文件可能无法在旧内核系统运行,需测试目标环境。 - **性能影响**:压缩后的文件首次运行需解压,可能略微增加启动时间[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值