ImHex README

The project's README from github.com/WerWolv/ImHex. As one markdown file: README.md.

A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
/ˈɪmhɛks/

'Build' workflow Status Discord Server Total Downloads Code Quality Translation Plugins

Download the latest version of ImHex! Download the latest nightly pre-release version of ImHex Use the Web version of ImHex right in your browser! Read the documentation of ImHex!

Supporting

If you like my work, please consider supporting me on GitHub Sponsors, Ko-Fi or PayPal. Thanks a lot!

GitHub donate button Ko-Fi donate button PayPal donate button

Notable Sponsors

JetBrains logo JetBrains, providing us with free All Products Pack licenses for development
SignPath logo SignPath, providing us with free Code Signing Certificates for our Windows builds
AWS logo Amazon, providing us with free AWS Cloud Credits for our CI

Would you like to appear here as well? Contact us at [email protected]!

Screenshots

Hex editor, patterns and data information Bookmarks, data information, find view and data processor

More Screenshots

Data Processor decrypting some data and displaying it as an image STL Parser written in the Pattern Language visualizing a 3D model Data Information view displaying various stats about the file

Features

Featureful hex view
  • Byte patching
  • Patch management
  • Infinite Undo/Redo
  • "Copy bytes as..."
    • Bytes
    • Hex string
    • C, C++, C#, Rust, Python, Java & JavaScript array
    • ASCII-Art hex view
    • HTML self-contained div
  • Simple string and hex search
  • Goto from start, end and current cursor position
  • Colorful highlighting
    • Configurable foreground highlighting rules
    • Background highlighting using patterns, find results and bookmarks
  • Displaying data as a list of many different types
    • Hexadecimal integers (8, 16, 32, 64 bit)
    • Signed and unsigned decimal integers (8, 16, 32, 64 bit)
    • Floats (16, 32, 64 bit)
    • RGBA8 Colors
    • HexII
    • Binary
  • Decoding data as ASCII and custom encodings
    • Built-in support for UTF-8, UTF-16, ShiftJIS, most Windows encodings and many more
  • Paged data view
Custom C++-like pattern language for parsing highlighting a file's content
  • Automatic loading based on MIME types and magic values
  • Arrays, pointers, structs, unions, enums, bitfields, namespaces, little and big endian support, conditionals and much more!
  • Useful error messages, syntax highlighting and error marking
  • Support for visualizing many different types of data
    • Images
    • Audio
    • 3D Models
    • Coordinates
    • Time stamps
Theming support
  • Doesn't burn out your retinas when used in late-night sessions
    • Dark mode by default, but a light mode is available as well
  • Customizable colors and styles for all UI elements through shareable theme files
  • Support for custom fonts
Importing and Exporting data
  • Base64 files
  • IPS and IPS32 patches
  • Markdown reports
  • Binary arrays for various programming languages
Data Inspector
  • Interpreting data as many different types with endianness, decimal, hexadecimal and octal support and bit inversion
    • Unsigned and signed integers (8, 16, 24, 32, 48, 64 bit)
    • Floats (16, 32, 64 bit)
    • Signed and Unsigned LEB128
    • ASCII, Wide and UTF-8 characters and strings
    • time32_t, time64_t, DOS date and time
    • GUIDs
    • RGBA8 and RGB65 Colors
  • Copying and modifying bytes through the inspector
  • Adding new data types through the pattern language
  • Support for hiding rows that aren't used
Node-based data pre-processor
  • Modify, decrypt and decode data before it's being displayed in the hex editor
  • Modify data without touching the underlying source
  • Support for adding custom nodes
Loading data from many different data sources
  • Local Files
    • Support for huge files with fast and efficient loading
  • Raw Disks
    • Loading data from raw disks and partitions
  • GDB Server
    • Access the RAM of a running process or embedded devices through GDB
  • Intel Hex and Motorola SREC data
  • Base64 encoded data
  • UDP Packets
    • Support for displaying raw data received over UDP
  • Process Memory
    • Inspect the entire address space of a running process
  • Remote Files over SSH with SFTP
    • Support for loading files from remote servers using SSH and SFTP
Data searching
  • Support for searching the entire file or only a selection
  • String extraction
    • Option to specify minimum length and character set (lower case, upper case, digits, symbols)
    • Option to specify encoding (ASCII, UTF-8, UTF-16 big and little endian)
  • Sequence search
    • Search for a sequence of bytes or characters
    • Option to ignore character case
  • Regex search
    • Search for strings using regular expressions
  • Binary Pattern
    • Search for sequences of bytes with optional wildcards
  • Numeric Value search
    • Search for signed/unsigned integers and floats
    • Search for ranges of values
    • Option to specify size and endianness
    • Option to ignore unaligned values
Data hashing support
  • Many different algorithms available
    • CRC8, CRC16 and CRC32 with custom initial values and polynomials
      • Many default polynomials available
    • 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
  • Hashing of specific regions of the loaded data
  • Hashing of arbitrary strings
Diffing support
  • Compare data of different data sources
  • Difference highlighting
  • Table view of differences
Integrated disassembler
  • Support for all architectures supported by Capstone
    • ARM32 (ARM, Thumb, Cortex-M, AArch32)
    • ARM64
    • MIPS (MIPS32, MIPS64, MIPS32R6, Micro)
    • x86 (16-bit, 32-bit, 64-bit)
    • PowerPC (32-bit, 64-bit)
    • SPARC
    • IBM SystemZ
    • xCORE
    • M68K
    • TMS320C64X
    • M680X
    • Ethereum
    • RISC-V
    • WebAssembly
    • MOS65XX
    • Berkeley Packet Filter
  • Support for writing custom disassemblers for your own architectures
Bookmarks
  • Support for bookmarks with custom names and colors
  • Highlighting of bookmarked region in the hex editor
  • Jump to bookmarks
  • Open content of bookmark in a new tab
  • Add comments to bookmarks
Featureful data analyzer and visualizer
  • File magic-based file parser and MIME type database
  • Byte type distribution graph
  • Entropy graph
  • Highest and average entropy
  • Encrypted / Compressed file detection
  • Digram and Layered distribution graphs
YARA Rule support
  • Scan a file for vulnerabilities with official yara rules
  • Highlight matches in the hex editor
  • Jump to matches
  • Apply multiple rules at once
Helpful tools
  • Itanium, MSVC, Rust and D-Lang demangler based on LLVM
  • ASCII table
  • Regex replacer
  • Mathematical expression evaluator (Calculator)
  • Graphing calculator
  • Hexadecimal Color picker with support for many different formats
  • Base converter
  • Byte swapper
  • UNIX Permissions calculator
  • Wikipedia term definition finder
  • File utilities
    • File splitter
    • File combiner
    • File shredder
  • IEEE754 Float visualizer
  • Division by invariant multiplication calculator
  • TCP Client/Server
  • Euclidean algorithm calculator
  • HTTP Requests
Built-in Content updater
  • Download all files found in the database directly from within ImHex
    • Pattern files for decoding various file formats
    • Libraries for the pattern language
    • Magic files for file type detection
    • Custom data processor nodes
    • Custom encodings
    • Custom themes
    • Yara rules
Modern Interface
  • Support for multiple workspaces
  • Support for custom layouts
  • Detachable windows
Easy to get started
  • Support for many different languages
  • Simplified mode for beginners
  • Extensive documentation
  • Many example files available on the Database
  • Achievements guiding you through the features of ImHex
  • Interactive tutorials

Pattern Language

The Pattern Language is the completely custom programming language developed for ImHex. It allows you to define structures and data types in a C-like syntax and then use them to parse and highlight a file's content.

Database

For format patterns, libraries, magic and constant files, check out the ImHex-Patterns repository.

Feel free to PR your own files there as well!

Requirements

To use ImHex, the following minimal system requirements need to be met.

[!IMPORTANT] ImHex requires a GPU with OpenGL 3.0 support in general. There are releases available (with the -NoGPU suffix) that are software rendered and don't require a GPU, however these can be a lot slower than the GPU accelerated versions.

If possible at all, make ImHex use the dedicated GPU on your system instead of the integrated one. ImHex will usually run fine with integrated GPUs as well but certain Intel HD GPU drivers on Windows are known to cause graphical artifacts.

Installing

Information on how to install ImHex can be found in the Install guide

Compiling

To compile ImHex on any platform, GCC (or Clang) is required with a version that supports C++23 or higher. Windows and Linux releases are being built using latest available GCC. MacOS releases are being built using latest available LLVM Clang.

Important to note is, the MSVC and AppleClang compilers are both NOT supported since they're both generally severely outdated and lack features GCC and LLVM Clang have.

[!NOTE] Many dependencies are bundled into the repository using submodules so make sure to clone it using the --recurse-submodules option. All dependencies that aren't bundled, can be installed using the dependency installer scripts found in the /dist folder.

For more information, check out the Compiling guide.

Contributing

See Contributing

Plugin development

To develop plugins for ImHex, use the following template project to get started. You then have access to the entirety of libimhex as well as the ImHex API and the Content Registry to interact with ImHex or to add new content. To build a plugin, you will need to use our SDK

Getting the SDK locally

You can build the SDK by compiling ImHex like this:

Getting the SDK in a Github Actions CI

You can use this action to automatically download the SDK to your Github Runner

Credits

Contributors

Dependencies

ImHex (WerWolv/ImHex)

Searching Database…

55.4K ·GitHub
这是什么?ImHex 是一款十六进制编辑器,专为逆向工程师、程序员以及需要分析二进制数据的人设计,并提供自定义的模式语言,用于解析文件结构并高亮显示。
它只是个简单的字节查看器,还是功能更多?它是一套功能完整的桌面分析工具,包括十六进制视图、数据检查器、反汇编器、哈希计算、文件比对、YARA 扫描,以及用于定义数据结构的类 C++ 模式语言。
我该怎么安装 ImHex?可以从安装指南下载适合你操作系统的预编译版本;也可以克隆仓库时带上子模块,然后用 GCC 或 Clang(C++23)自行编译。
安装时有哪些坑需要注意吗?macOS 版本未签名,需要在“安全性与隐私”设置中手动允许运行;另外 macOS 版本面向 macOS 15+,较旧的 macOS 用户需要自己编译。集成的 Intel HD 显卡可能会出现图像显示异常,在 Windows 上尤其常见。
它支持哪些平台?支持 Windows 7+、macOS 15+(更早版本需自行编译)、主流现代 Linux 发行版(Ubuntu、Debian、Fedora、RHEL/AlmaLinux、Arch,其他发行版可使用 AppImage/Flatpak/Snap),以及 FreeBSD。
这个模式语言到底能做什么?它可以用类似 C 的语法定义结构体、联合体、枚举、数组、指针、位域以及字节序规则,从而自动解析并高亮二进制文件的内容,同时支持小端和大端数据。
它自带反汇编器吗?有。内置的反汇编器基于 Capstone,支持 ARM32/64、MIPS、x86、PowerPC、SPARC、RISC-V、WebAssembly 等架构,还允许你编写自定义反汇编器。
我能为 ImHex 写插件吗?可以。官方提供了插件模板项目和 SDK,可以调用 libimhex 和 Content Registry,从而添加新的节点、编码方式或分析功能。
它支持用 YARA 规则扫描恶意软件或漏洞吗?支持。你可以用官方 YARA 规则扫描已加载的文件,同时应用多条规则,并直接跳转到十六进制视图中高亮显示的匹配位置。
Creator
WerWolv
Size
52.1 MB
Stars
55.4K
Age
5y
Commits · 90 Days