常见开源软件和开源库的调用关系
开源社区有着许多开源软件,我将优先从以下几个角度去挑选开源软件,并找寻它们之间的依赖与调用关系:
- 支持AFL进行Fuzzing的开源软件(参考https://github.com/aflgo/oss-fuzz/tree/master/projects)
- 提供文件操作API或者网络通信API的开源工具。因为它们所涉及的文件读取和通信协议栈往往更容易产生crash
- 体积不大,易于源码安装
1 开源软件挑选
1 | |
采用parseFuzzProj.py脚本拉取oss-fuzz中支持AFL的开源软件,得到如下软件列表:
1 | |
挑选与文件操作和网络通信相关的开源软件:
1 | |
2 软件依赖关系查找
软件之间的调用关系即依赖关系,我们可以借助包管理工具apt来查找开源软件的依赖有哪些以及被哪些软件依赖:
查询镜像源是否有某款开源软件
SOFTWARE:1
sudo apt-cache search SOFTWARE_NAME | grep SOFTWARE_NAME查询某款开源软件
SOFTWARE的依赖:1
sudo apt-cache depends SOFTWARE_NAME | grep Depends查询某款开源软件
SOFTWARE被哪些软件依赖:1
sudo apt-cache rdepends SOFTWARE_NAME
3 开源软件依赖组合分析
3.1 libpcap
依赖与被依赖
depends:
- libc6
rdepends:
- wireshark-qt,wireshark-gtk,tshark
- tcpdump,tcpreplay
- snort,suricata,fastnetmon
- nmap
代码相似性
- 与Nmap:
- netmap/libpcap与libpcap仓库下有大量同名.c代码文件,且有若干同名目录

与suricata:
- source-pcap.c中存在libpcap的API调用
与wireshark:
- wireshark/writecap/pcapio.c存在libpcap magic number等相关字段和结构体
- wireshark/capture_opts.c
TODO…
- Title: 常见开源软件和开源库的调用关系
- Author: Zhiyu
- Created at : 2020-11-16 17:29:03
- Updated at : 2026-02-18 00:36:56
- Link: https://qgrain.github.io/2020/11/16/常见开源软件和开源库的调用关系/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments