ImHex-专为逆向工程师、程序员和凌晨 3 点工作的人们提供的十六进制编辑器
github:https://github.com/WerWolv/ImHex
截图
特征
特色十六进制视图
- 字节修补
- 补丁管理
- 无限次撤消/重做
- “将字节复制为...”
- 字节
- 十六进制字符串
- C、C++、C#、Rust、Python、Java 和 JavaScript 数组
- ASCII-Art 十六进制视图
- HTML 自包含 div
- 简单的字符串和十六进制搜索
- 从开始、结束和当前光标位置跳转
- 彩色突出显示
- 可配置前景突出显示规则
- 使用图案、查找结果和书签突出显示背景
- 将数据显示为多种不同类型的列表
- 十六进制整数(8、16、32、64 位)
- 有符号和无符号十进制整数(8、16、32、64 位)
- 浮点数(16、32、64 位)
- RGBA8 颜色
- 己烯二酰亚胺
- 二进制
- 将数据解码为 ASCII 和自定义编码
- 内置对 UTF-8、UTF-16、ShiftJIS、大多数 Windows 编码等的支持
- 分页数据视图
自定义类似 C++ 的模式语言,用于解析突出显示文件的内容
- 根据 MIME 类型和魔法值自动加载
- 数组、指针、结构、联合、枚举、位域、命名空间、小端和大端支持、条件等等!
- 有用的错误消息、语法高亮和错误标记
- 支持可视化多种不同类型的数据
- 图片
- 声音的
- 3D 模型
- 坐标
- 时间戳
主题支持
- 深夜使用不会灼伤你的视网膜
- 默认为暗色模式,但也提供亮色模式
- 通过可共享的主题文件可自定义所有 UI 元素的颜色和样式
- 支持自定义字体
导入和导出数据
- Base64 文件
- IPS 和 IPS32 补丁
- Markdown 报告
数据检查器
- 将数据解释为多种不同类型的数据,包括字节顺序、十进制、十六进制和八进制支持以及位反转
- 无符号和有符号整数(8、16、24、32、48、64 位)
- 浮点数(16、32、64 位)
- 有符号和无符号 LEB128
- ASCII、宽字符和 UTF-8 字符和字符串
- time32_t、time64_t、DOS 日期和时间
- GUID
- RGBA8 和 RGB65 颜色
- 通过检查器复制和修改字节
- 通过模式语言添加新的数据类型
- 支持隐藏未使用的行
基于节点的数据预处理器
- 在十六进制编辑器中显示数据之前对其进行修改、解密和解码
- 无需接触底层源即可修改数据
- 支持添加自定义节点
从许多不同的数据源加载数据
- 本地文件
- 支持大文件,加载快速高效
- 原始磁盘
- 从原始磁盘和分区加载数据
- GDB 服务器
- 通过 GDB 访问正在运行的进程或嵌入式设备的 RAM
- Intel Hex 和摩托罗拉 SREC 数据
- 进程内存
- 检查正在运行的进程的整个地址空间
数据搜索
- 支持搜索整个文件或仅搜索选定内容
- 字符串提取
- 指定最小长度和字符集的选项(小写、大写、数字、符号)
- 指定编码的选项(ASCII、UTF-8、UTF-16 大端和小端)
- 序列搜索
- 搜索字节或字符序列
- 忽略字符大小写的选项
- 正则表达式搜索
- 使用正则表达式搜索字符串
- 二进制模式
- 使用可选通配符搜索字节序列
- 数值搜索
- 搜索有符号/无符号整数和浮点数
- 搜索值的范围
- 指定大小和字节顺序的选项
- 忽略未对齐值的选项
数据哈希支持
- 有多种不同的算法可供选择
- 具有自定义初始值和多项式的 CRC8、CRC16 和 CRC32
- 许多默认多项式可用
- MD5
- SHA-1、SHA-224、SHA-256、SHA-384、SHA-512
- 阿德勒32
- 美联社
- 保定市
- 伯恩斯坦,伯恩斯坦1
- DEK、DJB、ELF、FNV1、FNV1a、JS、PJW、RS、SDBM
- 一次一个、旋转、ShiftAndXor、超快速
- Murmur2_32、MurmurHash3_x86_32、MurmurHash3_x86_128、MurmurHash3_x64_128
- SipHash64、SipHash128
- XXHash32,XXHash64
- 老虎,老虎2
- Blake2B、Blake2S
- 具有自定义初始值和多项式的 CRC8、CRC16 和 CRC32
- 对加载数据的特定区域进行哈希处理
- 任意字符串的哈希计算
差异支持
- 比较不同数据源的数据
- 差异突出显示
- 差异表格视图
集成反汇编器
- 支持 Capstone 支持的所有架构
- ARM32(ARM、Thumb、Cortex-M、AArch32)
- ARM64
- MIPS(MIPS32、MIPS64、MIPS32R6、Micro)
- x86(16 位、32 位、64 位)
- PowerPC(32 位、64 位)
- 超视距雷达
- IBM 系统 Z
- 核心
- M68K
- 泰克TMS320C64X
- M680X
- 以太坊
- RISC-V
- WebAssembly
- MOS65XX
- 伯克利包过滤器
书签
- 支持自定义名称和颜色的书签
- 在十六进制编辑器中突出显示书签区域
- 跳至书签
- 在新标签页中打开书签内容
- 为书签添加评论
功能强大的数据分析器和可视化工具
- 基于 File magic 的文件解析器和 MIME 类型数据库
- 字节类型分布图
- 熵图
- 最高和平均熵
- 加密/压缩文件检测
- 二线图和分层分布图
YARA 规则支持
- 使用官方 yara 规则扫描文件以查找漏洞
- 在十六进制编辑器中突出显示匹配项
- 跳至比赛
- 一次应用多个规则
有用的工具
- 基于 LLVM 的 Itanium、MSVC、Rust 和 D-Lang 解析器
- ASCII 表
- 正则表达式替换器
- 数学表达式求值器(计算器)
- 图形计算器
- 支持多种不同格式的十六进制颜色选择器
- 基转换器
- 字节交换器
- UNIX 权限计算器
- 维基百科术语定义查找器
- 文件实用程序
- 文件分割器
- 文件合并器
- 文件粉碎机
- IEEE754 浮点可视化工具
- 不变乘法计算器
- TCP 客户端/服务器
- 欧几里得算法计算器
内置内容更新程序
- 直接从 ImHex 下载数据库中找到的所有文件
- 用于解码各种文件格式的模式文件
- 模式语言库
- 用于文件类型检测的魔法文件
- 自定义数据处理器节点
- 自定义编码
- 自定义主题
- Yara 规则
现代界面
- 支持多个工作区
- 支持自定义布局
- 可拆卸窗户
易于上手
- 支持多种不同的语言
- 适合初学者的简化模式
- 详尽的文档
- 数据库中有许多示例文件
- 成就引导您了解 ImHex 的功能
- 交互式教程
模式语言
模式语言是专为 ImHex 开发的完全自定义的编程语言。它允许您以类似 C 的语法定义结构和数据类型,然后使用它们来解析和突出显示文件的内容。
数据库
有关格式模式、库、魔法和常量文件,请查看ImHex-Patterns存储库。
您也可以随意在那里 PR 您自己的文件!
要求
要使用 ImHex,需要满足以下最低系统要求。
重要的
ImHex 通常需要支持 OpenGL 3.0 的 GPU。目前有-NoGPU
软件渲染版本(带后缀),不需要 GPU,但这些版本可能比 GPU 加速版本慢很多。
如果可能的话,让 ImHex 使用系统上的专用 GPU,而不是集成 GPU。ImHex 通常也可以在集成 GPU 上正常运行,但 Windows 上的某些 Intel HD GPU 驱动程序已知会导致图形伪影。
操作系統
:
Windows:Windows 7 或更高版本(推荐使用 Windows 10/11)
macOS
:macOS 13 (Ventura) 或更高版本,
- 较低版本也应该可以工作,但您需要自己编译 ImHex。发布二进制文件将无法工作。
- macOS 版本未签名,需要您在“安全和隐私”设置中手动允许它们。
Linux
:“现代”Linux。以下发行版有官方版本可用。其他发行版通过 AppImage 和 Flatpak 版本支持。
- Ubuntu 和 Debian
- Fedora
- RHEL/AlmaLinux
- Arch Linux
- 基本上,当从源代码编译 ImHex 时,任何其他发行版都可以正常工作。
CPU:官方支持 x86_64 和 ARM64,但任何 Little Endian 64 位 CPU 都可以工作。
GPU
:OpenGL 3.0 或更高版本
- 支持集成 Intel HD iGPU,但某些驱动程序可能会导致各种图形失真,尤其是在 Windows 上。使用时请自担风险。
- 如果你没有可用的 GPU,可以使用适用于 Windows 和 macOS 的软件渲染版本
RAM:~150MiB,更复杂的分析需要更多
存储空间:150MiB
安装
有关如何安装 ImHex 的信息,请参阅安装指南
编译
要在任何平台上编译 ImHex,需要支持 C++23 或更高版本的 GCC(或 Clang)。Windows 和 Linux 版本使用最新的 GCC 构建。MacOS 版本使用最新的 LLVM Clang 构建。
值得注意的是,MSVC 和 AppleClang 编译器均不受支持,因为它们都严重过时并且缺少 GCC 和 LLVM Clang 所具有的功能。
笔记
许多依赖项使用子模块捆绑到存储库中,因此请确保使用该--recurse-submodules
选项进行克隆。所有未捆绑的依赖项都可以使用/dist
文件夹中的依赖项安装程序脚本进行安装。
欲了解更多信息,请参阅编译指南。
贡献
参见贡献
插件开发
要为 ImHex 开发插件,请使用以下模板项目开始。然后,您可以访问整个 libimhex 以及 ImHex API 和内容注册表,以便与 ImHex 交互或添加新内容。
致谢
贡献者
- iTrooz将 ImHex 引入网络,并为项目的每个部分做出了数百次贡献
- jumanji144为 Pattern Language 和 ImHex 基础设施做出了巨大贡献
- Mary为将 ImHex 移植到 MacOS 提供了巨大帮助,并在开发过程中提供了帮助
- Roblabla为 ImHex 添加 MSI 安装程序支持
- Mailaender将 ImHex 放到 Flathub 上
- 其他所有在 Discord 或 GitHub 上报告问题的人都和我进行了愉快的交谈 :)
依赖项
非常感谢 ocornut 提供的出色的
Dear ImGui
,它用于构建整个界面
- 感谢 epezent 提供ImPlot用于在各个地方绘制数据
- 感谢 Nelarius 提供ImNodes作为数据处理器的基础
- 感谢 BalazsJako 为模式语言语法高亮提供的ImGuiColorTextEdit
感谢 nlohmann 提供用于配置文件的json库
感谢 vitaut 的libfmt库,它使格式化和日志记录变得更好
感谢 btzy 提供的nativefiledialog-extended及其出色的支持,用于处理所有平台上的文件对话框
感谢 danyspin97 提供用于处理 Linux 文件夹路径的xdgpp
感谢 aquynh 提供的capstone,它是反汇编窗口的基础
感谢 rxi 提供microtar,用于提取下载的商店资产
感谢Yara 插件使用的VirusTotal for Yara
感谢 Martinsos 提供edlib用于在 diffing 视图中进行序列搜索
感谢 ron4fun 提供的HashLibPlus,它实现了世界上所有的哈希算法
感谢 mackron 提供miniaudio用于播放音频文件
感谢所有其他在 ImHex 中使用其库的团体和组织
执照
ImHex 的大部分内容都遵循 GPLv2 许可证。值得注意的例外是以下部分,它们遵循 LGPLv2.1 许可证:
- /lib/libimhex:允许插件与 ImHex 交互的库。
- /plugins/ui:UI 插件库,包含一些可供其他插件使用的常见 UI 元素
这样做的原因是为了允许为 ImHex 开发专有插件。
About this Post
This post is written by 杨CC, licensed under CC BY-NC 4.0.