零、准备工作
- 安装 Debian 7.8 X86_64
- 准备一台有root权限的Android手机
- 用root账户登录Debian系统
一、安装交叉编译工具链
1. 安装Emdebian软件仓库的GPG密钥
apt-get install emdebian-archive-keyring
2. 安装Emdebian需要的Squeeze依赖
apt-get install flex
apt-get install byacc
apt-get install make
vi /etc/apt/sources.list
在上述文件最后添加如下内容:
deb http://ftp.us.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://www.emdebian.org/debian/ squeeze main
注意:
第一行启用Debian Squeeze的软件仓库,以便于满足Emdebian工具链的依赖;
第二行启用Debian Squeeze的安全更新仓库;
第三行启用Emdebian的软件仓库。
3. 同步Debian软件包的索引文件
apt-get update
4. 安装ARM GNU C++编译器
apt-get install g++-4.4-arm-linux-gnueabi
5. 检查交叉编译器是否安装成功
arm-linux-gnueabi-gcc --version
二、交叉编译TCPDUMP
1. 下载libpcap和tcpdump的源码包
cd /root/Downloads
wget http://www.tcpdump.org/release/tcpdump-4.7.4.tar.gz
wget http://www.tcpdump.org/release/libpcap-1.7.3.tar.gz
2. 解压缩源码包
tar xvzf libpcap-1.7.3.tar.gz
tar xvzf tcpdump-4.7.4.tar.gz
3. 编译libpcap
cd libpcap-1.7.3
export CC=arm-linux-gnueabi-gcc
./configure --host=arm-linux --with-pcap=linux
make
cd ..
4. 编译tcpdump
cd tcpdump-4.7.4
export ac_cv_linux_vers=3
export CFLAGS=-static
export CPPFLAGS=-static
export LDFLAGS=-static
./configure --host=arm-linux --disable-ipv6
make
5. 检查编译是否成功
file tcpdump
6. 压缩可执行文件
arm-linux-gnueabi-strip tcpdump
这一步可以将可执行文件的体积减少将近40%
三、安装和执行tcpdump
1. 安装ADB(Android Debug Bridge)软件包
apt-get install android-tools-adb
2. 打开手机的USB调试功能
这个步骤每种手机可能各不相同,请参考对应型号手机的帮助文档
若手机没有完全root,则需要安装adbd.apk应用。
3. 检查手机是否连接成功
adb devices
4. 重新启动ADB后台
adb root
adb remount
注意:
第一条命令会以root账户重新启动ADB后台程序;
第二条命令会将/system分区以/read/write模式重新挂载
5. 检查ADB后台是否成功重新启动
adb shell id
若上述命令的输出如下图所示,则表示ADB后台程序重新启动成功:
6. 上传tcpdump可执行文件
cd /root/Downloads/tcpdump-4.7.4
adb push tcpdump /system/xbin/
7. 检查tcpdump是否安装成功
adb shell tcpdump -h