返回探索
weggli

weggli - C/C++代码语义搜索工具

C/C++代码语义搜索工具,助力安全研究高效定位关键功能

4
2,486 浏览
医疗健康
访问官网

详细介绍

weggli 仓库中文介绍文档

weggli 是一款专为安全研究人员设计的快速而强大的C和C++代码库语义搜索工具,用于识别大型代码库中的有趣功能。由 weggli-rs 维护,支持现代C++特性,无需构建即可分析代码。

要点:

  • 这是一个用于C/C++代码语义搜索的工具,帮助安全研究人员发现代码中的关键功能。
  • 由 weggli-rs 维护,使用 Rust 编写。
  • 支持现代C++语法,无需构建代码即可进行分析。

示例: weggli 是一款专为安全研究人员设计的快速而强大的C和C++代码库语义搜索工具,用于识别大型代码库中的有趣功能。

一、核心信息速览

维度 详情
:--- :---
仓库地址 [weggli](https://github.com/weggli-rs/weggli)
许可证 MIT
核心定位 快速且强大的C/C++代码库语义搜索工具
主要语言 Rust
适用人群 安全研究人员、逆向工程师、代码审计人员
关键亮点 C++支持;无需构建;交互式查询;贪婪匹配

二、核心功能

功能模块 描述 典型场景
:--- :--- :---
语义搜索 基于AST的模式匹配,支持C/C++语法 查找特定函数调用或变量赋值
现代C++支持 支持lambda、范围for循环等现代C++特性 分析现代C++代码结构
无需构建 可以在不构建代码的情况下进行分析 快速扫描未编译的代码
交互式查询 支持快速查询与结果反馈 实时调整查询条件
贪婪匹配 尽可能多地找到匹配项,提升搜索效率 提高发现潜在问题的可能性
正则表达式支持 支持正则表达式限制变量匹配 更精确地控制搜索条件
多种变量类型 支持标识符、类型、字段名等变量 构建更灵活的查询规则
模式匹配 支持自定义模式匹配 针对特定代码模式进行查找

三、快速上手

1. 环境准备

需要安装 Rust 工具链(建议使用 rustup 安装)。

2. 安装方式

cargo install weggli

3. 基础配置

无特殊配置需求,直接运行命令即可。

4. 核心示例

weggli '{_ $buf[_]; memcpy($buf,_,_);}' /path/to/codebase

该命令将查找所有直接写入栈缓冲区的 memcpy 调用。

四、核心亮点

  1. C++支持:全面支持现代C++构造,如 lambda 表达式、范围 for 循环等。
  2. 无需构建:可以处理未编译的代码,支持不完整源码或缺失依赖。
  3. 交互式查询:支持快速查询和实时反馈,适合互动式工作流程。
  4. 贪婪匹配:尽可能多的找到匹配项,提高发现潜在问题的概率。

五、适用场景

  1. 安全研究:帮助研究人员识别代码中可能存在的安全漏洞。
  2. 代码审计:用于审查代码库,寻找潜在的代码缺陷或风险点。
  3. 逆向工程:分析二进制文件或未编译的代码,提取关键逻辑。
  4. 静态分析:作为静态分析工具的一部分,辅助检测代码问题。

六、优缺点

优势

  • 支持现代C++特性,适应性强。
  • 不需要构建代码即可进行分析,节省时间。
  • 交互式查询体验良好,适合快速迭代。

不足

  • 对于复杂查询可能产生较多误报。
  • 文档和社区资源相对较少。

七、与同类工具对比(可选)

工具 类型 核心差异
:--- :--- :---
weggli 开源 无需构建、支持现代C++、交互式查询
Semgrep 开源 支持多种语言,但对C/C++支持不如weggli深入
CodeQL 商业/开源 强大但学习曲线较陡,适合高级用户

八、总结

weggli 是一款适合安全研究人员和代码审计人员使用的C/C++代码语义搜索工具,具有现代C++支持和交互式查询的优势,但在复杂查询中可能会有误报。

相关工具