cutter
开源二进制逆向工程 GUI 平台, rizin 内核 + Qt5 打造,支持函数图、反编译和交叉引用分析
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
开源二进制逆向工程 GUI 平台, rizin 内核 + Qt5 打造,支持函数图、反编译和交叉引用分析
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你捡到了一个来历不明的可执行文件,想知道它到底是干什么的——是正常的计算器,还是一个潜伏在后台偷数据的木马?传统做法是在命令行里敲打一串晦涩的指令,眼睛在十六进制数据和寄存器状态之间来回切换,稍有分神便迷失在浩如烟海的机器码中。
Cutter 正是为解决这个问题而生。它将强大的 rizin 逆向引擎包裹进一个现代化的图形界面,让原本只有专业逆向工程师才能完成的工作,变成了每一个安全研究者都能上手的日常工具。

图1:Cutter 主界面——函数图(Function Graph)、反汇编视图、字符串面板协同展示
Cutter 的故事要从 rizin 说起。rizin 本身是一款极为强大的开源逆向工程框架,被业界广泛用作 IDA Pro 的免费替代方案。然而 rizin 本身是一个纯命令行工具,其陡峭的学习曲线让大量初学者望而却步——光是记住数百个命令和眼花缭乱的 flags 格式就足够劝退。
Cutter 诞生于 2016 年,由一批长期活跃在二进制安全社区的开发者发起。他们的目标很朴素:让 rizin 的强大能力通过图形界面普惠化。项目从诞生的第一天起就坚持开源(GPL-3.0 协议),不接受商业赞助,保持完全的社区驱动。十年来,Cutter 已经从一个小众极客工具成长为二进制安全领域的事实标准之一,累计收获近 19000 颗 GitHub 星标。
Cutter 的核心价值在于将 rizin 的命令行能力可视化。以下是它的几个杀手级功能:
这是 Cutter 最有辨识度的视图之一。它将一个函数内的所有基本块(Basic Block)用有向图的形式呈现,每个节点代表一段连续的机器指令,箭头表示程序跳转逻辑。对于分析复杂函数的控制流来说,这种视觉化呈现比逐行看汇编要高效得多——你只需一眼就能把握这个函数有几次判断分支、是否存在循环、哪些是错误处理路径。
Cutter 内置了集成 Ghidra decompiler 的插件,点击一个函数就能同时看到原始汇编指令和 Ghidra 生成的伪代码(C 语言风格)。这对于理解高级语言的逻辑意图至关重要——比如看到 if (v5 < 0 || v5 > 100) 比 cmp eax, 64h; ja loc_401234 要直观一万倍。
在逆向分析中,理解"谁调用了这个函数"和"这个地址的数据被哪里引用"是高频需求。Cutter 的交叉引用面板可以一键追踪所有读写操作,帮助分析人员快速梳理数据流和调用图。
Cutter 支持两类插件:Python 插件(适合脚本自动化,门槛低,社区贡献活跃)和 Native C++ 插件(适合需要深度集成的高性能扩展)。
官方维护的 cutter-plugins 仓库汇集了大量社区插件,涵盖 Ghidra 集成、DynamoRIO 代码覆盖率可视化、YARA 规则扫描等实用功能。
从代码结构来看,Cutter 是一个典型的 Qt5(C++)桌面应用,采用 MVC 模式组织:
src/core/:核心逻辑层,包含 Cutter.cpp(与 rizin 引擎通信)、MainWindow.cpp(主窗口)、CutterJson.cpp(JSON 序列化)src/common/:通用组件,如 AsyncTask(异步任务)、AnalysisTask(分析任务)、BasicBlockHighlighter(图形高亮)src/dialogs/:Qt 对话框组件src/plugins/:插件加载与管理src/bindings/:Python 绑定层src/themes/:内置多套配色主题rizin/:作为 git submodule 引入的 rizin 核心引擎值得注意的是,Cutter 将 rizin 作为 submodule 直接集成,这意味着它始终与 rizin 的最新能力保持同步,但同时也意味着构建时需要同时编译 rizin——这是构建复杂度较高的主要原因之一。
技术栈总结:核心语言为 C++(95%+),辅以 Python 用于插件和脚本绑定,UI 框架为 Qt5,构建系统为 CMake。
Cutter 提供了官方 Dockerfile,支持 Docker 容器化部署。这对于在服务器端批量运行逆向分析任务来说是极好的——你可以在无头模式下调用 rizin CLI 工具。
不过,Cutter 本质上是一个 Qt5 图形桌面应用,它的图形界面依赖 X11 显示服务器。对于想要在本地直接使用的用户:
| 平台 | 推荐方式 |
|---|---|
| Linux | AppImage(chmod +x 后直接运行)或 OBS 仓库 |
| macOS | DMG 安装包或 Homebrew Cask |
| Windows | ZIP 解压、Scoop 或 Chocolatey |
从源码构建的话,需要先编译 rizin(依赖 Meson + Ninja),再编译 Qt5 依赖,整个过程在有经验的工程师手里也需要 30 分钟以上。对于普通用户,直接下载官方 release 二进制包是最省心的选择。
如果你刚刚接触逆向工程,Cutter 的图形化界面大幅降低了第一道门槛——不需要记忆 rz 命令行语法,直接点点鼠标就能开始分析一个二进制文件。但要真正读懂汇编、理解调用约定(calling convention)、掌握堆栈布局,仍需要扎实的计算机系统知识。
好消息是,Cutter 官方维护了完善的文档(cutter.re/docs),涵盖从安装配置到高级分析的完整教程,社区也非常活跃( Telegram、Mattermost、IRC 多个渠道)。
世上没有完美的工具,Cutter 也有其局限:
Cutter 的出现标志着开源逆向工具从"极客专属"走向"研究者标配"。它与 Ghidra、rizin、Binary Ninja 共同构成了当今二进制安全研究的开源四剑客。
值得关注的是,近年来 AI 大模型开始辅助逆向分析,Cutter 社区也在探索将 AI 能力集成到分析工作流中,这将是下一个值得期待的方向。
从增长曲线看,Cutter 保持着稳定的社区活跃度,每年 release 节奏稳定,plugin 生态持续扩展。作为一个近 10 年历史的成熟项目,它没有被时间淘汰,反而在安全工具竞争中稳步前行,本身就说明了这个项目的价值和生命力。
一句话总结:Cutter 让逆向工程从一项需要长期专业训练的技术,变成了一种每个安全研究者都能快速上手的日常能力——这就是它存在的最大意义。