A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
## Supporting If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot! ## Screenshots ![Hex editor, patterns and data information](https://user-images.githubusercontent.com/10835354/139717326-8044769d-527b-4d88-8adf-2d4ecafdca1f.png) ![Bookmarks, disassembler and data processor](https://user-images.githubusercontent.com/10835354/139717323-1f8c9d52-f7eb-4f43-9f11-097ac728ed6c.png) ## Features - Featureful hex view - Byte patching - Patch management - Copy bytes as feature - Bytes - Hex string - C, C++, C#, Rust, Python, Java & JavaScript array - ASCII-Art hex view - HTML self contained div - String and hex search - Colorful highlighting - Goto from start, end and current cursor position - Custom C++-like pattern language for parsing highlighting a file's content - Automatic loading based on MIME type - arrays, pointers, structs, unions, enums, bitfields, namespaces, little and big endian support, conditionals and much more! - Useful error messages, syntax highlighting and error marking - Data importing - Base64 files - IPS and IPS32 patches - Data exporting - IPS and IPS32 patches - Data inspector allowing interpretation of data as many different types (little and big endian) - Huge file support with fast and efficient loading - String search - Copying of strings - Copying of demangled strings - File hashing support - CRC16 and CRC32 with custom initial values and polynomials - MD4, MD5 - SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 - Disassembler supporting many different architectures - 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 - Bookmarks - Region highlighting - Comments - Data Analyzer - File magic-based file parser and MIME type database - Byte distribution graph - Entropy graph - Highest and average entropy - Encrypted / Compressed file detection - Built-in Content Store - Download all files found in the database directly from within ImHex - Yara Rules support - Quickly scan a file for vulnearabilities with official yara rules - Helpful tools - Itanium and MSVC demangler - ASCII table - Regex replacer - Mathematical expression evaluator (Calculator) - Hexadecimal Color picker - Base converter - UNIX Permissions calculator - Anonfiles File upload tool - Wikipedia term definition finder - File utilities - File splitter - File combiner - File shredderer - Built-in cheat sheet for pattern language and Math evaluator - Doesn't burn out your retinas when used in late-night sessions ## Pattern Language The custom C-like Pattern Language developed and used by ImHex is easy to read, understand and learn. A guide with all features of the language can be found [in the wiki](https://github.com/WerWolv/ImHex/wiki/Pattern-Language-Guide) or a simpler version in ImHex under `Help -> Pattern Language Cheat Sheet` ## Additional Files For format patterns, includable libraries and magic files, check out the [ImHex-Patterns](https://github.com/WerWolv/ImHex-Patterns) repository. Feel free to PR your own files there as well! ## Nightly builds Nightlies are available via GitHub Actions [here](https://github.com/WerWolv/ImHex/actions?query=workflow%3ABuild). - Windows • __x86_64__ - [MSI](https://nightly.link/WerWolv/ImHex/workflows/build/master/Windows%20Installer.zip) - [EXE](https://nightly.link/WerWolv/ImHex/workflows/build/master/Windows%20Portable%20ZIP.zip) - MacOS • __x86_64__ - [DMG](https://nightly.link/WerWolv/ImHex/workflows/build/master/macOS%20DMG.zip) - Linux • __x86_64__ - [ELF](https://nightly.link/WerWolv/ImHex/workflows/build/master/Linux%20ELF.zip) - [Flatpak](https://nightly.link/WerWolv/ImHex/workflows/build/master/Linux%20Flatpak.zip) ## Compiling You need a C++20 compatible compiler such as GCC 10.2.0 to compile ImHex. 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 working examples ### Windows On Windows, ImHex is built through msys2 / mingw. To install all dependencies, open a mys2 window and run the PKGCONFIG script in the (dist/msys2)[dist/msys2] folder. After all the dependencies are installed, run the following commands to build ImHex: ```sh mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j ``` --- To create a standalone zipfile on Windows, get the Python standard library (e.g. from https://github.com/python/cpython/tree/master/Lib) and place the files and folders in `lib/python3.8` next to your built executable. Don't forget to also copy the `libpython3.8.dll` and `libwinpthread-1.dll` from your mingw setup next to the executable. - Copy the files from `python_libs` in the `lib` folder next to your built executable. - Place your magic databases in the `magic` folder next to your built executable - Place your patterns in the `pattern` folder next to your built executable - Place your include pattern files in the `include` folder next to your built executable ### macOS To build ImHex on macOS, run the following commands: ```sh brew bundle --no-lock --file dist/Brewfile mkdir build cd build CC=$(brew --prefix llvm)/bin/clang CXX=$(brew --prefix llvm)/bin/clang++ PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" cmake -DCMAKE_BUILD_TYPE=Release .. make -j ``` Install the ImHex executable as well as libimhex.dylib to wherever ImHex should be installed. All other files belong in `~/Library/Application Support/imhex`: ``` Patterns: ~/Library/Application Support/imhex/patterns Pattern Includes: ~/Library/Application Support/imhex/includes Magic files: ~/Library/Application Support/imhex/magic Python: ~/Library/Application Support/imhex/lib/pythonX.X Plugins: ~/Library/Application Support/imhex/plugins Configuration: ~/Library/Application Support/imhex/config Resources: ~/Library/Application Support/imhex/resources ``` ### Linux Dependency installation scripts are available for many common Linux distributions in the (/dist)[dist] folder. After all the dependencies are installed, run the following commands to build ImHex: ```sh mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j ``` --- Put the ImHex executable into the `/usr/bin` folder. Put libimhex.so into the `/usr/lib` folder. Configuration files go to `/etc/xdg/imhex` or `~/.config/imhex`. All other files belong in `/usr/share/imhex` or `~/.local/share/imhex`: ``` Patterns: /usr/share/imhex/patterns Pattern Includes: /usr/share/imhex/includes Magic files: /usr/share/imhex/magic Python: /usr/share/imhex/lib/pythonX.X Plugins: /usr/share/imhex/plugins Configuration: /etc/xdg/imhex/config Resources: /usr/share/imhex/resources ``` All paths follow the XDG Base Directories standard, and can thus be modified with the environment variables `XDG_CONFIG_HOME`, `XDG_CONFIG_DIRS`, `XDG_DATA_HOME` and `XDG_DATA_DIRS`. ## Credits - Thanks a lot to ocornut for their amazing [Dear ImGui](https://github.com/ocornut/imgui) which is used for building the entire interface - Thanks to ocornut as well for their hex editor view used as base for this project. - Thanks to BalazsJako for their incredible [ImGuiColorTextEdit](https://github.com/BalazsJako/ImGuiColorTextEdit) used for the pattern language syntax highlighting - Thanks to nlohmann for their [json](https://github.com/nlohmann/json) library used for project files - Thanks to aquynh for [capstone](https://github.com/aquynh/capstone) which is the base of the disassembly window - Thanks to vitaut for their [libfmt](https://github.com/fmtlib/fmt) library which makes formatting and logging so much better - Thanks to rxi for [microtar](https://github.com/rxi/microtar) used for extracting downloaded store assets