为Android平台编译tcpdump工具

转载请注明出处:https://mp.csdn.net/postedit/86597115

1.什么是tcpdump?

Tcpdump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

2.问题描述

在Android 7.0下,使用tcpdump抓包,出现如下错误:

 error: Android 5.0 and later only support position-independent executables (-fPIE).

这是由于PIE安全机制引起的,从Android4.1引入该机制,在Android L 也就是Lollipop之前,并不会去检验可执行文件是否基于PIE编译出来的,因此不会报错,但是Android L已经开始验证,如果电泳的可执行文件不是基于PIE编译的,则无法运行。解决方法很简单,就是重新编译下,加上如下flag就行。

LOCAL_CFLAGS +=-pie -fPIE

LOCAL_LDFLAGS +=-pie -fPIE

3.前期准备

系统环境:Ubuntu

Android NDK

源码:libpcap v1.9.0,tcpdump v4.9.2,下载地址为:libpcap-1.9.0.tar.gztcpdump-4.9.2.tar.gz

编译前首先检查有没有lex和yacc工具,没有的话则执行如下命令:

sudo apt-get install flex bison

3.1 NDK环境搭建

3.1.1 下载ndk,命令如下:

wget -c http://dl.google.com.android/ndk/android-ndk64-r10b-linux-86_64.tar.bz2

3.1.2 解压

将下载好的ndk包解压到指定目录(此处的/home/li是我的机器的用户名,此目录根据个人情况随意更换),命令如下:

sudo tar -C /home/li/ -xvf android-ndk64-r10b-linux-86_64.tar.bz2

3.1.3 配置环境变量

sudo gedit ~/.bashrc

添加如下代码:

export   ND
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值