网上有不少教程谈到如何在Linux下编译UPX源代码.但是几乎没有VS下编译的指南.
因工作需要,我从一份老版本UPX-VS项目中,摸索出了最新版本VS编译的步骤,拿出来分享给大家.
列两篇文章:
upx交叉编译过程提供了包的下载链接
Android NDK UPX加固提供了最新UPX的下载网址和Linux下编译教程.
首先将zlib库和ucl库放在同级UPX\src\目录下:
你可以参考老版本的VS目录结构,老版本我放在这里了:
http://download.youkuaiyun.com/detail/dalerkd/9410525
尝试编译会发现找不到一些头文件.在VC++目录中包含目录添加下面类似于下面的内容:
$(SolutionDir)\src\ucl;
$(SolutionDir)\src\zlib;
$(SolutionDir)\src\;
当然你需要对个别放错位置的头文件进行移动.不会超过3个哟.
再次直接用VS编译发现报错如下:
其实就是两个错误.
- 如上图,VS不支持动态数组.这里需要修改.好的办法是将new.记得delete哟.然后下面的sizeof的内容改成一个变量替换一下.
- 最后一个”stroull”找不到标识符.笔者发现低于VS2013的库不提供这个函数.囧.当然G++标准库是提供了的.所以你需要使用VS2013.
此外你需要在预处理器中添加:
UCL_NO_ASM;
最后一点是,会有compress文件名冲突,只要修改其中一个文件名即可编译通过.
我们总结一下:
0. 备好VS2013
1. 将必要的压缩相关源文件添加进项目中来。
2. 预处理器中添加指令。
3. 让UPX找到它所需要文件的位置。
4. 处理余下的小问题。
2016年5月23日 21:47:14结