xsslize/hexed

GitHub: xsslize/hexed

一个基于 Dear ImGui 和 DirectX 11 的 C++ 逆向工程工具包,提供 PE 文件解析、x86/x86-64 反汇编、控制流图重构与十六进制编辑功能。

Stars: 0 | Forks: 0

# hexed ![C++17](https://img.shields.io/badge/C%2B%2B-17-00599C?logo=cplusplus) ![平台](https://img.shields.io/badge/platform-Windows-0078D6) ![后端](https://img.shields.io/badge/render-DirectX%2011-107C10) ![许可证](https://img.shields.io/badge/license-MIT-green) `hexed` 是一个从零开始构建的逆向工程工具包,基于 [Dear ImGui](https://github.com/ocornut/imgui) 和 DirectX 11 后端开发。它可以解析 PE 文件,利用 [Capstone](https://www.capstone-engine.org/) 反汇编 x86 / x86-64 指令,重构控制流图,并在一个简洁的 UI 背后提供交互式导航功能——包括跟踪引用、列出交叉引用、以及任意跳转。 ## 截图 | 反汇编 | 控制流图 | | --- | --- | | ![反汇编](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/024985e316002108.png) | ![控制流图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/eb1580003e002114.png) | ## 功能 ### 二进制分析 - **导入** — 每个导入的模块(DLL)及其引入的函数,支持按名称或序号显示,并以可筛选的树状结构呈现。该解析器进行了全面的边界检查,对处理畸形或不受信任的输入非常安全。 - **导出** — 包含序号、RVA 和名称的导出函数;转发导出将被解析(例如 `AcquireSRWLockExclusive -> NTDLL.RtlAcquireSRWLockExclusive`)。双击即可在反汇编视图中查看导出。 - **字符串** — 扫描多种编码(严格的 7 位 ASCII、C 语言风格、UTF-16、UTF-32)的可打印字符串,支持实时搜索、按编码切换以及自定义最小长度。双击跳转到十六进制视图,或按 **X** 键查找该字符串在代码中的引用位置。 - **结构体** — 将一系列带类型的字段(`int8`…`int64`、`float`、`double`、`char[]`、`bytes[]`)覆盖到基础偏移处的字节上,并读取每个解析出的值——这是一个轻量级的结构模板/数据检查器。 ### 反汇编与控制流 - **反汇编** — 基于 Capstone 详细模式驱动的 x86 / x86-64 代码列表,因此分支和 RIP 相对引用会被解析为绝对地址。支持对助记符/寄存器/立即数进行语法高亮,左侧边栏显示跳转箭头,并内嵌 `; "..."` 字符串注释。导航: - **单击**操作数中的任何调用/跳转目标即可进行跟踪 - **G** — 跳转到任意地址 · **X** — 列出交叉引用 · **Esc** — 返回跳转历史 - **查找** — 在列表上进行增量文本搜索 - **图(当前位置)** — 将所选函数作为控制流图打开 - **控制流图** — 基本块按广度优先层级排列,具有根据类型(无条件跳转/条件成立/顺序执行)着色的直角流向边缘。拖动进行平移,使用滚轮缩放。 ### 十六进制编辑 - **十六进制 / ASCII 视图** — 等宽的地址/十六进制/ASCII 列;每一帧仅渲染可见行(`ImGuiListClipper`),因此即使是数 GB 的文件也能平滑滚动。 - **模式搜索** — 支持带通配符(例如 `48 89 ?? 5C`)的字节模式或文本搜索,并在原处高亮显示,支持跳转到匹配项。 - **跳转到偏移量**,每行字节数可在 4–64 之间调整。 ### 界面 - **选项卡式工作区**,顶部包含单行 PE 摘要标题(架构、格式、镜像基址、入口点、节/导入/导出数量)。 - **拖放** 任意文件到窗口即可打开,或通过 `Ctrl+O` 打开。 - **设置** — 重新绑定快捷键,选择 UI/等宽字体及字号(字体图集会实时重建),并编辑完整的主题(颜色、圆角、间距)。 - **命名配置** — 在磁盘上保存/加载/删除快捷键 + 字体 + 主题;启动时会恢复上次使用的配置。 ## 构建 环境要求:Windows、CMake ≥ 3.16 以及 MSVC 工具链(Visual Studio 2019/2022 或 Build Tools)。 ``` git clone --recursive https://github.com/xsslize/hexed.git cd hexed # 如果你忘记了 --recursive: git submodule update --init --recursive cmake -B build cmake --build build --config Release ``` ## 架构 平台/渲染层刻意设计得很薄,与编辑器逻辑完全隔离——`main.cpp` 对十六进制编辑一无所知,因此替换后端(例如为了跨平台切换到 OpenGL/GLFW)只需修改该文件。 ``` src/ ├── main.cpp # Win32 window + DX11 device + frame loop only ├── app/app.* # Menu bar, file dialog, summary header, tab layout ├── core/ │ ├── file-buffer.* # File I/O and byte storage │ └── settings.* # Global config + named on-disk configurations ├── analysis/ │ ├── pe-parser.* # Bounds-safe PE header / import / export / section parser │ ├── string-scanner.* # Multi-encoding printable-string scanner │ ├── disassembler.* # Capstone x86 / x86-64 wrapper (resolved references) │ └── control-flow-graph.* # Basic-block / CFG builder └── ui/ ├── hex-view.* # Hex widget: clipped rendering + pattern search ├── imports-panel.* # Imports tab ├── exports-panel.* # Exports tab ├── strings-panel.* # Strings tab: scan, search, jump-to-offset ├── disassembly-panel.* # Disassembly tab: listing + navigation + annotations ├── graph-panel.* # Graph tab: CFG layout + pan/zoom canvas ├── struct-panel.* # Struct tab: typed-field overlay ├── settings-panel.* # Settings tab: configs, keybinds, fonts, theme editor └── theme.* # Style + font loading ``` ## 技术与代码风格 C++17 · Dear ImGui (v1.91.5) · Capstone (5.0.9) · DirectX 11 · Win32 · CMake · MSVC 请参阅 [`.clang-format`](.clang-format)。 ## 许可证 MIT — 详见 [LICENSE](LICENSE)。
标签:Bash脚本, C++17, Dear ImGui, HTTP头分析, PE文件解析, SNI设置, Wayback Machine, 二进制分析, 云安全运维, 云资产清单, 反汇编, 逆向工程