二进制工具¶
对国外的系统架构的汇编(比如在Mac OS X上汇编Sparc shellcode),我们需要安装交叉编译版本的binutils,我们尽可能使得这个安装过程流畅一点。
在下列的例子中,使用你的系统架构代替$ARCH(例如arm, mips64, vax等等)。
在一个现代化的8核计算机上编译binutils大约花费60秒。
Ubuntu¶
对于Ubuntu 12.04到15.10的发行版,你需要添加pwntools的 个人包存档库。
Ubuntu Xenial (16.04) 已经拥有官方的包,不需要做下面的步骤。
$ apt-get install software-properties-common
$ apt-add-repository ppa:pwntools/binutils
$ apt-get update
接着,针对于你的系统架构安装binutils。
$ apt-get install binutils-$ARCH-linux-gnu
Mac OS X¶
在Mac OS X上安装binutils非常简单,但是需要源码编译安装。然而,既然我们已经有了homebrew,我们就可以使用一条命令来解决。安装 brew 之后, 我们只需要从binutils中获取我们的二进制工具: binutils repo.
$ brew install https://raw.githubusercontent.com/Gallopsled/pwntools-binutils/master/osx/binutils-$ARCH.rb
其他系统¶
如果你想通过自己的手动编译安装,并且不是上面两个系统之一,编译binutils也非常简单,运行下面的脚本即可。
#!/usr/bin/env bash
V=2.25 # Binutils Version
ARCH=arm # Target architecture
cd /tmp
wget -nc https://ftp.gnu.org/gnu/binutils/binutils-$V.tar.gz
wget -nc https://ftp.gnu.org/gnu/binutils/binutils-$V.tar.gz.sig
gpg --keyserver keys.gnupg.net --recv-keys 4AE55E93
gpg --verify binutils-$V.tar.gz.sig
tar xf binutils-$V.tar.gz
mkdir binutils-build
cd binutils-build
export AR=ar
export AS=as
../binutils-$V/configure \
--prefix=/usr/local \
--target=$ARCH-unknown-linux-gnu \
--disable-static \
--disable-multilib \
--disable-werror \
--disable-nls
MAKE=gmake
hash gmake || MAKE=make
$MAKE -j clean all
sudo $MAKE install