我是靠谱客的博主 成就烧鹅,这篇文章主要介绍使用Go构建一款静态分析工具Owl详解,现在分享给大家,希望可以做个参考。

介 绍

Owl是一款开源项目依赖分析工具,可以快速在指定的项目目录下查找符合某些特征的源代码文件或者依赖文件。为何开发了这款工具?例如很多时候我们项目太大,项目文件夹下有很多依赖文件,如一个Java项目引入了log4j这个jar依赖,在项目中某文件存在循环依赖问题。当某个依赖包出现了漏洞时,本工具能快速扫描项目目录下存在的可疑依赖文件,并且给出依赖文件所在的地址,帮助开发者能快速进行定位到可疑文件。

原 理

目前版本的功能比较简单,工作原理很简单,工具会对特定目录进行扫描通过内置的特征码算法匹配到特定文件,然后收集与其特征码匹配的文件地址,然后展示出来,也可以重定向到一个固定json文件中保存。

Owl类似于杀毒软件一样,和杀毒软件的工作原理差不多,Owl会根据依赖文件的特征码来扫描整个项目,和杀毒病毒库工作原理类似。当然如果严格按照杀毒软件那种标准做的话,可能涉及一些汇编相关的,目前owl功能实现还没有那么复杂,后面会版本会加入codeql代码分析引擎,通过codeql的数据库来做静态分析功能增强。

快速开始

如何使用owl?你可以克隆仓库然后通过如下命令:

复制代码
1
git clone git@github.com:auula/owl.git

在仓库内部有一个Makefile文件可以快速帮助你构建相应平台的二进制文件,例如:

复制代码
1
2
3
4
5
$: make help make darwin | Compile executable binary for MacOS platform make linux | Compile executable binary for Linux platform make windows | Compile executable binary for Windows platform make clean | Clean up executable binary

Owl起因也是为CodeAnalysis所编写的特征检测工具,所以你也可以在:https://github.com/Tencent/CodeAnalysis 这个项目下面的tools目录找到已经编译好的二进制可执行文件,下载对应平台的二进制文件即可。

如何使用

程序构建完成会得到一个二进制文件,程序名称为owl,如下为owl执行效果,一些子命令参数都已经列出:

复制代码
1
2
3
4
5
6
7
8
9
$: ./owl _____ _ _ __ ( _ )( // )( ) )(_)( ) ( )(__ (_____)(__/__)(____)

最后

以上就是成就烧鹅最近收集整理的关于使用Go构建一款静态分析工具Owl详解的全部内容,更多相关使用Go构建一款静态分析工具Owl详解内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(252)

评论列表共有 0 条评论

立即
投稿
返回
顶部