allsmog/revgraph

GitHub: allsmog/revgraph

RevGraph 是一款 Python SDK,通过将二进制逆向分析数据导入 Neo4j 图数据库并结合 LLM 与 embedding,实现自动化的代码图谱构建、自然语言查询和智能漏洞分析。

Stars: 0 | Forks: 0

RevGraph # 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 ` | 解析 BCC protobuf 文件 | | `revgraph load ` | 将 artifact 加载到 Neo4j | | `revgraph query ` | 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绕过, 自动化分析, 请求拦截, 跨站脚本, 逆向工具, 逆向工程