ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

x64dbg GUI 菜单系统全解析:File、Debug、Plugins、Favourites、Options 与 Help 菜单实战指南

x64dbg GUI 菜单系统全解析:File、Debug、Plugins、Favourites、Options 与 Help 菜单实战指南 x64dbg GUI 菜单系统全解析File、Debug、Plugins、Favourites、Options 与 Help 菜单实战指南【免费下载链接】x64dbgAn open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis.项目地址: https://gitcode.com/gh_mirrors/x6/x64dbgx64dbg 是一款面向 Windows 用户态的开源调试器其图形界面GUI围绕六个顶级菜单组织全部调试操作File文件、Debug调试、Plugins插件、Favourites收藏、Options选项与Help帮助。本文以仓库中 docs/gui/menus 章节index.rst 及其六个子文档为骨架逐一拆解每个菜单项的功能、对应的命令行底层命令及其使用限制并结合 src/gui/Src 下的 GUI 实现源码如 FavouriteTools.cpp、SystemBreakpointScriptDialog.cpp、CustomizeMenuDialog.cpp、Configuration.cpp佐证其行为。读完本文你将能够熟练使用 x64dbg 的菜单完成打开/附加/分离调试目标、单步/跟踪/断点运行、收藏自定义工具与脚本、导入导出配置与数据库等完整工作流。菜单系统概览x64dbg 的 GUI 共包含六个顶级菜单官方文档分别记录在以下文件中菜单文档文件File文件docs/gui/menus/File.rstDebug调试docs/gui/menus/Debug.rstPlugins插件docs/gui/menus/Plugins.rstFavourites收藏docs/gui/menus/Favourites.rstOptions选项docs/gui/menus/Options.rstHelp帮助docs/gui/menus/Help.rst这些菜单的顶层控件、动作绑定与快捷键分发均由主窗口实现代码集中在 MainWindow.cpp 与 MainWindow.ui 中。绝大多数菜单项在点击后都会转化为一条底层调试命令由 src/dbg/commands 与 src/dbg/command.cpp 解析执行因此理解菜单等价于理解 x64dbg 的命令行体系。File 菜单会话的开启与结束File 菜单负责调试会话的生命周期管理包括打开调试目标、附加进程、数据库导入导出与补丁落地等。Open打开可执行文件Open用于打开一个可执行文件进行调试支持EXE与DLL两种格式。其底层命令为 InitDebug别名initdbg/init。该命令会执行以下初始化流程加载可执行文件并做基本检查若存在 TLS 回调则在其上设置断点在进程入口点entry point设置断点在系统断点system breakpoint处暂停随后将控制权交还给用户。InitDebug支持三个参数arg1为可执行文件路径非完整路径时内部会调用GetCurrentDirectoryAPI 补全路径含空格需加引号[arg2]为创建进程时的命令行参数[arg3]为当前工作目录透传给CreateProcessAPI。命令到达系统断点后返回控制权并设置$pid、$hp/$hProcess变量供脚本引用。Recent Files最近文件Recent Files子菜单列出你此前调试过的文件且不包含任何程序无法调试的文件例如与当前位数架构不匹配的目标。这些条目保存在配置文件 INI 的Recent Files一节中你可以直接编辑该文件删除不需要的条目。配置文件读写由 Configuration.cpp 负责。Attach附加进程Attach会弹出一个列出当前运行进程的对话框选中一个进程即可附加调试。注意限制只能附加与程序同架构的可执行文件例如不能用 x32dbg 附加 64 位进程x64dbg 发行包内含 x32dbg/x64dbg 两个二进制分别对应 32/64 位。如果当前正在调试某个可执行文件附加新进程会终止之前的被调试对象。其底层命令为 AttachDebugger。Detach分离进程Detach将调试器与被调试对象分离被调试对象随后可在无调试器控制的情况下继续运行。非调试状态下无法执行此操作。底层命令为 DetachDebugger。Import / Export database导入 / 导出数据库Import database导入一个用户数据库含标签、注释、断点、函数等调试元数据对应命令 dbload。Export database导出一个未压缩的数据库对应命令 dbsave。数据库的加载与保存逻辑由 src/dbg/database.cpp 实现并可通过 database_cb_batcher.cpp 批量提交数据库回调。Patch file补丁文件打开补丁对话框你可以在其中查看已应用的补丁并将补丁写入文件把内存中的修改落盘到磁盘文件。补丁跟踪逻辑位于 src/dbg/patches.cpp。Restart as Admin以管理员身份重启以管理员权限重启 x64dbg 以及当前被调试对象。适用于需要提权调试的场景例如附加以管理员运行的目标进程。Exit退出终止调试器若当前有被调试进程该进程同样会被终止。Debug 菜单全部调试控制操作Debug 菜单集中了运行、暂停、单步、跟踪等全部核心调试动作。非调试状态下除 Restart 与 Command 两个菜单项外其余菜单项均不可用。多数菜单项直接对应 docs/commands/debug-control 下的命令。运行控制菜单项底层命令说明Runrun继续运行被调试对象Run (Pass exceptions)erun运行跳过pass异常处理Run (swallow exception)serun运行吞掉swallow异常Pausepause暂停正在运行的程序或停止动画执行RestartInitDebug使用最近一次使用的文件重新初始化调试CloseStopDebug停止调试Run until selection会在选中的指令处放置一个单次single-shoot软件断点然后执行 run 命令运行。Run until expression则弹窗要求输入一个地址在指定地址放置软件断点后运行。两者都是临时断点跑到目标地址的便捷方式。单步执行Step菜单项底层命令说明Step IntoStepInto步入Step Into (pass exceptions)eStepInto步入并跳过异常Step Into (swallow exception)seStepInto步入并吞掉异常Step Into (source)TraceIntoConditional src.line(cip) !src.disp(cip)步入直到到达下一条源码行Step OverStepOver步过Step Over (pass exceptions)eStepOver步过并跳过异常Step Over (swallow exception)seStepOver步过并吞掉异常Step Over (source)TraceOverConditional src.line(cip) !src.disp(cip)步过直到到达下一条源码行带 source 的两个菜单项内部使用条件跟踪命令条件src.line(cip) !src.disp(cip)的含义是当前指令指针cip所在源码行与上一行不同即进入了新的源码行时停止但排除仅仅是指令地址位移disp变化的情况。条件跟踪TraceTrace into until condition弹窗输入表达式后执行 TraceIntoConditional条件步入。Trace over until condition弹窗输入表达式后执行 TraceOverConditional条件步过。合法表达式格式参见 docs/introduction/Expressions.md支持寄存器、变量、内存读写与各类表达式函数。Run to User Code执行 RunToUserCode常用于从系统断点/系统 DLL 代码直接跑到用户模块代码处是逆向分析中绕过系统加载器代码的高频操作。动画执行AnimateAnimate into以稳定频率自动重复执行 StepInto。Animate over以稳定频率自动重复执行 StepOver。Animate command弹窗输入一条命令以稳定频率自动重复执行该命令例如自动执行dump观察内存变化。动画执行的核心逻辑位于 src/dbg/animate.cpp配合 animate.h其本质是定时器驱动的命令重放。返回 / 跳过 / 撤销Execute till return步过指令直到EIP/RIP指向的当前指令是ret返回指令为止对应命令 StepOut。Execute till return (pass exceptions)行为同上但将首次机会异常first-chance传递给被调试对象吞掉二次机会second-chance异常对应命令 eStepOut。Skip next instruction跳过下一条指令对应命令 skip。Undo last instruction撤销上一条已执行指令恢复寄存器/内存/标志位等现场对应命令 InstrUndo。Trace Coverage记录并统计当前代码执行覆盖率与 TraceRecord 配合见 src/dbg/TraceRecord.cpp。命令行与其他Change Command Line弹窗显示被调试对象当前的命令行参数并允许修改修改后的命令行参数会保存在数据库中供后续使用。Command将焦点移动到窗口底部的命令输入框便于直接键入命令执行相当于命令行模式的快捷键入口。Hide debugger (PEB)执行 HideDebugger 命令用于隐藏调试器在进程环境块PEB中的痕迹降低被反调试检测识别的概率。Plugins 菜单插件入口与 ScyllaPlugins菜单包含所有已安装插件注册的菜单项——插件安装后即可在此注册自己的菜单具体菜单结构由插件自身决定参见 docs/developers/plugins。插件加载机制由 src/dbg/plugin_loader.cpp 实现。菜单中默认出现的Scylla项用于启动 Scylla导入表重建工具常用于脱壳后的 IAT 修复。也可通过命令 StartScylla 触发。Favourites 菜单打造个人工具台Favourites是一个完全可自定义的菜单点击Manage Favourite Tools菜单项会弹出管理对话框你可以添加自定义工具并为它们分配热键。默认情况下菜单中显示工具或脚本的完整路径若设置了 description描述则显示描述文字。三种可插入的条目类型Tool工具外部可执行程序Script脚本x64dbg 脚本文件Command命令一条调试命令。占位符替换在工具的命令行中支持以下占位符启动前会被自动替换占位符替换内容%PID%被调试对象的十进制PID未调试时为 0%DEBUGGEE%被调试对象的完整路径不加引号%MODULE%当前反汇编视图中模块的完整路径不加引号%-????-%对????处的表达式执行 Formatting 格式化例如%-{cip}-%会被替换为cip的十六进制值通过命令添加收藏除 GUI 对话框外还可以用命令向该菜单添加条目AddFavouriteCommand添加命令型条目AddFavouriteTool添加工具型条目arg1为工具路径可选arg2为描述设置后菜单显示描述而非完整路径路径中同样支持%PID%占位符AddFavouriteToolShortcut为收藏工具添加快捷键。收藏工具的管理实现对话框、条目持久化、占位符展开位于 FavouriteTools.cpp配套 FavouriteTools.h 与 FavouriteTools.ui。从源码结构看占位符替换发生在工具启动前与文档描述一致。Options 菜单偏好、外观与工作流定制菜单项说明Preferences打开 设置对话框可修改各类调试与界面设置Appearance打开Appearance对话框自定义配色方案或字体Shortcuts打开Shortcuts对话框为大多数操作自定义快捷键Customize Menus打开 Customize menus 对话框点击节点展开对应菜单并勾选/取消菜单项。被勾选的项会出现在菜单的 More commands 区域从而缩短主菜单显示可以把不常用的项全部收纳进去Topmost让主窗口保持在其他窗口之上再次点击取消置顶Reload style.css重新加载style.css文件若该文件存在则应用其中指定的新配色方案Set Initialization Script设置全局或针对被调试对象的初始化脚本Import settings从另一个配置文件导入设置对应条目覆盖当前配置缺失的条目保持不变Languages选择程序语言American English - United States 为程序原生语言Set Initialization Script 详解全局初始化脚本指定后会在每个被调试对象到达系统断点或附加断点attach breakpoint时执行。针对被调试对象的初始化脚本在全局初始化脚本执行完毕后执行。清除方式在浏览对话框中将文件路径清空并点击 OK。该对话框的 GUI 实现位于 SystemBreakpointScriptDialog.cpp其背后的脚本执行引擎与系统断点回调逻辑可参见 src/dbg/simplescript.cpp 与 src/dbg/debugger.cpp。Customize Menus 与 Import settings 的源码佐证菜单自定义对话框实现在 CustomizeMenuDialog.cpp 中它遍历主窗口的动作树并维护每个动作的可见/收纳状态设置的读写与导入合并由 Configuration.cpp 完成——导入设置时缺失条目保持不变这一行为正是配置合并策略的体现。Help 菜单计算器、更新与反馈菜单项说明Calculator打开计算器支持表达式求值、十六进制转十进制等转换功能与 表达式系统 共用一套求值引擎Check for updates连接服务器查询是否有新版本可用Donate向开发者团队捐赠Blog访问官方博客Report Bug反馈软件缺陷Manual打开手册——即本文所属的文档章节docs/index.rstFAQ查看常见问题解答About显示软件信息Generate crash dump主动触发一个异常以生成崩溃转储当软件疑似死锁时可用于抓取现场将该转储提交给开发团队有助于定位问题Generate crash dump 的实现与 src/exe/crashdump.cpp配合 crashdump.h相关——该模块也负责在调试器自身发生致命异常时自动生成转储。菜单背后的命令体系小结x64dbg 的设计哲学是一切操作皆命令GUI 菜单只是命令的图形化封装所有动作都能在窗口底部的命令框Debug 菜单的Command项中直接键入执行也可以在脚本中用scriptcmd、条件断点回调等处复用。这一体系带来的实际收益可脚本化菜单操作如 Run until selection 的单次断点 run 组合都可以用 脚本命令 复现可自定义Favourites 菜单 AddFavourite*命令 %-????-%格式化占位符可以把高频操作固化成一键工具可查证每个菜单项的精确语义都以对应命令文档为准例如 docs/commands/debug-control 与 docs/commands/tracing 目录下逐条记录的参数与结果变量。掌握了 File/Debug 的会话与执行控制、Favourites 的自定义工具台、Options 的初始化脚本与外观定制之后你就能把 x64dbg 调整成完全贴合自己逆向分析习惯的工作环境。【免费下载链接】x64dbgAn open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis.项目地址: https://gitcode.com/gh_mirrors/x6/x64dbg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表