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结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值