upx交叉编译过程

来源:互联网 发布:ios变音软件 编辑:程序博客网 时间:2024/05/16 10:19

    upx(the Ultimate Packer for eXecutables),是一款对可执行程序进行加壳脱壳工具,目的在于压缩程序,节省磁盘空间。应用程序在加壳后,仍可以执行,执行时,解压后动态加载到内存执行。

加壳脱壳

程序为了反跟踪、被人跟踪调试、防止算法程序被别人静态分析就需要加壳。使用加壳软件加密代码和数据,就可以保护你程序数据的完整性,防止被程序修改和被窥视内幕。
需要指出的是,软件加密,易于实现,但较硬件加密更容易被破解,安全可靠性不如硬件加密。软件加密中以shiva的性能最好,不仅可以压缩,而且可以加密应用程序。现在网络上只有shiva已经编译好的程序,而没有找到shiva的源码,如果有找到的朋友,可以发我一份,交流下,^ -^。

目的:将upx源码交叉编译,放到ARM开发板上使用。

过程:

1、下载upx-3.91-src.tar.bz2 http://upx.sourceforge.net/download/upx-3.91-src.tar.bz2,解压。编译upx需要ucl库、lzma库、zlib库。所以,

下载ucl-1.03.tar.gz http://down1.chinaunix.net/distfiles/ucl-1.03.tar.gz

下载lzma-4.32.7.tar.gz(网上有说需要下载lzma443,我下载以后,编译后,没有得到lzma的库文件,需要修改Makefile,链接归档成库文件。这种方法我暂时还没有试,先用lzma432吧)http://tukaani.org/lzma/lzma-4.32.7.tar.gz

下载zlib-1.2.3.tar.gz   http://202.102.94.31/1/ishare.down.sina.com.cn/14708428.gz?ssig=sYSPd1AgTC&Expires=1386345600&KID=sina,ishare&fn=zlib-1.2.3.tar.gz&corp=1

2、设置交叉工具链

添加两行到/etc/profile中:

export PATH=$PATH:/home/open-wrt/trunk/staging_dir/toolchain-arm_v5te_gcc
export STAGING_DIR=/home/open-wrt/trunk/staging_dir/toolchain-arm_v5te_gc


如果没有设置STAGING_DIR,编译程序时,使用ubuntu系统中默认的库文件。

source /etc/profile

3、编译ucl

./configure --host=arm-openwrt-linux-gnueabi --prefix=$PWD/../upx-3.91-src/build --enable-static

make

make install

4、编译lzma-4.32.7

 ./configure  --host=arm-openwrt-linux-gnueabi --prefix=$PWD/../upx-3.91-src/build --enable-static

make

make install

5、编译zlib库

由于zlib的configure配置不支持交叉编译选项。所以配置命令为


 CC=arm-openwrt-linux-gnueabi-gcc CPP="arm-openwrt-linux-gnueabi-gcc -E" AR="arm-openwrt-linux-gnueabi-ar rc" RANLIB=arm-openwrt-gnueabi-ranlib  ./configure  --prefix=$PWD/../upx-3.91-src/build

 

make

make install

6、编译upx-3.91

修改Makefile:

LIBS += $(addprefix -L,$(dir $(wildcard $(UPX_UCLDIR)/libucl$(libext) $(UPX_UCLDIR)/src/.libs/libucl$(libext))))

修改为

LIBS+= $(UPX_UCLDIR)/lib

编译upx-3.91:

CXX=arm-openwrt-linux-gnueabi-g++ UPX_UCLDIR=$PWD/build UPX_LZMADIR=$PWD/build make all


如果lzma使用lzma443,那么

CXX=arm-openwrt-linux-gnueabi-g++ UPX_UCLDIR=$PWD/build UPX_LZMADIR=$PWD/../lzma-443 UPX_LZMA_VERSION make all

原创粉丝点击