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.
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.
OS:
Windows: Windows 7 or higher (Windows 10/11 recommended)
macOS: macOS 15 (Sequoia) or higher,
Lower versions should still work too, but you’ll need to compile ImHex yourself. The release binaries will NOT work due to GitHub not having any macOS 15 or lower CI runners available.
The macOS build is not signed and will require you to manually allow them in the Security & Privacy settings.
Linux: “Modern” Linux. The following distributions have official releases available. Other distros are supported through the AppImage, Flatpak and Snap releases.
Ubuntu and Debian
Fedora
RHEL/AlmaLinux
Arch Linux
Basically any other distro will work as well when compiling ImHex from sources.
FreeBSD: Tested on FreeBSD 14.3
Other versions will most likely work too but are untested
CPU: Officially supported are x86, AMD64 and ARM64, though any Little Endian CPU should work.
GPU: OpenGL 3.0 or higher
Integrated Intel HD iGPUs are supported, however certain drivers are known to cause various graphical artifacts, especially on Windows. Use at your own risk.
In case you don’t have a GPU available, there are software rendered releases available for Windows and macOS
RAM: ~50MiB, more is required for more complex analysis
Storage: ~100MiB
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.
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:
DESTDIR=install ninja install
The SDK will then be available at install/usr/local/share/imhex/sdk. You will need to set the variable IMHEX_SDK_PATH to that (absolute) path.
Getting the SDK in a Github Actions CI
You can use this action to automatically download the SDK to your Github Runner
This program will not transfer any information to other networked systems
unless specifically requested by the user or the person installing or
operating it.
A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
/ˈɪmhɛks/
Supporting
If you like my work, please consider supporting me on GitHub Sponsors, Ko-Fi or PayPal. Thanks a lot!
Notable Sponsors
Would you like to appear here as well? Contact us at imhex@werwolv.net!
Screenshots
More Screenshots
Features
Featureful hex view
Byte patching
Patch management
Infinite Undo/Redo
“Copy bytes as…”
Simple string and hex search
Goto from start, end and current cursor position
Colorful highlighting
Displaying data as a list of many different types
Decoding data as ASCII and custom encodings
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
Theming support
Doesn’t burn out your retinas when used in late-night sessions
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
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
Raw Disks
GDB Server
Intel Hex and Motorola SREC data
Base64 encoded data
UDP Packets
Process Memory
Remote Files over SSH with SFTP
Data searching
Support for searching the entire file or only a selection
String extraction
Sequence search
Regex search
Binary Pattern
Numeric Value search
Data hashing support
Many different algorithms available
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
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
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
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.
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.
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:
cmake -G Ninja -DIMHEX_BUNDLE_PLUGIN_SDK=ON -B buildcd buildDESTDIR=install ninja installThe SDK will then be available atinstall/usr/local/share/imhex/sdk. You will need to set the variableIMHEX_SDK_PATHto that (absolute) path.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
License
The biggest part of ImHex is under the GPLv2-only license. Notable exceptions to this are the following parts which are under the LGPLv2.1 license:
The reason for this is to allow for proprietary plugins to be developed for ImHex.
Code Signing Policy
Free code signing provided by SignPath.io, certificate by SignPath Foundation.
This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.
People with direct push access