一款面向逆向工程师、程序员以及那些在凌晨3点工作时珍惜自己视网膜的人的十六进制编辑器。
/ˈɪmhɛks/
支持
如果您喜欢我的工作,请考虑在GitHub赞助、Patreon或PayPal上支持我。非常感谢!
截图
更多截图
功能
功能丰富的十六进制视图
- 字节修补
- 补丁管理
- 无限撤销/重做
- "将字节复制为..."
- 字节
- 十六进制字符串
- C、C++、C#、Rust、Python、Java和JavaScript数组
- ASCII艺术十六进制视图
- HTML自包含div
- 简单的字符串和十六进制搜索
- 从开始、结束和当前光标位置跳转
- 彩色高亮
- 可配置的前景高亮规则
- 使用模式、查找结果和书签的背景高亮
- 将数据显示为多种不同类型的列表
- 十六进制整数(8、16、32、64位)
- 有符号和无符号十进制整数(8、16、32、64位)
- 浮点数(16、32、64位)
- RGBA8颜色
- HexII
- 二进制
- 将数据解码为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和Motorola SREC数据
- 进程内存
- 检查正在运行的进程的整个地址空间
数据搜索
- 支持搜索整个文件或仅选定部分
- 字符串提取
- 可指定最小长度和字符集(小写、大写、数字、符号)
- 可指定编码(ASCII、UTF-8、UTF-16大端和小端)
- 序列搜索
- 搜索字节或字符序列
- 可忽略字符大小写
- 正则表达式搜索
- 使用正则表达式搜索字符串
- 二进制模式
- 搜索带有可选通配符的字节序列
- 数值搜索
- 搜索有符号/无符号整数和浮点数
- 搜索值范围
- 可指定大小和字节序
- 可忽略未对齐的值
数据哈希支持
- 提供多种不同算法
- CRC8、CRC16和CRC32,支持自定义初始值和多项式
- 提供多种默认多项式
- MD5
- SHA-1、SHA-224、SHA-256、SHA-384、SHA-512
- Adler32
- AP
- BKDR
- Bernstein、Bernstein1
- DEK、DJB、ELF、FNV1、FNV1a、JS、PJW、RS、SDBM
- OneAtTime、Rotating、ShiftAndXor、SuperFast
- Murmur2_32、MurmurHash3_x86_32、MurmurHash3_x86_128、MurmurHash3_x64_128
- SipHash64、SipHash128
- XXHash32、XXHash64
- Tiger、Tiger2
- 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位)
- SPARC
- IBM SystemZ
- xCORE
- M68K
- TMS320C64X
- M680X
- Ethereum
- RISC-V
- WebAssembly
- MOS65XX
- Berkeley Packet Filter
书签
- 支持带有自定义名称和颜色的书签
- 在十六进制编辑器中高亮显示书签区域
- 跳转到书签
- 在新标签页中打开书签内容
- 为书签添加注释
内置内容更新器
- 直接从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驱动程序已知会导致图形artifacts。
- 操作系统:
- Windows:Windows 7或更高版本(推荐Windows 10/11)
- macOS:macOS 12.1(Monterey)或更高版本,
- 支持较低版本,但您需要自己编译ImHex
- Linux:"现代"Linux。以下发行版有官方发布版本可用。其他发行版可通过AppImage和Flatpak发布版本支持。
- Ubuntu和Debian
- Fedora
- RHEL/AlmaLinux
- Arch Linux
- 基本上从源代码编译ImHex时,任何其他发行版也可以工作。
- CPU:x86_64(64位)
- GPU:OpenGL 3.0或更高版本
- 支持集成Intel HD iGPU,但某些驱动程序已知会导致各种图形artifacts,特别是在Windows上。使用时请自行承担风险。
- 如果您没有可用的GPU,Windows和macOS上有软件渲染版本可用
- 内存:256MB,更复杂的分析可能需要更多内存
- 存储:150MB
安装
有关如何安装ImHex的信息可以在安装指南中找到
编译
要在任何平台上编译ImHex,需要GCC(或Clang)支持C++23或更高版本。 在macOS上,还需要Clang来编译一些ObjC代码。 所有发布版本都使用最新可用的GCC构建。
[!注意] 许多依赖项都使用子模块捆绑到仓库中,因此请确保使用
--recurse-submodules
选项克隆它。 所有未捆绑的依赖项都可以使用/dist
文件夹中的依赖项安装脚本安装。
更多信息,请查看编译指南。
贡献
请参阅贡献
插件开发
要为ImHex开发插件,请使用以下模板项目开始。然后您就可以访问整个libimhex以及ImHex API和内容注册表,以与ImHex交互或添加新内容。
致谢
贡献者
- iTrooz将ImHex搬上网络,并在项目的各个部分做出了数百次贡献
- jumanji144对模式语言和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开发的xdgpp,用于处理Linux上的文件夹路径
- 感谢aquynh开发的capstone,它是反汇编窗口的基础
- 感谢rxi开发的microtar,用于提取下载的商店资产
- 感谢VirusTotal开发的Yara,由Yara插件使用
- 感谢Martinsos开发的edlib,用于比较视图中的序列搜索
- 感谢ron4fun开发的HashLibPlus,它实现了每一种哈希算法
- 感谢mackron开发的miniaudio,用于播放音频文件
- 感谢所有其他在ImHex中使用其库的团体和组织
许可证
ImHex的大部分内容遵循GPLv2-only许可证。 值得注意的例外是以下部分,它们遵循LGPLv2.1许可证:
- /lib/libimhex:允许插件与ImHex交互的库。
- /plugins/ui:包含其他插件可以使用的一些常见UI元素的UI插件库。
这样做的原因是允许为ImHex开发专有插件。