
Cutter 快捷键完全指南从默认按键到反汇编、图形与调试工作流【免费下载链接】cutterFree and Open Source Reverse Engineering Platform powered by rizin项目地址: https://gitcode.com/gh_mirrors/cu/cutter本篇指南以 Cutter 官方用户文档 shortcuts.rst 为核心骨架结合仓库中 DefaultShortcuts.cpp 的完整快捷键注册表与 ShortcutManager 的实现细节系统梳理 Cutter 的全部默认快捷键。读完本文你将掌握全局导航、各 Widget 呼出、反汇编/图形视图编辑、以及调试会话控制的全套键盘操作并能理解这些快捷键在源码中的注册机制与自定义方式。快捷键的底层机制ShortcutManager 与 DefaultShortcutsCutter 的快捷键并非散落在各个 UI 文件中的魔法键位而是由一套集中的注册表统一管理。所有默认快捷键都定义在 DefaultShortcuts.cpp 中以QHashQString, Shortcut的形式存在每个条目包含ID 标识如Disassembly.defineFunction、Debug.toggleBreakpoint采用“类别.动作”的命名规范键位序列QListQKeySequence一个动作可绑定多个键位描述文本与上下文用于 UI 展示与翻译通过QT_TRANSLATE_NOOP标记见 DefaultShortcuts.h 中的Shortcut结构体。运行时各 Widget 通过单例 ShortcutManagerShortcuts()宏统一取键位并创建动作。例如Shortcuts()-makeAction(Debug.start, this)会一次性完成QAction的快捷键设置与文本翻译见 DebugActions.cppmakeQShortcut则用于直接挂在某个 Widget 上的QShortcut如 DisassemblerGraphView.cpp 中的Graph.takeTrue等。值得注意的实现细节是ShortcutManager::getKeySequences会优先检查用户自定义键位getCustomKeySequences为空时才回落到默认注册表。从 ShortcutManager.cpp 的注释可见自定义快捷键的持久化支持当前尚未实现因此本文以下表格均以默认键位为准。全局快捷键贯穿整个界面的通用操作以下全局快捷键在任何工作区下都生效对应 DefaultShortcuts.cpp 中General.、Console.、Omnibar.等前缀的条目快捷键功能源码 ID.句点聚焦控制台输入框Console.focusConsoleG/S聚焦搜索栏General.seek/General.showFilterCtrl/CmdR刷新当前内容General.refreshContentsGeneral.refreshContents在主窗口中被显式绑定到“刷新”动作见 MainWindow.cpp。搜索栏相关快捷键由Search.前缀补充例如Ctrl/CmdF呼出/隐藏搜索栏Search.toggle、Enter查找下一个、ShiftEnter查找上一个、Ctrl/CmdEnter跳到最后一项、Ctrl/CmdO打开搜索选项菜单见 DefaultShortcuts.cpp。此外General.类别还提供了不少文档表格未列出的实用键位快捷键功能源码 ID$跳转到当前函数末尾General.seekToFunctionEnd^跳转到当前函数开头General.seekToFunctionStartCtrl/CmdZ / ShiftCtrl/CmdZ撤销/重做 SeekBack/ForwardGeneral.back/General.forwardEsc清除过滤器General.clearFilterWidget 快捷键快速呼出各信息窗口Cutter 的字符串、导入导出、图形、控制台等面板均支持一键呼出Toggle对应源码中的Strings.toggle、Graph.toggle、Imports.toggle、Exports.toggle、Console.toggle快捷键功能ShiftF12呼出/隐藏 Strings字符串窗口ShiftG呼出/隐藏 Graph图形窗口ShiftI呼出/隐藏 Imports导入窗口ShiftE呼出/隐藏 Exports导出窗口Ctrl\ 或:呼出/隐藏 Console控制台窗口这些 Toggle 动作由各 Widget 自行注册例如 StringsWidget.cpp 与 ImportsWidget.cpp 中的makeQShortcut(Strings.toggle / Imports.toggle, main)、GraphWidget.cpp 中的Graph.toggle、ExportsWidget.cpp 中的Exports.toggle。控制台除切换外还有独立的辅助键Ctrl/CmdL清空输出、↑/↓翻历史、Tab自动补全、Esc清空输入Console.前缀见 ConsoleWidget.cpp。反汇编视图快捷键静态分析的核心操作原文档强调反汇编视图的大部分快捷键同样适用于反汇编图形视图Disassembly Graph view。完整键位表如下快捷键功能EscSeek 到上一个位置Space切换到反汇编图形视图Ctrl/CmdC复制;添加注释P在当前地址定义新函数ShiftP编辑函数U取消定义函数N重命名当前函数/标志ShiftN重命名此处引用的标志/函数Y编辑/重命名局部变量A将当前地址设为字符串C将当前地址设为代码X显示交叉引用XrefsCtrl/Cmd放大Ctrl/Cmd-缩小Ctrl/Cmd重置缩放上述动作在 DisassemblyContextMenu.cpp 中通过initShortcutAction(action..., Disassembly.xxx, ...)批量接入右键菜单是反汇编行右键菜单详见 disassembly-context-menu.rst与键盘操作共用的一套动作体系。以 DefaultShortcuts.cpp 的Disassembly.类别为准还可补充以下高频键位快捷键功能源码 IDCtrl/CmdAltC复制指令字节Disassembly.copyInstructionBytesShiftX查看局部变量的 XrefsDisassembly.XRefsForVariablesG修改/添加全局变量Disassembly.globalVariableShiftA以高级Advanced方式设为字符串Disassembly.setAsStringAdvanced*以高级方式设为数据Disassembly.setToDataExD切换为数据Switch DataDisassembly.setToDataH/J/K/L光标左/下/上/右移动Disassembly.moveLeft/Down/Up/RightCtrl/CmdAltC复制指令字节Disassembly.copyInstructionBytes代码定位同样重要Esc用于返回上一个 seek 位置General.seekPrev见 DecompilerWidget.cpp而撤销/重做 seek 对应Ctrl/CmdZ与Ctrl/CmdShiftZ。图形视图快捷键以键盘驱动图漫游图形视图Disassembly Graph View除了共享上文多数快捷键外还有一套针对控制流图的专属导航键位源码前缀Graph.见 DefaultShortcuts.cpp快捷键功能EscSeek 到上一个位置Space切换回反汇编视图Ctrl/Cmd鼠标滚轮缩放放大-缩小重置缩放J下一条指令K上一条指令T沿真分支/无条件分支前进F沿假分支/无条件分支前进J/K/T/F四个键是图漫游的灵魂J、K沿当前基本块内逐条移动指令T、F则直接跳入对应的分支目标块。它们的实现位于 DisassemblerGraphView.cpp通过Graph.takeTrue、Graph.takeFalse、Graph.nextInstr、Graph.prevInstr四个 QShortcut 挂载。图形视图的功能细节可进一步参考 graph-widget-context-menu.rst。调试快捷键断点与单步控制调试会话相关的快捷键由DebugActions统一注册源码前缀Debug.见 DefaultShortcuts.cpp主键位如下快捷键功能F9开始调试F7单步步入Step intoF8单步步过Step overF5继续执行ContinueF2或Ctrl/CmdB添加/移除断点Ctrl/CmdF2编辑或打开高级断点对话框断点相关操作进一步对应 BreakpointsDialog 与 BreakpointWidget 中的动作且与文档 breakpoints-widget-context-menu.rst 描述的右键菜单联动。调试工具栏的更多功能如 Continue until Main/Call/Syscall可参考 debug-buttons-toolbar.rst。此外Debug.类别还包含一些扩展键位快捷键功能源码 IDCtrl/CmdF5反向继续Continue backwardsDebug.continueBackCtrl/CmdF7反向单步Step backwardsDebug.stepBackCtrl/CmdF8单步跳出Step outDebug.stepOut扩展键位速查其他类别的默认快捷键除了上述文档重点覆盖的四大类别Cutter 的注册表还内置了大量未收录进shortcuts.rst的默认键位。借助偏好设置中的快捷键面板见下文可以随时查阅这里列出部分高频条目Hex 视图Ctrl/CmdC复制Hex.copy、N在地址处添加标志Hex.addFlag、M添加标记Hex.addMarkTypes 类型管理ShiftD删除、ShiftE编辑、ShiftX导出、ShiftL加载、ShiftR重命名、ShiftU显示用法、Enter/ShiftV查看Types.前缀见 DefaultShortcuts.cppOmnibar 地址栏Esc清空、Ctrl/CmdEnter显示更多补全、Ctrl/CmdShiftEnter显示全部补全Omnibar.前缀图形总览Overview放大、-缩小Docking 停靠Alt启用/禁用停靠Docking.toggle。在界面中查看与管理快捷键所有快捷键都会在**偏好设置 → Shortcuts快捷键**页面中集中展示。其实现是 ShortcutOptionsWidget以树形结构按类别General、Disassembly、Decompiler、Strings、Graph、Breakpoint、Console、Hex、Debug、Functions、Omnibar、Exports、Imports、Graph Overview、Docking分组展示每一行包含Command命令、Shortcut快捷键、Description描述三列顶部提供过滤器输入框按命令名、快捷键或描述实时过滤便于快速定位某个键位filterShortcutTree实现树默认按命令名升序排列并全部展开。从 ShortcutOptionsWidget.cpp 的实现可以看到面板数据来自Shortcuts()-getAllShortcuts()即遍历默认注册表并读取每个 ID 的键位序列若有多个键位则用逗号分隔显示。偏好设置整体入口参见 preferences.rst。小结Cutter 的快捷键体系以 DefaultShortcuts.cpp 的集中注册表为数据源经 ShortcutManager 单例分发给各 Widget 与菜单动作最终在偏好设置面板中可视化呈现。掌握G/S全局搜索、Space视图切换、P/U/N函数与标志操作、T/F/J/K图漫游、以及F5/F7/F8/F9/F2调试控制这组核心键位即可在不触碰鼠标的情况下完成从定位、分析到调试的完整逆向工作流。随着版本演进部分键位可能在偏好设置面板中调整建议以面板中实时展示的内容为准。【免费下载链接】cutterFree and Open Source Reverse Engineering Platform powered by rizin项目地址: https://gitcode.com/gh_mirrors/cu/cutter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考