Cutter 菜单栏全解析:从 File 到 Help 的完整操作参考与源码实现对照

发布时间:2026/9/20 1:56:23
Cutter 菜单栏全解析:从 File 到 Help 的完整操作参考与源码实现对照
Cutter 菜单栏全解析从 File 到 Help 的完整操作参考与源码实现对照【免费下载链接】cutterFree and Open Source Reverse Engineering Platform powered by rizin项目地址: https://gitcode.com/gh_mirrors/cu/cutter本文系统梳理 Cutter基于 rizin 的开源逆向工程平台主菜单栏的全部菜单项包括 File、Edit、View、Windows、Plugins、Debug 以及 Debug → View 与 Help 八个菜单的功能、操作路径与快捷键并结合源码说明这些菜单项背后的实现机制如 I/O 三模式控制器、布局管理与插件菜单扩展帮助读者快速掌握 Cutter 的日常操作方式并理解其 GUI 层的组织原理。菜单栏的位置取决于桌面环境可能位于窗口顶部也可能位于屏幕顶部全局菜单栏。以下章节与 菜单栏文档 及其子页面一一对应。File 菜单文件、映射与 I/O 模式管理File 菜单涵盖新窗口、文件映射、PDB 导入、写入模式切换、项目保存、代码导出、Rizin 脚本执行与会话退出。新窗口与文件映射New WindowFile - New Window快捷键CtrlN在不退出当前会话的前提下打开 Cutter 新实例开始新的逆向会话。Map FileFile - Map File快捷键CtrlM将其他文件的内容映射进与已加载二进制共享的 I/O 空间映射位置可以是随机的或指定的偏移。从文档描述看这是复现运行环境的基础工具可以加载并映射 core 文件、调试会话、框架所依赖的全部库和文件从而在静态环境中重现目标二进制的完整依赖视图。Import PDBFile - Import PDB加载外部 PDB 文件以补充调试信息。Cutter 不依赖 Windows API 解析 PDB因此可在 Linux、macOS 等其他平台加载 Windows 二进制符号。三种 I/O 模式Write、Cache 与 Read-OnlyFile → Set mode 子菜单提供三种模式切换这是 Cutter 修改二进制的核心安全机制模式操作路径行为风险Write modeFile - Set mode - Write mode启用写模式所有补丁与编辑直接写回磁盘上的原始文件每次修改都会落到磁盘存在风险Cache modeFile - Set mode - Cache mode修改只保存在内存缓存中不触碰磁盘文件需通过 Commit changes 显式提交更安全无数据丢失风险Read-Only modeFile - Set mode - Read-Only mode禁止一切补丁与编辑仅在 Write/Cache 模式下可切换默认模式Read-Only 是 Cutter 打开文件时的默认模式除非用户显式启用 Write 或 Cache。Commit Changes from CacheFile - Commit changes用于把 Cache 模式下的全部修改一次性应用到磁盘文件——这是 Cache 模式相对 Write 模式的唯一落盘入口。从源码结构看这三种模式由 IOModesController 统一管理其Mode枚举定义了READ_ONLY、CACHE、WRITE三个状态并提供getIOMode()/setIOMode(Mode mode)接口。主窗口实现约 230-240 行中菜单动作分别调用ioModesController.setIOMode(IOModesController::Mode::CACHE)、WRITE、READ_ONLY印证了菜单项与三态控制器的直接对应关系。项目保存与代码导出SaveFile - SaveCtrlS将会话保存为项目文件若当前会话尚未关联项目文件会弹出 Save as... 对话框。Save As...File - Save As...保存会话当前状态包括函数名、注释等分析成果。注意该功能文档标注为 Beta 阶段。Export as CodeFile - Export as code将完整二进制导出为可在编程语言中使用的格式支持 Python 数组、Java、多种 C 数组格式、JavaScript 等。文档特别强调这不是反编译功能只是数据到代码字面量的转换。运行 Rizin 脚本与退出Run Rizin scriptFile - Run Rizin script用于执行 Rizin 脚本——即包含一系列 Rizin 命令的文件可手工编写也可由 Rizin 命令自动生成以星号结尾的命令如afl*会输出可重放的命令脚本。文档给出的示例脚本?e hello world ?v 105 pdf mainQuitFile - QuitCtrlQ退出当前会话退出前会询问是否保存会话以免丢失数据。Edit 菜单导航历史与偏好设置Edit 菜单相对精简核心是寻址历史导航与设置入口。SearchEdit - Search显示 Search 组件。Undo SeekEdit - Undo SeekAltLeft回退到上一个浏览位置。Redo SeekEdit - Redo SeekAltRight前进到寻址历史中的下一位置。这两个动作共同构成浏览历史栈语义类似浏览器的后退/前进但作用于逆向工作区中的地址跳转。PreferencesEdit - Preferences打开偏好设置对话框用于访问和定义 Cutter 的各项配置。View 菜单刷新、缩放与布局管理View 菜单负责内容刷新、外观选项与布局持久化。刷新与重置Refresh ContentsView - Refresh Contents在部分场景下例如从内置 Rizin 控制台定义了新函数后组件显示的信息可能不是最新的刷新会从会话中重新拉取最新数据并更新各视图。文档注明自动感知底层变更并自动刷新目前是进行中的工作。Reset to default layoutView - Reset to default layout将当前布局重置为 Cutter 默认布局。Reset SettingsView - Reset Settings将当前设置重置为 Cutter 默认设置。面板锁定与标签栏Unlock PanelsView - Unlock Panels勾选与否决定各组件是否允许被移动或关闭取消勾选可防止误操作改变当前布局。Show Tabs at the TopView - Show Tabs at the Top切换标签栏位置。Grouped dock draggingView - Grouped dock dragging启用后拖动某个组件会连同与其分组的组件一起拖动若要单独拖动分组中的某个组件需从标签页本身而非标题栏拖拽。禁用该选项则始终按单个组件拖动。缩放Zoom InView - Zoom - Zoom InCtrl放大 Graph、Disassembly、Hexdump 等组件内容。Zoom OutView - Zoom - Zoom OutCtrl-缩小。ResetView - Zoom - ResetCtrl恢复默认缩放。布局的保存与管理Save LayoutView - Save Layout以指定名称保存当前布局。一个布局包含当前打开的组件集合、它们的位置以及部分属性。Manage layoutsView - Manage layouts对已保存的布局执行重命名或删除。Layouts 子菜单View - Layouts - 布局名把所选布局加载到当前视图加载布局本身不会随操作被修改若要保存变更需另行使用 Save Layout。这些布局文档对应 布局偏好文档。Windows 菜单分析视图与组件实例管理Windows 菜单是组件开关的主入口分为显示已有组件与新增组件实例两类。信息显示组件DashboardWindows - Dashboard显示二进制基本信息面板包括文件名、二进制格式PE、ELF64 等、位数16/32/64、架构x86、ARM 等、访问模式Read/Write/Execute、大小、二进制类型、编写语言、编译器检测、Stack Canaries、NX 位、位置无关代码、校验和MD5、SHA1 等、熵值等。FunctionsWindows - Functions列出 Cutter 识别的函数及名称、地址、大小等信息Main、Entrypoint 和外部函数会以特定颜色高亮以便快速定位。DecompilerWindows - Decompiler显示当前函数的反编译结果。文档指出 Cutter 发布版默认附带两个反编译器rz-ghidra 与 rz-dec后者即将提供该组件支持地址同步、重命名、重新定类型等交互操作且可通过插件扩展更多反编译器。Graph OverviewWindows - Graph OverviewGraph 视图的缩略总览形式以拉远的视角帮助理解函数整体控制流。SearchWindows - Search打开 Search 面板可在二进制中搜索数据、字符串、十六进制内容等。StringsWindows - StringsShiftF12显示程序中的可打印字符串组件内组合框可选择显示整个二进制或特定段/节中的字符串。TypesWindows - Types打开 Types 组件用于定义、加载、导出和管理结构体、枚举等数据类型。CommentsWindows - Comments显示当前会话的自动注释与用户自定义注释。ConsoleWindows - Console:或 Ctrl打开内置 Rizin 控制台可直接执行 Rizin 命令。新增组件实例以下菜单项用于创建组件的新实例以便同时查看多个位置Add DecompilerWindows - Add Decompiler新增反编译组件实例配合多个反编译器同时查看多个反编译函数。Add DisassemblyWindows - Add Disassembly新增反汇编实例。Add GraphWindows - Add Graph新增 Graph 实例。文档说明了 Graph 视图的结构每个节点代表函数内一个基本块块间进出边代表控制流。Add HexdumpWindows - Add HexdumpShiftG新增十六进制转储实例。Plugins 菜单插件扩展点Plugins 子菜单包含由已加载插件创建的各种窗口与视图。默认情况下该菜单为空直到有插件向其注册动作与菜单项。从源码结构看主窗口界面定义在 MainWindow.ui约 158 行中即预置了menuPlugins这一顶级菜单容器MainWindow.cpp 中还存在addMenuFileAction(QAction *action)约 571 行这类向菜单动态追加动作的接口以及getMenuByType(MenuType type)约 541 行供插件按类型定位目标菜单。可以推断插件通过 PluginManager 加载后借助这些接口把自身动作挂接到 Plugins 菜单及相关菜单上从而形成默认空菜单、随插件填充的行为。Debug 菜单调试与模拟执行控制Debug 菜单提供调试会话的启动与执行控制。会话启动Start debugDebug - Start debugF9对当前加载的二进制启动调试会话。Start emulationDebug - Start emulation对当前二进制启动模拟会话。Cutter 支持多种文件格式的模拟。与调试不同模拟并非真正执行二进制而是逐条模拟指令——这对分析自包含函数、密码学算法或数据去混淆非常有用且模拟不受运行平台限制例如可在 Windows 上模拟 ELF 文件、在 Linux 上模拟 DLL。Attach to processDebug - Attach to process将 Cutter 调试器附加到已运行的进程而非生成新进程。Connect to a remote debuggerDebug - Connect to a remote debugger通过提供远程调试器的 IP 与端口连接 GDB、WinDbg 等远程调试器。单步与继续动作操作路径快捷键行为Step IntoDebug - StepF7执行单条汇编指令步入函数与循环Step OverDebug - Step overF8执行单条指令跨过程序被调用函数会被执行暂停点为函数调用后的下一条指令Step OutDebug - Step outCtrlF8执行代码直到当前函数返回时暂停ContinueDebug - ContinueF5继续执行直到命中断点、被用户手动挂起或程序退出Continue until callDebug - Continue until call—继续执行直到遇到函数调用Continue until syscallDebug - Continue until syscall—继续执行直到遇到系统调用Debug → View 菜单调试辅助视图Debug 下的 View 子菜单集中了调试态的辅助组件开关。除 Backtrace 外的多数视图文档标注仅在 Debug 模式下可用。BacktraceDebug - View - Backtrace显示回溯窗口。BreakpointsDebug - View - Breakpoints显示断点组件可列出、管理、增删和定义断点。ThreadsDebug - View - Threads列出运行中应用的线程。ProcessesDebug - View - Processes显示所有子进程并允许在进程间切换对内核调试或跟踪 fork 行为尤其有用。Memory mapDebug - View - Memory map显示运行进程的已映射内存页包括已加载库的映射与动态分配的映射。RegistersDebug - View - Registers显示运行进程的寄存器与标志信息不仅可查看还可直接修改。Register ReferencesDebug - View - Register ReferencesRegisters 组件的扩展视图支持对寄存器值进行多层深度的解引用telescope。StackDebug - View - Stack显示运行进程栈值与栈结构。Help 菜单版本、反馈与文档AboutHelp - About查看当前版本、已安装插件、作者、构建选项、许可证等信息。Report an issueHelp - Report an issue在浏览器中打开 Cutter 的 GitHub 新 issue 页面并自动填充 issue 模板中的相关信息。DocumentationHelp - Documentation在浏览器中打开 Cutter 用户文档。源码级补充菜单是如何组织的从 MainWindow.ui 可以看到菜单栏由一个QMenuBar约 36 行承载内部按顶级菜单组织为menuFile51 行、menuSetMode63 行即 Set mode 子菜单、menuView95 行、menuZoom102 行、menuLayouts111 行、menuTools131 行、menuHelp137 行、menuEdit145 行、menuWindows154 行、menuPlugins158 行、menuAddInfoWidgets163 行、menuAddDebugWidgets168 行、menuDebug183 行等与上文各菜单一一对应。其中menuAddInfoWidgets与menuAddDebugWidgets对应 Windows 菜单中的新增组件实例子菜单。MainWindow.cpp 中除菜单动作到IOModesController的映射外还维护了面向插件的扩展菜单机制约 146-147 行创建了名为 Plugins 的反汇编/可寻址上下文扩展菜单2041 行的getContextMenuExtensions(ContextMenuType type)提供统一访问说明菜单体系同时服务于主菜单栏与上下文菜单两类扩展点。快捷键方面各菜单项标注的快捷键CtrlN、F7/F8、Ctrl 等由 DefaultShortcuts.cpp 中的默认快捷键表统一注册可在偏好设置的快捷键选项中调整。快速参考表菜单典型操作快捷键FileNew WindowCtrlNFileMap FileCtrlMFileSaveCtrlSFileQuitCtrlQEditUndo Seek / Redo SeekAltLeft/AltRightViewZoom In / Out / ResetCtrl/Ctrl-/CtrlWindowsStringsShiftF12WindowsAdd HexdumpShiftGWindowsConsole:或 CtrlDebugStart debugF9DebugStep / Step over / Step outF7/F8/CtrlF8DebugContinueF5【免费下载链接】cutterFree and Open Source Reverse Engineering Platform powered by rizin项目地址: https://gitcode.com/gh_mirrors/cu/cutter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考