二进制工具

对外来架构的汇编(比如在Mac OS X上汇编Sparc shellcode),需要各种跨版本的二进制工具的安装,我们已尽可能使安装过程流畅。

在下列的例子中,将你自己的目标架构代替$ARCH(例如arm, mips64, vax等等)。

编译二进制工具在现代8核计算机上大约花费60秒。

Ubuntu

对于从Ubuntu 12.04到15.10的发行版,你首先需要添加pwntools的`个人包存档库 <http://binutils.pwntools.com>`__。

对于 Ubuntu Xenial (16.04) 已经拥有官方的包,不需要做下面的步骤。

$ apt-get install software-properties-common
$ apt-add-repository ppa:pwntools/binutils
$ apt-get update

接着,安装符合自己计算机架构的二进制工具。

$ apt-get install binutils-$ARCH-linux-gnu

Mac OS X

Mac OS X的安装非常简单,但是需要源码编译安装,然而,我们已经有了homebrew,一条命令就可以解决。安装`brew <http://brew.sh>`__ 之后, 从这个链接获取我们的二进制工具: binutils repo.

$ brew install https://raw.githubusercontent.com/Gallopsled/pwntools-binutils/master/osx/binutils-$ARCH.rb

其他系统

如果你想通过自己的手动编译安装,并且不是上面两个系统之一,编译二进制工具也非常简单,运行下面的脚本即可。

#!/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