Linux Ubuntu下一些软件源代码的静态编译

    最近刚开始学习二进制代码分析,需要一些软件来实验。为了避免发行版软件中的各种混淆,加壳的问题,先拿开源软件试试。    

    1. 下载源码

    这里一步可谓是耗费精力。尝试过从github上下载源码,各软件官网上下载源码,各种软件商店下载,但是能够编译通的软件寥寥无几,因为总有各种电脑环境问题,版本问题,编译器问题,于是在这里卡了一周。

    起初编译有bug时我还想解决,后面发现一层又一层的环境不对,一层又一层的包依赖,各种错误递归式的爆发。后来出现有bug的编译就直接放弃这个软件了。最终的解决办法是,看博客上的人是否有编译通过的案例,这样下载下来的源码问题少很多。

    源码采用静态编译安装,这是为了更好地用IDA分析。对于最终静态编译出来的软件,用IDA反编译后显示的函数名是源代码中的命名,不再是地址。

    2.静态编译

    用命令行编译的时候,静态编译选项主要查看源码中的README, INSTALL这类文件,还有查看configure的帮助手册(./configure --help)。

    下面是静态编译一些类库和软件时用的命令:

   libevent, memcached, zlib, libcurl, git, aria2(aria2没有编译通,猜测编译器可能哪里不对)

* libevent

sudo ./configure -prefix='/home/a057/Desktop/libevent-{$version$}-c' --disable-shared

* memcached-1.4.29

sudo CFLAGS=-static ./configure -prefix='/home/a057/Desktop/memcached-1.4.29-bin/memcached-1.4.29(libevent-2.1.8)2-c' --enable-64bit --with-libevent='/home/a057/Desktop/libevent/libevent-2.1.8-c'   

sudo vim '/home/a057/Desktop/memcached-1.4.29/Makefile' 

Werror //此处进入makfile文件,修改CFLAGS变量,去除-Werror 选项

sudo make clean
sudo make
sudo make install

* aria2-release-1.35.0

autoreconf -i

./configure ARIA2_STATIC=yes -prefix='$PATH'

make

make install

* zlib

sudo ./configure --prefix='/home/a057/Desktop/zlib-1.2.4-c' --static

*libcurl

sudo ./configure --prefix='/home/a057/Desktop/curl-7.37.0-c' --disable-shared --enable-static

*git

sudo ./configure --prefix='/home/a057/Desktop/git-2.23.0-c' --with-zlib='/home/a057/Desktop/zlib-1.2.4-c' CFLAGS="${CFLAGS} -static" NO_OPENSSL NO_PERL CURDIR='/home/a057/Desktop/curl-7.37.0-c' CURL_CONFIG='/home/a057/Desktop/curl-7.37.0-c/bin/curl-config' 

sudo make && sudo make install && sudo make clean

    

你可能感兴趣的:(Linux Ubuntu下一些软件源代码的静态编译)