allsmog/revgraph
GitHub: allsmog/revgraph
RevGraph 是一款 Python SDK,通过将二进制逆向分析数据导入 Neo4j 图数据库并结合 LLM 与 embedding,实现自动化的代码图谱构建、自然语言查询和智能漏洞分析。
Stars: 0 | Forks: 0
# RevGraph
**逆向工程图智能 SDK**
一款 Python SDK,旨在通过 Neo4j 图数据库、LLM 驱动的分析、基于 embedding 的相似度搜索以及 agentic workflow 来实现逆向工程的自动化。
## 功能
- **二进制提取** — 解析 BCC protobuf 文件(通过 Blackfyre/Ghidra)并将其转换为标准化的 artifact
- **图加载** — 批量加载至 Neo4j 并包含完整 schema(函数、基本块、指令、字符串、导入)
- **NL2GQL** — 利用 LLM、few-shot 示例和错误优化,实现自然语言到 Cypher 的转换
- **BBR (Basic Block Rank)** — 在控制流图上运行 PageRank 算法,以识别关键代码
- **Embedding** — 通过 LiteLLM 生成并存储函数/基本块的 embedding
- **相似度分析** — 余弦相似度搜索、聚类(HDBSCAN/KMeans)、跨二进制文件比对
- **LLM 任务** — 函数摘要、标签标注、漏洞报告生成、YARA 规则生成
- **Agent workflow** — 适用于分析、补丁影响评估、N-day 漏洞分类、YARA、固件研究的多 Agent 团队
- **MCP 服务器** — 通过 Model Context Protocol 暴露图、提取和 embedding 工具
- **供应商无关** — 支持 Claude、OpenAI、Gemini、Ollama 或任何受 LiteLLM 支持的供应商
## 安装说明
```
pip install -e .
# 启动 Neo4j
docker compose up neo4j -d
```
## 快速开始
```
from revgraph import RevGraphContext
from revgraph.config.loader import load_config
from revgraph.extraction.bcc_loader import load_bcc_file
from revgraph.graph.loader import GraphLoader
from revgraph.graph.schema import create_schema
from revgraph.graph.query_engine import QueryEngine
# 初始化
ctx = RevGraphContext()
ctx.config = load_config()
driver = ctx.ensure_neo4j()
create_schema(driver)
# 将二进制文件加载到图中
artifact = load_bcc_file("path/to/binary.bcc")
loader = GraphLoader(driver)
stats = loader.load_binary(artifact)
# 查询图
engine = QueryEngine(driver)
functions = engine.execute(
"MATCH (b:BinaryFile)-[:DEFINES]->(f:Function) "
"RETURN f.name AS function, f.address AS address "
"ORDER BY f.address LIMIT 20"
)
# 自然语言查询
llm = ctx.ensure_llm()
from revgraph.nl2gql.translator import NL2CypherTranslator
translator = NL2CypherTranslator(llm, driver)
cypher, results = translator.translate_and_execute("What functions call malloc?")
ctx.close()
```
### 跨二进制分析
```
from revgraph.graph.cross_binary import diff_functions, find_shared_imports
shared = find_shared_imports(driver, sha256_a, sha256_b)
diff = diff_functions(driver, sha256_a, sha256_b)
```
### Embedding 与相似度
```
from revgraph.embeddings.generator import EmbeddingGenerator
from revgraph.embeddings.similarity import SimilaritySearch
generator = EmbeddingGenerator(llm, driver)
search = SimilaritySearch(driver)
similar = search.find_similar(function_address, top_k=10)
```
### LLM 驱动的分析
```
from revgraph.llm.summarizer import Summarizer
from revgraph.llm.vuln_reporter import VulnReporter
from revgraph.llm.yara_generator import YARAGenerator
summarizer = Summarizer(llm, driver)
reporter = VulnReporter(llm, driver)
yara = YARAGenerator(llm, driver)
```
## 配置
在你的项目根目录下创建 `revgraph.yaml`:
```
neo4j:
uri: "bolt://localhost:7687"
password: "${NEO4J_PASSWORD}"
llm:
default_model: "claude-sonnet-4-20250514" # or gpt-4o, ollama/llama3.1, etc.
api_keys:
anthropic: "${ANTHROPIC_API_KEY}"
embeddings:
default_model: "text-embedding-3-large"
```
## Docker
```
docker compose up neo4j -d # Just Neo4j
docker compose --profile local-llm up -d # + Ollama
docker compose --profile local-llm --profile mcp up -d # Everything
```
## CLI
RevGraph 还附带了一个用于常见操作的 CLI:
| 命令 | 描述 |
|---------|-------------|
| `revgraph extract ` | Cypher 或自然语言查询 | | `revgraph embed` | 生成 embedding | | `revgraph analyze bbr` | 计算 Basic Block Rank | | `revgraph analyze cluster` | 按相似度对函数进行聚类 | | `revgraph analyze similarity` | 查找相似函数 | | `revgraph llm summarize` | 生成函数/二进制摘要 | | `revgraph llm label` | 为函数添加具有描述性的标签 | | `revgraph llm vuln-report` | 生成漏洞报告 | | `revgraph llm yara` | 生成 YARA 规则 | | `revgraph agent run` | 运行 agent workflow | | `revgraph serve` | 启动 MCP 服务器 | | `revgraph schema create\|drop\|show` | 管理图 schema | ## 开发指南 ``` pip install -e ".[dev]" make test-unit # Fast tests, no external deps make test-integration # Requires Neo4j make lint make typecheck ``` ## 许可证 Apache 2.0
标签:C2, DLL 劫持, 云资产清单, 人工智能, 大语言模型, 用户模式Hook绕过, 自动化分析, 请求拦截, 跨站脚本, 逆向工具, 逆向工程