tcpdump源码分析(3)——android系统移植(tcpdump,gdb,netstat)
在android系统中编译运行tcpdump有两个方法,一个是直接在android系统中进行源码编译;另一个是在x86系统上进行交叉编译,然后将编译生成的二进制文件复制到android系统中。本文采用第二种方法。
先编译libpcap,下载地址如下,其实是和tcpdump在同一页面上的:
http://www.tcpdump.org/release/libpcap-1.8.1.tar.gz
将下载得到的tcpdump和libpcap解压后放在同一个文件夹中。
先到libpcap文件夹中,执行如下编译安装命令
(可能需要安装flex,命令:yum install flex bison)
#./configure --prefix=/root/androidtcpdump/tools --host=arm-linux --target=arm-linux CC=arm-none-linux-gnueabi-gcc --with-pcap=linux
make && make install
接着编译tcpdump
./configure --prefix=/root/androidtcpdump/tools --host=arm-linux --target=arm-linux CC=arm-none-linux-gnueabi-gcc
make && make install
编译完成后会在~/androidtcpdump/tools/sbin目录下找到独立的可执行文件tcpdump
注意编译两者时需要指定相同的目录, 否则在编译tcpdump时需要指定libpcap的路径
如果是动态编译,文件放到android系统后就会显示tcpdump: No such file or directory。需要静态编译,在Makefile中加入-static参数。
然后就可以抓包了。
1.1.1.1 编译netstat
关于netstat的源码包和常规编译,参考:
修改makefile文件,
将CC修改为如下:
CC = arm-none-linux-gnueabi-gcc
增加-static参数,如下
netstat: $(NET_LIB) netstat.o statistics.o
$(CC) -static $(LDFLAGS) -o netstat netstat.o statistics.o $(NLIB) $(RESLIB)
如果缺少if_strip.h和if_tc.h文件,可以将/usr/include/linux/if_strip.h路径上的文件复制到源码中的include中,然后将lib/tr.c和lib/strip.c中的头文件包含改成
//#include <linux/if_strip.h>
#include <if_strip.h>
…..
//#include <linux/if_tr.h>
#include <if_tr.h>
#make netstat来完成编译即可。
1.1.1.2 移植gdb
源码下载地址:https://www.gnu.org/software/gdb/download/
或者:https://ftp.gnu.org/gnu/gdb/
下载解压后,进行编译
./configure --prefix=/root/androidtcpdump/tools --host=arm-linux --target=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc AS=arm-none-linux-gnueabi-as AR=arm-none-linux-gnueabi-ar CXX=arm-none-linux-gnueabi-g++ LDFLAGS="-static"
然后执行: make && make install ,会在 /root/androidtcpdump/tools/bin 文件夹中生产二进制文件,直接复制到 android 系统中就可以使用。低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android 分享控件
如今很多应用都提供向外分享信息的功能,在进行分享操作时,一般是从屏幕底部弹出所有具备分享功能的应用列表,再由用户进行选择 现在我就来模仿实现这种效果,不仅使分享控件从屏幕底部弹出,还要使分享控件能够上下拖动,这就需要使用到 design 包提供的 BottomSheetDialog 控件了 首先,声明 BottomSheetDialog 对话框的主布局 dialog_bottom_sheet.xml 当中,RecyclerView 用于展示提供分享功能的应用列表 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="14dp" android:orientation="vertical"> <Text...
- 下一篇
手动撸个Android雷达图(蜘蛛网图)RadarView
image 公司产品需要一个雷达图来展示各维度的比重,网上找了一波,学到不少,直接自己上手来撸一记 无图言虚空 image 简单分析一波,确定雷达图正几边形的--正五边形 int count=5,分为几个层数--4 层 int layerCount=4 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); drawPolygon(canvas);//画边 drawLines(canvas);//画线 drawText(canvas);//描绘文字 drawRegion(canvas);//覆盖区域 } 主要这几步,开撸! 自定义RadarView继承View 确定需要使用的变量,初始化paint,计算圆心角 private int count = 5; //几边形 private int layerCount = 4; //层数 privatefloatangle; //每条边对应的圆心角 private int centerX; //圆心x private int centerY; //圆心y p...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7设置SWAP分区,小内存服务器的救世主