The-SNEK-Initiative/SNEK_Reverse

GitHub: The-SNEK-Initiative/SNEK_Reverse

一款基于 Rust 的原生逆向工程工作台,通过编译器式分析管道(CFG→IR→SSA)提供从反汇编到伪代码生成的全流程静态分析能力。

Stars: 2 | Forks: 1

# SNEK Reverse SNEK Reverse 是一个原生的 Rust 逆向工程工作台,拥有现代化的 GUI、分析管道 (CFG → IR → SSA) 以及脚本编写 + 补丁工作流。它的设计旨在保持强大功能的同时,不会让人感觉像是在操作复杂的飞机驾驶舱。 它的构建基于三个核心理念: - 坚实的基础(图 + 语义),确保随着功能的增加分析依然准确。 - 友好的默认布局,让你在日常使用中无需在各种菜单中苦苦寻找。 - 完全免费。 ## 亮点 - 带有标签/注释/书签和快速导航的反汇编视图 - 支持交互式节点拖拽 + DOT 导出的控制流图 (CFG) 视图 - IR + SSA 视图,以及额外的分析标签页(循环 / 类型推断 / 别名摘要) - 反编译输出(C/C++ 和 Rust 风格的伪代码) - 支持实时补丁和十六进制转储导出的 Hex 视图 - 带有预设和工作区脚本的 Python 控制台 - 跨所有标签页导出内容的全局搜索 (Ctrl+F),以及反汇编局部搜索 (Ctrl+Shift+F) - SNEK Lab:科学计算器 + 自定义绑图器(基于表达式) - 外观控制:暗色/亮色 + 主题色 + 可选的自定义调色板 ## SNEK Reverse 是什么(不是什么) SNEK Reverse 是一个逆向工程工作台:它加载二进制文件,对其进行分析,并为你提供各种视图,帮助你理解其行为并进行受控的编辑。 它(目前还)不是一个完整的调试器,也不试图掩盖逆向工程本身的难度。其目标是使核心工作流更加顺畅,同时保留高级功能的可用性。 ## 核心管道 分析管道采用了类似编译器的设计: 1. 解码指令 2. 划分基本块 3. 构建 CFG(后继 + 前驱) 4. 提升为语义 IR 5. 转换为 SSA 6. 运行优化 / 清理遍 7. 渲染 IR / SSA 视图并生成伪代码 正是这一机制赋予了它诸如正确的控制流推理、基于 SSA 的转换以及更稳定的反编译输出等特性。 ## 快速开始 ### 构建 ``` cargo build --release ``` ### 运行 ``` cargo run --release ``` (或者如果你觉得麻烦,也可以直接从 Releases 标签页下载最新的预构建 exe 文件) ## 支持的格式 / 架构说明 目前核心工作流主要集中在 PE + x86/x86\_64。加载器和反汇编器层采用了结构化设计,因此无需重写 GUI 即可添加其他格式/架构。 ## 标签页和工具 应用使用可停靠/标签页布局。你可以关闭标签页,并通过 View 菜单重新打开它们。 ### 核心标签页(默认布局) - 反汇编 - 反编译 (C/C++) - 反编译 - Hex 视图 - 图视图 - 函数 - 字符串 - 交叉引用 - Python 控制台 - 日志 - SNEK Lab ### 高级标签页(可用,但非强制) - 分析数据 - IR - SSA - 循环 - 类型 - 别名 - 导入 - 导出 - 书签 - 符号树 - 寄存器 - 栈视图 - 熵图 - 资源 ## UI 布局 默认布局刻意保持极简。高级视图依然存在,但被归类在以下菜单中: - View → Advanced Tabs - View → Reset Layout (Advanced) 这保持了极高的初次使用可用性,同时让深度工具只需一键即可访问。 布局是面向用户的选择: - Reset Layout (Simple) 让日常工作流保持紧凑。 - Reset Layout (Advanced) 展现所有内容以供深入探究。 ## 导航与搜索 - 全局查找:Ctrl+F(在多个标签页的导出文本中搜索) - 反汇编中查找:Ctrl+Shift+F(在列表中基于地址的导航) - 查找下一个 / 上一个:F3 / Shift+F3 - 后退 / 前进:Alt+Left / Alt+Right - 跳转到地址:Navigate → Goto Address… 大多数视图都有一个 Export 部分,可以将当前内容转换为可选择的文本,以便进行 Ctrl+A / Ctrl+C 操作。 ## 反汇编工作流 反汇编支持: - 标签 - 注释 - 书签 - 跳转到目标 - 交叉引用 Export 面板设计用于将内容复制/粘贴到笔记或外部工具中。 ## 图视图 图视图以交互方式渲染 CFG: - 缩放 + 平移 - 拖动节点 - DOT 导出(复制到剪贴板) ## 反编译 SNEK Reverse 从提升的 IR/SSA 管道生成伪代码。 注意事项: - 输出旨在具备可读性和稳定性,而不是追求“完美的 C 代码”。 - 类型推断是尽力而为的,并会随着更多分析的加入而不断改进。 ## IR / SSA / 分析标签页 - IR:提升后程序操作的语义视图 - SSA:重命名的变量、phi 节点和优化形式 - 循环:循环头/尾及成员块(自然循环检测) - 类型:每个 SSA 变量的尽力推断类型 - 别名:基本的内存位置分类及加载/存储摘要 ## Hex 视图与补丁 Hex 视图支持: - 光标导航 - 内联补丁(在光标处写入字节) - 复制行 / 复制完整的十六进制转储 - 用于轻松复制/粘贴的导出面板 补丁会更新视图所使用的内存表示。 ## 字符串 / 导入 / 导出 - 字符串视图包含在可用时快速导航到交叉引用的功能。 - 导入和导出是从 PE 表中提取的(尽力而为)。 ## Python 控制台与脚本工作区 Python 控制台是一个内置的脚本空间,可以针对当前的分析上下文运行预设和工作区脚本。 用例: - 快速分类脚本(指标、字符串搜索、xref 报告) - 跨函数/块的自动化 - 自定义数据提取 标准输出/标准错误可见且可复制,某些脚本输出可以驱动 UI 操作(如 goto address / focus xrefs)。 ## SNEK Lab(计算器 + 绘图器) 支持: - 运算符:`+ - * / ^`(带一元 `-`) - 变量:`ans`、`x`(用于绘图),常量 `pi`、`e` - 函数:`sin cos tan asin acos atan sqrt abs ln log exp floor ceil round pow min max` 绘图导出: - 复制 CSV (x,y) ## 外观与个性化 - 暗色 / 亮色 / 自定义主题模式 - 主题色(用于选中/链接样式) - 可选的自定义调色板(背景/面板/文本) - 简单与高级布局偏好 个性化设置会自动保存并在下次启动时恢复。 ## 性能说明 SNEK Reverse 在后台执行分析工作,因此 GUI 能够保持响应。 一些重度视图被刻意设计为“导出驱动”(文本缓冲区),这样你就可以快速搜索/复制,而无需等待复杂的 UI 组件渲染数千行内容。 ## 项目结构 仓库按层划分: - formats:加载器 (PE/ELF/Mach-O) - analysis:反汇编 + CFG + IR + SSA + 伪代码 - gui:工作台 UI(标签页、停靠、操作、脚本、导出) - native:通过 C/C++ 实现的可选原生辅助工具 - threading:一个小型线程池模块(独立授权) ## 许可证 主项目遵循 SNEK Reverse Non-Resale License (SR-NR-1.0)。你可以自由使用、修改和重新分发,但不得将软件(原始或修改后的)作为产品转售。 位于 `src/threading/` 下的 threading 模块采用 MIT 许可证单独授权。详见 `LICENSE_THREADING`。 ## 安全 / 安全性说明 逆向工程工具会处理不受信任的输入。请将二进制文件和提取的字符串视为恶意内容: - 不要在沙箱之外执行未知的二进制文件。 - 将提取的字符串复制/粘贴到 shell 中时要小心。 - 处理恶意软件时最好在虚拟机中进行。 ## 应用的未来 目前我们正在开发该应用的 2.0.0 版本,不久后将发布。目前大部分问题是由于 IR 中缺少 Phi 节点引起的,我们正致力于解决此问题。 ### 免费软件万岁,**ATroubledSnake**
标签:C++伪代码, DAST, Rust, TLS抓取, UML, 中间表示, 二进制分析, 二进制发布, 二进制补丁, 云安全运维, 云资产清单, 反汇编工具, 反编译器, 可视化界面, 图形用户界面, 基础块, 安全分析工作台, 开源工具, 恶意软件分析, 控制流分析, 控制流图, 类型推断, 网络流量审计, 软件安全, 逆向工具, 逆向工程, 通知系统, 静态单赋值