A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
ImHex is a hex editor designed specifically for reverse engineers, programmers, and those who prioritize eye comfort during late-night sessions. It offers an intuitive interface for analyzing, modifying, and visualizing binary data with precision.
Dark Mode Interface: Designed to reduce eye strain, with customizable themes and color schemes.
Audience & Benefit:
Ideal for reverse engineers, programmers, and anyone working in low-light conditions, ImHex provides a comfortable and efficient environment for hex editing and data analysis. Its advanced features empower users to dissect and modify binary files with ease while maintaining focus on the task at hand.
ImHex can be installed via winget, making it accessible for developers who prefer streamlined setup processes.
Screenshots
More Screenshots
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
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 13 (Ventura) 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 12 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.