goblint/analyzer
GitHub: goblint/analyzer
Goblint 是一个面向 C 语言的静态分析框架,专注于并发安全与深层代码缺陷检测,为安全审计和学术研究提供可扩展的分析能力。
Stars: 236 | Forks: 88
# Goblint
[](https://github.com/goblint/analyzer/releases)
[](https://opam.ocaml.org/packages/goblint)
[](https://zenodo.org/badge/latestdoi/2066905)
[](https://github.com/goblint/analyzer/actions/workflows/locked.yml)
[](https://github.com/goblint/analyzer/actions/workflows/unlocked.yml)
[](https://coveralls.io/github/goblint/analyzer?branch=master)
[](https://github.com/goblint/analyzer/actions/workflows/docker.yml)
[](https://goblint.readthedocs.io/en/latest/?badge=latest)
[](https://goblint.zulipchat.com)
文档可以在 [Read the Docs](https://goblint.readthedocs.io/en/latest/) 或 [GitHub](./docs/) 上浏览。
## 安装说明
无论是为了使用最新版本的 Goblint,还是为了进行开发,最好的方法是通过克隆此仓库从源码进行安装。
如需对 Goblint 进行性能基准测试,请遵循 [Read the Docs 上的基准测试指南](https://goblint.readthedocs.io/en/latest/user-guide/benchmarking/)。
### Linux
1. 安装 [opam](https://opam.ocaml.org/doc/Install.html)。
2. 确保已安装以下依赖:`git`、`patch`、`m4`、`autoconf`、`libgmp-dev`、`libmpfr-dev` 和 `pkg-config`。
3. 运行 `make setup` 以通过 opam 安装 OCaml 及相关依赖。
4. 运行 `make` 构建 Goblint 本体。
5. 运行 `make install` 将 Goblint 安装到 opam switch 中,以便通过该 switch 的 `PATH` 使用。
6. _可选:_ 参考 [`scripts/bash-completion.sh`](./scripts/bash-completion.sh) 为 Goblint 的参数设置 bash 自动补全。
### MacOS
1. 使用 `brew install gcc grep` 安装 GCC(如果你不想从源码构建,请先运行 `xcode-select --install`)。Goblint 需要 GCC,而 macOS 默认的 `cpp` 是 Clang,无法正常工作。
2. 仅限 M1 (ARM64) 处理器:homebrew 将其安装路径从 `/usr/local/` 更改为了 `/opt/homebrew/`。为了让软件包能找到其依赖项,请执行 `sudo ln -s /opt/homebrew/{include,lib} /usr/local/`。
3. 继续按照 Linux 的说明操作(在 brew 中,对应 `patch`、`libgmp-dev`、`libmpfr-dev` 的包名分别为 `gpatch`、`gmp`、`mpfr`)。
### Windows
1. 安装 [WSL2](https://docs.microsoft.com/en-us/windows/wsl/install-win10)。Goblint 与 WSL1 不兼容。
2. 在 WSL 中继续按照 Linux 的说明操作。
### 其他方式
* **[opam](https://opam.ocaml.org/packages/goblint/)**。安装 [opam](https://opam.ocaml.org/doc/Install.html) 并运行 `opam install goblint`。
* **[devcontainer](./.devcontainer/).** 在 VS Code 中选择“在容器中重新打开”,然后按照 Linux 的说明在 devcontainer 中继续执行 `make`。
* **[Docker (GitHub Container Registry)](https://github.com/goblint/analyzer/pkgs/container/analyzer)**。运行 `docker pull ghcr.io/goblint/analyzer:latest`(或 `:nightly`)。
* **Docker (仓库)。** 克隆仓库并运行 `docker build -t goblint .`。
* **Vagrant。** 克隆仓库并运行 `vagrant up && vagrant ssh`。
## 运行
要确认构建是否成功,你可以尝试如下运行 Goblint:
```
./goblint tests/regression/04-mutex/01-simple_rc.c
```
要确认安装到 opam switch 是否成功,你可以尝试如下运行 Goblint:
```
goblint tests/regression/04-mutex/01-simple_rc.c
```
要确认 Docker 容器是否正常运行,你可以尝试如下运行 Goblint:
```
docker run -it --rm -v $(pwd):/data goblint /data/tests/regression/04-mutex/01-simple_rc.c
```
如果是从 GitHub Container Registry 拉取的镜像,请改用容器名称 `ghcr.io/goblint/analyzer:latest`(或 `:nightly`)。
了解更多信息,请参阅[文档](https://goblint.readthedocs.io/en/latest/user-guide/running/)。
## 致谢
Goblint 的开发工作部分由 Deutsche Forschungsgemeinschaft (DFG) (47140942/1480 [PUMA](https://gepris.dfg.de/gepris/projekt/4714094), 378803395/2428 [ConVeY](http://convey.in.tum.de))、ARTEMIS Joint Undertaking (269335 MBAT)、ITEA3 项目 14014 ASSUME、格鲁吉亚 Shota Rustaveli 国家科学基金会 [FR-21-7973](https://viam.science.tsu.ge/new/index.php?lang=eng&page=projects&subpage=111)、爱沙尼亚研究委员会 ([IUT2-1](https://www.etis.ee/Portal/Projects/Display/561b7b1d-d1dd-43a2-90e5-0661de823823?lang=ENG), [PSG61](https://www.etis.ee/Portal/Projects/Display/743243bb-15c2-47b3-9c10-e7d86a9a276d?lang=ENG)),以及由欧洲区域发展基金资助的爱沙尼亚 IT 卓越中心 (EXCITE) 提供支持。
我们还要感谢 [Zulip](https://zulip.com) 为 Goblint 项目提供免费的 Zulip Cloud Standard 托管服务。Zulip 是一款开源的现代团队聊天应用,旨在使实时与异步对话保持条理清晰。
标签:ASN解析, DNS解析, DNS重绑定攻击, Goblint, OCaml, TLS抓取, Web安全扫描, 云安全监控, 代码安全, 分析框架, 可配置连接, 安全专业人员, 开源项目, 抽象解释, 漏洞数据库, 漏洞枚举, 程序分析, 编译器, 请求拦截, 软件安全, 错误基检测, 静态代码分析, 静态分析