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的源码包和常规编译,参考:

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.clib/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 系统中就可以使用。
相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
5月前
|
Linux 测试技术 语音技术
【车载Android】模拟Android系统的高负载环境
本文介绍如何将Linux压力测试工具Stress移植到Android系统,用于模拟高负载环境下的CPU、内存、IO和磁盘压力,帮助开发者优化车载Android应用在多任务并发时的性能问题,提升系统稳定性与用户体验。
375 6
|
5月前
|
Java 数据库 Android开发
基于Android的电子记账本系统
本项目研究开发一款基于Java与Android平台的开源电子记账系统,采用SQLite数据库和Gradle工具,实现高效、安全、便捷的个人财务管理,顺应数字化转型趋势。
|
人工智能 搜索推荐 物联网
Android系统版本演进与未来展望####
本文深入探讨了Android操作系统从诞生至今的发展历程,详细阐述了其关键版本迭代带来的创新特性、用户体验提升及对全球移动生态系统的影响。通过对Android历史版本的回顾与分析,本文旨在揭示其成功背后的驱动力,并展望未来Android可能的发展趋势与面临的挑战,为读者呈现一个既全面又具深度的技术视角。 ####
|
10月前
|
安全 搜索推荐 Android开发
Android系统SELinux安全机制详解
如此看来,SELinux对于大家来说,就像那位不眠不休,严阵以待的港口管理员,守护我们安卓系统的平安,维护这片海港的和谐生态。SELinux就这样,默默无闻,却卫士如山,给予Android系统一份厚重的安全保障。
331 18
|
算法 JavaScript Android开发
|
存储 安全 Android开发
探索Android系统的最新安全特性
在数字时代,智能手机已成为我们生活中不可或缺的一部分。随着技术的不断进步,手机操作系统的安全性也越来越受到重视。本文将深入探讨Android系统最新的安全特性,包括其设计理念、实施方式以及对用户的影响。通过分析这些安全措施如何保护用户免受恶意软件和网络攻击的威胁,我们希望为读者提供对Android安全性的全面了解。
|
IDE Java 开发工具
移动应用与系统:探索Android开发之旅
在这篇文章中,我们将深入探讨Android开发的各个方面,从基础知识到高级技术。我们将通过代码示例和案例分析,帮助读者更好地理解和掌握Android开发。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧。让我们一起开启Android开发的旅程吧!
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
606 15
Android 系统缓存扫描与清理方法分析
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
581 16
|
监控 Java Android开发
深入探索Android系统的内存管理机制
本文旨在全面解析Android系统的内存管理机制,包括其工作原理、常见问题及其解决方案。通过对Android内存模型的深入分析,本文将帮助开发者更好地理解内存分配、回收以及优化策略,从而提高应用性能和用户体验。