资讯动态

x64dbg 入门指南:安装、使用与源码构建 Windows 开源二进制调试器

发布时间:2026/9/18 1:35:54 来源:尧图企业网站定制
x64dbg 入门指南安装、使用与源码构建 Windows 开源二进制调试器【免费下载链接】x64dbgAn open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis.项目地址: https://gitcode.com/gh_mirrors/x6/x64dbgx64dbg 是一个面向 Windows 的开源用户态二进制调试器专为恶意软件分析和无源码可执行文件的逆向工程而设计。本文基于项目中文 README 的核心内容展开并结合仓库源码补充架构判定、启动器行为与构建系统的细节读完你应能完成 x64dbg 的部署与日常调试启动理解x32dbg/x64dbg/x96dbg三个入口的分工并掌握从源码包括在 Linux 上交叉编译构建整个项目的方法。一、项目定位与核心能力x64dbg 的定位可以概括为一句话开源的 Windows 二进制调试器面向恶意软件分析与逆向工程。除了调试核心之外它还提供了一套功能完备的插件系统允许用户以插件形式扩展自己的功能。仓库自带的功能清单 docs/introduction/Feature-set.md 可以划分为三层这也是理解 x64dbg 能力边界的最佳索引基础能力对 DLL 和 EXE 的全功能调试由 TitanEngine 社区版提供底层支持32 位与 64 位 Windows 支持Windows XP 至 Windows 10内建汇编器XEDParse / asmjit快速反汇编器ZydisC 风格表达式解析器日志、笔记、内存映射视图模块与符号视图、源码视图、线程视图内容敏感的寄存器视图、调用栈视图、SEH 视图句柄、特权与 TCP 连接枚举多数据类型内存 dump、动态栈视图可执行文件 patch动态识别模块与字符串基于 JSONJansson的用户数据库注释、标签、书签等基本的调试符号PDB支持可扩展且可调试的脚本语言用于自动化插件支持API 持续增长基础反反调试能力高级能力集成 Scylla 的导入重建Import Reconstruction静态/自动分析Analysis高灵活度的条件断点与条件跟踪Tracing以及跟踪过程中收集数据GUI 能力直觉化且带熟悉感的界面IDA 风格的侧边栏跳转箭头IDA 风格的指令 token 高亮寄存器、指令等完全可定制的配色方案与快捷键控制流图Control Flow Graph集成助记符与寄存器帮助代码折叠Code Folding便于集成自定义工具的“收藏夹”Favourites菜单这些功能在源码中的落点可以粗略对应到 src/dbg 目录例如 analysis 子目录包含线性分析、递归分析、控制流分析、xref 分析等 Pass 实现commands 子目录按类别实现了全部调试命令分析、断点控制、条件断点、调试控制、内存操作、搜索、线程控制、跟踪、脚本等_scriptapi_*.cpp系列文件则构成脚本 API 的具体实现寄存器、内存、模块、模式、栈、符号等。二、安装与使用中文 README 给出的官方使用流程非常简洁共三步下载快照snapshot并解压到你的用户具有写权限的位置可选使用x96dbg.exe注册 shell 扩展并在桌面添加快捷方式按目标架构选择入口调试 32 位可执行文件运行x32\x32dbg.exe调试 64 位可执行文件运行x64\x64dbg.exe不确定时运行x96dbg.exe在弹出的对话框中选择架构。下面结合启动器源码 src/launcher/x64dbg_launcher.cpp 把每一步的行为讲透。2.1 x96dbg 启动器自动架构选择x96dbg.exe是一个 x86 启动器构建目标定义于 cmake.toml 的[target.launcher]段condition x86输出名x96dbg。它做了以下几件事1架构判定与分发启动器解析命令行后会用 src/dbg/GetPeArch.h 判定目标 PE 的架构再决定拉起 32 位还是 64 位调试器。核心分发逻辑见 WinMain 末尾的 switch目标架构行为Native86/Dotnet86/DotnetAnyCpuPrefer32启动 32 位调试器Native64/Dotnet64启动 64 位调试器DotnetAnyCpu若当前进程运行在 WoW64 下则用 64 位否则用 32 位Invalid弹窗提示文件不是有效 PE 或文件不存在也就是说.NETAnyCPU 程序也会被正确路由——这正是“不确定时就用x96dbg.exe”这句话的工程依据。2命令行转发把目标文件拖给x96dbg.exe或写成x96dbg.exe target.exe [参数...]启动器会把参数转发给对应架构的调试器转发给被调试进程自身的参数使用--分隔符拼接见 命令行构造段。此外它还对.lnk快捷方式做了解引用读取快捷方式的目标路径与其自带参数ResolveShortcut并实现了微软推荐的ArgvQuote命令行加引号算法ArgvQuote避免含空格路径的解析错误。3按 PID / 线程 / 事件附加启动器支持三种附加形式见 命令行分支x96dbg.exe -p PID—— 附加到进程自动按进程是 32 位还是 64 位选择调试器内部用IsWow64Process判断x96dbg.exe -p PID -tid TID—— 附加并指定初始线程x96dbg.exe -p PID -e EVENT—— 附加到指定事件内部转换为-a PID -e EVENT传给 64 位调试器。PID 与线程 ID 支持十进制或0x前缀的十六进制。4用户目录指定除转发给被调试程序的参数外调试器自身也识别一个启动选项在 src/bridge/startupargs.h 中-userdir 路径或-userdir路径用于指定用户配置/数据库目录遇到--分隔符即停止解析从而不影响后续的被调试程序参数。5安装模式::install与系统清理x96dbg.exe ::install触发安装/配置对话框bInstaller 分支。首次运行若发现x32\x32dbg.exe/x64\x64dbg.exe路径与 INI 记录不一致会自动重新以runas提权执行安装流程Windows Vista 及以上。安装完成后还会递归删除目录下所有*:Zone.Identifier流deleteZoneData消除 Windows 从互联网下载文件时附加的“已阻止”标记避免 SmartScreen 反复警告。2.2 Shell 扩展与桌面快捷方式README 第 2 步提到的“注册 shell 扩展、添加桌面快捷方式”对应启动器配置对话框DlgConfigurations三项可勾选Shell 扩展写入注册表HKEY_CLASSES_ROOT\exefile\shell\Debug with x64dbg\与dllfile\shell\...键名定义见 SHELLEXT 常量使右键 EXE/DLL 时出现“用 x64dbg 调试”菜单项命令实际指向x96dbg.exe %1因此右键菜单同样享受自动架构选择桌面快捷方式为x32dbg与x64dbg分别创建.lnk64 位快捷方式仅在 WoW64 环境创建数据库文件图标为.dd32/.dd64扩展名x64dbg 用户数据库文件注册文件类型与图标AddDBFileTypeIcon。注意这些操作需要写入HKEY_CLASSES_ROOT失败时程序会弹出提示要求以管理员身份运行。若只需偶尔使用跳过本步、直接运行对应的x32dbg.exe/x64dbg.exe完全可行——这是 green 部署设计不依赖安装器。2.3 部署注意事项解压位置必须对当前用户可写x64dbg 会在其目录旁生成 INI 配置文件与数据库文件启动器的 INI 就存放在x96dbg.ini见 WinMain 路径处理。不建议放在C:\Program Files等需要管理员权限的目录从 Internet 下载解压后若出现 SmartScreen 警告可用x96dbg.exe ::install让其自动清理 Zone.Identifier 流64 位调试器只能运行于 64 位 Windows启动器在非 WoW64 环境下会禁用 64 位入口按钮见 WM_INITDIALOG 分支。三、构建系统从源码编译 x64dbgREADME 提到“你也可以通过几个简单步骤自己编译 x64dbg”。当前仓库使用 cmake.toml 作为单一事实来源由 cmkr 生成 CMakeLists.txt后者标注了“自动生成、勿手改”要求 CMake ≥ 3.15。3.1 构建目标一览从 cmake.toml 可以完整看到产物拓扑这也是理解项目结构的最快方式目标类型产物名x86 / x64说明bridge共享库x32bridge/x64bridge跨层通信的公共导出接口GUI 与 Core 都依赖它btparser静态库—条件表达式断点条件解析器dbg共享库x32dbg/x64dbg调试器核心TitanEngine、Zydis、命令系统等gui共享库x32gui/x64guiQt5 图形界面开启 AUTOMOC/AUTORCC/AUTOUICexe可执行x32dbg/x64dbg用户运行的主程序静态链接 C 运行时依赖全部目标loaddll可执行—辅助工具以 LdrLoadDll 方式加载 DLLheadless可执行—无界面调试入口见 src/headlesslauncher可执行仅 x86x96dbg双架构启动器即上文分析的x96dbg.exe两个顶层选项值得注意options 段X64DBG_BUILD_IN_TREE默认 ON允许树内构建并把输出放到bin/生成的 CMakeLists.txt 同时保留了“禁止 in-tree 构建”的兜底检查二者按工具链生效情况配合X64DBG_RELEASE默认 OFF开启后为 GUI 目标注入X64DBG_RELEASE编译宏用于发布构建的行为区分。依赖方面构建要求Qt5 的 Widgets 与 WinExtras 组件find-package 段核心库按架构链接预置的静态库dbghelp、ntdll、TitanEngine、XEDParse、Jansson、lz4、LLVMDemangle、DeviceNameResolver路径形如 src/dbg/TitanEngine/TitanEngine_x64.lib其中TitanEngine.dll使用/DELAYLOAD延迟加载msvc 链接选项。exe目标还嵌入了 manifest.xml以RT_MANIFEST资源方式打入并用/MANIFEST:NO关闭链接器默认清单见 exe 目标。3.2 Windows 上构建Windows 下用 Visual Studio 工具链时通常执行cmake -B build cmake --build build仓库根目录附带 CMakeSettings.json在 Visual Studio 的 CMake 工作流中可直接选择 x86/x64 配置。cmake/目录下还提供了多套工具链脚本VSToolchain.cmake、llvm-mingw.cmake、msvc-wine.cmake、qt-wine.cmake、qt-cross.cmake等分别对应原生 MSVC、LLVM-MinGW 与基于 Wine 的 Qt 交叉等场景。3.3 Linux 上交叉构建Wine MSVC如果你只有 Linux 环境仓库提供了 docs/COMPILE-linux.md用 Wine 运行 MSVC 工具链交叉编译流程为# 1. 前置依赖 sudo apt update sudo apt install cmake ninja-build wine # 2. 安装 msvc-wine从 mstorsjo/msvc-wine 获取 cd msvc-wine ./vsdownload.py --accept-license --dest ~/opt/msvc Microsoft.VisualStudio.Workload.VCTools Microsoft.VisualStudio.Component.VC.ATL ./install.sh ~/opt/msvc # 3. 配置并构建 x86 版本 cd x64dbg export MSVC_BIN_DIR~/opt/msvc/bin/x86 export QT_BIN_DIR~/src/x64dbg/build32/_deps/qt5-src/bin cmake -B build32 -DCMAKE_TOOLCHAIN_FILEcmake/msvc-wine.cmake -G Ninja cmake --build build32 -j4 # 4. 配置并构建 x64 版本改用 bin/x64 与 build64即分别用MSVC_BIN_DIR~/opt/msvc/bin/x86与~/opt/msvc/bin/x64各构建一次得到 32 位与 64 位两套产物。文档同时给出一个已知问题的修复方案出现LINK : fatal error LNK1158: cannot run rc.exe时进入 winecfg → Drives删除指向 x64dbg 源码目录的备用盘符映射。四、插件系统README 中“全面的插件系统”的实现位置README 强调“有许多可用的功能和全面的插件系统来添加你自己的功能”。从源码结构看插件基础设施集中在src/dbg/_plugins.cpp 与 plugin_loader.cpp插件加载与生命周期管理src/dbg/_plugin_types.h插件 API 数据结构定义src/dbg/_exports.cpp调试器核心导出给插件的符号表src/dbg/_scriptapi.h 及_scriptapi_*.cpp系列与插件 API 平行的脚本 APIsrc/dbg/script_commands.txt脚本可用命令清单。配套的开发者文档位于 docs/developers/plugins按 API / Callbacks / Structures 三个维度组织了全部插件文档页面各约 24~25 篇是开发 x64dbg 插件的规范参考。命令参考同样完整docs/commands 按分析、断点控制、条件断点、调试控制、GUI、内存操作、OS 控制、插件、脚本、搜索、线程控制、跟踪、类型、用户数据库、变量、Watch 等类别收录了全部调试命令的说明页。五、文档与贡献仓库内建了一套完整的文档工程docs基于 Sphinxdocs/README.md 说明了如何运行makechm.bat构建随软件分发的 .CHM 帮助文件首次构建会自动拉取 Python 2.7 便携版与 HTML Help Compiler需要 7-Zip 在 PATH 中用户文档入口包括 Introduction表达式、命令语言、格式化、变量等核心概念、GUI 指南各视图、菜单、设置、对话框面向开发者的内容在 docs/developers含 bridge/debug/gui 各层函数参考与插件 API 文档。贡献方式与 README 一致项目以社区协作方式维护接受拉取请求遇到问题可以提交 issue 或与社区联系新手可以从“容易解决的问题”列表入手对应英文 README 指向的 good first issues 清单。构建系统本身也可作为贡献切入点——cmake.toml 即全部目标与依赖的声明式定义。六、致谢与依赖组件README 的“制作人员”一节列出了 x64dbg 依赖的开源组件这些组件都能在仓库中找到实体与构建配置一一对应调试器核心TitanEngine 社区版 —— 预置库位于 src/dbg/TitanEngine反汇编引擎Zydis —— 封装层为 src/zydis_wrapper汇编器XEDParsesrc/dbg/XEDParse与 asmjit构建依赖见 cmake.toml 的 deps 机制导入重建Scylla以插件形式集成见 docs/commands/plugins 中的StartScylla命令JSON 解析Jansson —— 预置库位于 src/dbg/jansson数据库压缩lz4 —— 预置库位于 src/dbg/lz4图标Bug 图标由 VisualPharm 设计见 src/bug.png界面图标来自 Fugue。开发团队名单mrexodia、Sigma、tr4ceflow、Dreg、Nukem、Herz3h、torusrxxx 等与“特别感谢”名单完整保留在 README_zh.md 与 README.md 中。正如文档结尾所说“如果没有许多人和其他开源项目的帮助就不可能使 x64dbg 成为今天的样子”——x64dbg 本身就是这些开源组件的一次系统性集成。小结部署解压快照到可写目录即可使用x96dbg.exe负责自动架构选择、shell 扩展注册、快捷方式与数据库图标使用32 位目标用x32\x32dbg.exe64 位目标用x64\x64dbg.exe不确定时用x96dbg.exe支持拖拽、-p PID [-tid TID]、-p PID -e EVENT附加以及-userdir指定配置目录构建以 cmake.toml 为事实来源Windows 下 MSVC 构建Linux 下按 docs/COMPILE-linux.md 用 Wine msvc-wine 交叉构建 x86/x64 两套产物扩展插件与脚本 API 由 src/dbg/_plugins.cpp、src/dbg/_scriptapi.h 及 docs/developers/plugins 完整支撑命令参考见 docs/commands。【免费下载链接】x64dbgAn open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis.项目地址: https://gitcode.com/gh_mirrors/x6/x64dbg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价