🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.

Overview

🔍 ImHex

A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.

'Build' workflow Status Discord Server Total Downloads

Supporting

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

GitHub donate button Patreon donate button PayPal donate button

Screenshots

Hex editor, patterns and data information Bookmarks, disassembler and data processor

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 on the docs page.

Plugin development

To develop plugins for ImHex, use one of the following two templates projects to get startet. 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.

Additional Files

For format patterns, includable libraries and magic files, check out the ImHex-Patterns repository. Feel free to PR your own files there as well!

Nightly builds

Nightlies are available via GitHub Actions here.

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:

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:

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:

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

Contributors

  • Mary for her immense help porting ImHex to MacOS and help during development
  • Roblabla for adding MSI Installer support to ImHex
  • jam1garner and raytwo for their help with adding Rust support to plugins
  • All other people that have been reporting issues on Discord or GitHub that I had great conversations with :)

Libraries

  • Thanks a lot to ocornut for their amazing Dear 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 used for the pattern language syntax highlighting
  • Thanks to nlohmann for their json library used for project files
  • Thanks to aquynh for capstone which is the base of the disassembly window
  • Thanks to vitaut for their libfmt library which makes formatting and logging so much better
  • Thanks to rxi for microtar used for extracting downloaded store assets
Issues
  • [Bug] Cursor not aligned with interface

    [Bug] Cursor not aligned with interface

    Operating System

    Windows

    What's the issue you encountered?

    The cursor doesn't line up with the interface. I counted the pixels and the cursor needs to be 31 pixels up and 9 pixels left when in window mode and 23 pixels up when in full screen mode, in order to select the edge of menu item or the window controls (minimize, ,maximize, close). I'm running Windows 10 Pro 21H1 (OS Build 19043.1165).

    How can the issue be reproduced?

    Just running the software. It happens in the latest version 1.9.0 with both the Windows MSI installer and Portable version.

    ImHex Version

    1.9.0

    Additional context?

    • Additional information about your environment.
    • If possible and useful, please upload the binary you've been editing when the bug occured.
    opened by kjesso 36
  • Mac support request

    Mac support request

    Is there any plan to support mac os?

    I've tried some build and got this.

    [  2%] Building CXX object CMakeFiles/ImHex.dir/source/window.cpp.o
    [  5%] Building CXX object CMakeFiles/ImHex.dir/source/main.cpp.o
    [ 13%] Building CXX object CMakeFiles/ImHex.dir/source/helpers/crypto.cpp.o
    [ 13%] Building CXX object CMakeFiles/ImHex.dir/source/helpers/patches.cpp.o
    [ 13%] Building CXX object CMakeFiles/ImHex.dir/source/helpers/math_evaluator.cpp.o
    [ 16%] Building CXX object CMakeFiles/ImHex.dir/source/helpers/loader_script_handler.cpp.o
    [ 19%] Building CXX object CMakeFiles/ImHex.dir/source/lang/lexer.cpp.o
    [ 22%] Building CXX object CMakeFiles/ImHex.dir/source/providers/file_provider.cpp.o
    [ 27%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_hexeditor.cpp.o
    [ 27%] Building CXX object CMakeFiles/ImHex.dir/source/lang/evaluator.cpp.o
    [ 33%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_pattern.cpp.o
    [ 36%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_pattern_data.cpp.o
    [ 36%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_hashes.cpp.o
    [ 38%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_information.cpp.o
    [ 41%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_help.cpp.o
    [ 44%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_tools.cpp.o
    [ 47%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_strings.cpp.o
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/window.cpp:1:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/window.hpp:3:10: fatal error: 'concepts' file
          not found
    #include <concepts>
             ^~~~~~~~~~
    [ 50%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_disassembler.cpp.o
    [ 52%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_bookmarks.cpp.o
    [ 58%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_patches.cpp.o
    [ 58%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_data_inspector.cpp.o
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/main.cpp:1:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/window.hpp:3:10: fatal error: 'concepts' file
          not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/providers/file_provider.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/file_provider.hpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/lang/evaluator.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/evaluator.hpp:5:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/helpers/patches.cpp:3:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/helpers/crypto.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/lang/lexer.cpp:24:10: error: no template named
          'optional' in namespace 'std'
        std::optional<u64> parseInt(std::string_view string) {
        ~~~~~^
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/helpers/patches.cpp.o] Error 1
    make[2]: *** Waiting for unfinished jobs....
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/lang/lexer.cpp:234:41: error: no matching
          constructor for initialization of 'std::string_view' (aka 'basic_string_view<char>')
                    auto integer = parseInt(std::string_view(&code[offset], end));
                                            ^                ~~~~~~~~~~~~~~~~~~
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string_view:229:5: note:
          candidate constructor not viable: no known conversion from 'char *' to
          'std::__1::basic_string_view::size_type' (aka 'unsigned long') for 2nd argument; dereference the
          argument with *
        basic_string_view(const _CharT* __s, size_type __len) _NOEXCEPT
        ^
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string_view:223:5: note:
          candidate constructor not viable: requires 1 argument, but 2 were provided
        basic_string_view(const basic_string_view&) _NOEXCEPT = default;
        ^
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string_view:238:5: note:
          candidate constructor not viable: requires single argument '__s', but 2 arguments were provided
        basic_string_view(const _CharT* __s)
        ^
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string_view:220:5: note:
          candidate constructor not viable: requires 0 arguments, but 2 were provided
        basic_string_view() _NOEXCEPT : __data (nullptr), __size(0) {}
        ^
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/providers/file_provider.cpp.o] Error 1
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_patches.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_strings.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_data_inspector.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/helpers/loader_script_handler.cpp:5:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_information.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_hashes.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_disassembler.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_pattern_data.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_pattern_data.hpp:7:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:7:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/libs/ImGui/include/imgui_memory_editor.h:230:23: warning:
          flag ' ' results in undefined behavior with 'c' conversion specifier [-Wformat]
            ImGui::Text("% *c   ", s.AddrDigitsCount, ' ');
                         ~^~~
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/helpers/math_evaluator.cpp:10:10: fatal error:
          'numbers' file not found
    #include <numbers>
             ^~~~~~~~~
    1 error generated.
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_pattern_data.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_pattern_data.hpp:7:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:9:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    1 error generated.
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_bookmarks.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    make[2]: *** [CMakeFiles/ImHex.dir/source/helpers/crypto.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/helpers/math_evaluator.cpp.o] Error 1
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_hexeditor.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_hexeditor.hpp:6:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/libs/ImGui/include/imgui_memory_editor.h:230:23: warning:
          flag ' ' results in undefined behavior with 'c' conversion specifier [-Wformat]
            ImGui::Text("% *c   ", s.AddrDigitsCount, ' ');
                         ~^~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_help.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_help.hpp:7:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:7:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/libs/ImGui/include/imgui_memory_editor.h:230:23: warning: 2 errors generated.
    
          flag ' ' results in undefined behavior with 'c' conversion specifier [-Wformat]
            ImGui::Text("% *c   ", s.AddrDigitsCount, ' ');
                         ~^~~
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/lang/lexer.cpp.o] Error 1
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_strings.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_data_inspector.cpp.o] Error 1
    1 error generated.
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_help.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_help.hpp:7:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:9:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_patches.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_hashes.cpp.o] Error 1
    1 error generated.
    1 error generated.
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/window.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_bookmarks.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_disassembler.cpp.o] Error 1
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_pattern.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_pattern.hpp:6:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:7:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/libs/ImGui/include/imgui_memory_editor.h:230:23: warning:
          flag ' ' results in undefined behavior with 'c' conversion specifier [-Wformat]
            ImGui::Text("% *c   ", s.AddrDigitsCount, ' ');
                         ~^~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_pattern.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_pattern.hpp:6:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:9:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/lang/evaluator.cpp.o] Error 1
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_information.cpp.o] Error 1
    1 warning and 1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_pattern_data.cpp.o] Error 1
    1 error generated.
    1 warning and 1 error generated.
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_tools.cpp:7:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    make[2]: *** [CMakeFiles/ImHex.dir/source/helpers/loader_script_handler.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_help.cpp.o] Error 1
    1 error generated.
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_hexeditor.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_hexeditor.hpp:13:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:9:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_tools.cpp.o] Error 1
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/main.cpp.o] Error 1
    1 warning and 1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_hexeditor.cpp.o] Error 1
    1 warning and 1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_pattern.cpp.o] Error 1
    make[1]: *** [CMakeFiles/ImHex.dir/all] Error 2
    make: *** [all] Error 2
    

    I think Apple clang 12.0.0 doest not support C++17 std::optional and C++20 features fully. Is there any support plan on Mac OS after apple clang supports C++20 featrues?

    enhancement 
    opened by benjioh5 29
  • [Bug] content store: bug, tty console: crash

    [Bug] content store: bug, tty console: crash

    Win10 64bits, msys mingw64, code: https://github.com/xtexChooser/ImHex

    $ mingw32-make -j
    ...................................................
    [email protected] MINGW64 /f/Project/ImHex/build
    $ mingw32-make install
    [  0%] Built target magic_dbs
    [ 54%] Built target libcurl
    [ 58%] Built target imgui
    [ 58%] Built target nfd
    [ 66%] Built target libimhex
    [ 70%] Built target windows
    [ 70%] Built target LLVMDemangle
    [ 83%] Built target libyara
    [ 87%] Built target builtin
    [100%] Built target imhex
    [100%] Built target fmt
    Install the project...
    -- Install configuration: "Release"
    -- Up-to-date: F:/Project/ImHex/build/install/plugins/builtin.hexplug
    -- Up-to-date: F:/Project/ImHex/build/install/plugins/windows.hexplug
    -- Up-to-date: F:/Project/ImHex/build/install/./libimhex.dll
    CMake Error at cmake_install.cmake:100 (get_filename_component):
      get_filename_component unknown component Files/Python/libs/python39.lib
    
    
    mingw32-make: *** [Makefile:114: install] Error 1
    
    

    CMake with cmake -G "MinGW Makefiles" -DCREATE_PACKAGE=ON -DCMAKE_INSTALL_PREFIX="$PWD/install" ..

    opened by xtexChooser 20
  • [Bug] Doesn't start on macos Catalina (Intel) due to missing Library

    [Bug] Doesn't start on macos Catalina (Intel) due to missing Library

    Operating System

    MacOS

    What's the issue you encountered?

    ImHex doesn't even start, no message, no window.

    Checking "Console.app" and the Crash reports there you can find:

    Exception Type:        EXC_CRASH (SIGABRT)
    Exception Codes:       0x0000000000000000, 0x0000000000000000
    Exception Note:        EXC_CORPSE_NOTIFY
    
    Termination Reason:    DYLD, [0x1] Library missing
    
    Application Specific Information:
    dyld: launch, loading dependent libraries
    
    Dyld Error Message:
      Library not loaded: /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers
      Referenced from: /Applications/imhex.app/Contents/MacOS/imhex
      Reason: image not found
    

    How can the issue be reproduced?

    Try to start ImHex on macos Catalina (10.15.7) on a MBP 2015 (Intel)

    ImHex Version

    1.19.3

    ImHex Build Type

    • [ ] Nightly or built from sources

    Additional context?

    see above (MBP2015, Catalina)

    opened by tabascoeye 19
  • Proper DPI scaling and basic custom font

    Proper DPI scaling and basic custom font

    For now the font is loaded from a hardcoded path, but in the future it would be better to ask the user directly (in a settings panel), as well as expose some kind of customization for the ui/font scaling.

    ~~Also some stuff scales badly because of hardcoded window sizes, which need to be weighted by the scaling factor.~~ EDIT: I fixed the issues I saw.

    opened by averne 17
  • No HiDPI support

    No HiDPI support

    I tried to use this because I value my eyesight but it backfired due to the lack of HiDPI support and now my eyes hurt.

    Your friends for Windows are:

    • MonitorFromWindow: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-monitorfromwindow
    • GetDpiForMonitor: https://docs.microsoft.com/en-us/windows/win32/api/shellscalingapi/nf-shellscalingapi-getdpiformonitor
    • ImGuiIO::DisplayFramebufferScale
    enhancement 
    opened by sherief 15
  • sys: Fix macOS compilation (as of 2dc1886)

    sys: Fix macOS compilation (as of 2dc1886)

    This PR fixes the compilation of ImHex on macOS. It doesn't add any QoL improvements about the state of the software on this operating system, but at least it'll lessen the work needed to get ImHex running on macOS.

    I tried to modify the code in a way that would only affect macOS builds (using #if defined(OS_MACOS) guards, although some changes could affect other platforms. The main change that could behave in such a way is the removal of uses of std::views::reverse in favor of the older, more supported reverse iterators. This was done because LLVM 13.0.0 (release 4 days ago as of now) is the first LLVM version to support the ranges standard library, but its support is incomplete. Support for std::views::reverse is, however, already in the source of LLVM and will probably be available in one of the next releases. I honestly think merging this PR can wait for an LLVM update, as macOS is not officially supported by ImHex anyway.

    The external cURL was also updated for its support of mbedtls 3.0, which is now the latest version available on Homebrew.

    Tests were done on an M1 Mac, but I believe x86 will work just fine as well.

    Thanks for this software :)

    opened by Kuruyia 14
  • Add AppStream metadata and `.desktop` file for Linux desktop integration

    Add AppStream metadata and `.desktop` file for Linux desktop integration

    Tested locally on my Fedora 33 system, it works:

    KRunner showing ImHex

    • Rename the binary target from ImHex to imhex for easier invocation on case-sensitive filesystems.
    • Add a 256×256 PNG icon to be installed on Linux (upscaled using waifu2x).

    This supersedes/closes #40 by also providing CMake install functionality.

    Adding Linux desktop integration files eases packagers' job and also makes it possible to package ImHex for Flathub.

    enhancement 
    opened by Calinou 14
  • runtime_error: Failed to initialize GLFW

    runtime_error: Failed to initialize GLFW

    ImHex/build on  master via 喝 v3.19.1 took 6s 
    ❯ ./ImHex                                                                      
    Glfw Error 65544: Wayland: Failed to connect to display
    terminate called after throwing an instance of 'std::runtime_error'
      what():  Failed to initialize GLFW!
    [1]    419447 abort (core dumped)  ./ImHex
    

    I'm using Xorg, openbox, Xfce.

    ImHex/build on  master via 喝 v3.19.1 
    ❯ neofetch                                                                  
                       -`                    [email protected] 
                      .o+`                   ━━━━━━━━━━━━━ 
                     `ooo/                   〻 Arch x86_64 
                    `+oooo:                  〻 5.9.11-arch2-1 
                   `+oooooo:                 〻 1157 (pacman) 
                   -+oooooo+:                〻 Openbox 
                 `/:-:++oooo+:               〻 2285MiB / 16001MiB (14%) 
                `/++++/+++++++:              〻 1 hour, 25 mins 
               `/++++++++++++++:             CPU〻 AMD Ryzen 5 3600X (12) @ 3.8GHz  
              `/+++ooooooooooooo/`           CPU Usage〻 4% 
             ./ooosssso++osssssso+`          GPU〻 NVIDIA GeForce GTX 1660 SUPER 
            .oossssso-````/ossssss+`         GPU Driver〻 NVIDIA 455.45.01 
           -osssssso.      :ssssssso.        Disk (/)〻 65G / 261G (26%) 
          :osssssss/        osssso+++.       Host〻 ROG Strix GA15DH_G15DH 1.0 
         /ossssssss/        +ssssooo/-       Terminal〻 tilix 
       `/ossssso+/:-        -:/+osssso+-     Locale〻 en_US.UTF-8 
      `+sso+:-`                 `.-/+oso:
     `++:.                           `-/+/                           
     .`                                 `/
    
    
    duplicate 
    opened by aNchor-only 14
  • Failed to build on Ubuntu 20.04

    Failed to build on Ubuntu 20.04

    └─> …/ImHex/build on  master via 喝 v3.16.3 
    at 11:27:46 [💣 127] ✗  cmake -DCMAKE_BUILD_TYPE=Release ..
    -- Checking for one of the modules 'libmagic'
    CMake Error at CMakeLists.txt:47 (list):
      list index: 2 out of range (-2, 1)
    
    
    -- Configuring incomplete, errors occurred!
    See also "/home/the-box/Github/ImHex/build/CMakeFiles/CMakeOutput.log".
    

    File is attached, thanks for taking a look!

    (I ran the bash script under build before running cmake)

    CMakeOutput.log

    opened by Corfucinas 13
  • Add expressions to the pattern language

    Add expressions to the pattern language

    I'm trying to reverse engineer a file format which has some length-prefixed strings at some point, which are encoded as such:

    struct PString {
        u32 length;
        u8 string[length / 12];
    };
    

    (I don't know why 12, this format is weird like that :P)

    It would be nice to be able to use simple arithmetic expressions in the size of an array rather than just variables so I could express this struct in the pattern language. I've seen there's already #15 open for expressions in variable placements, but that looked a bit more complex and also didn't cover array sizes.

    And thank you for making this, I'm finding it very useful!

    feature request 
    opened by steinuil 13
  • [Feature] Move all portable data directories into a single sub directory

    [Feature] Move all portable data directories into a single sub directory

    What feature would you like to see?

    In portable mode, it would be better to have a single userData sub directory that contains all of the other data directories. If this is acceptable, I can get a dev environment set up when i get a chance and submit a PR if necessary.

    How will this feature be useful to you and others?

    Having all the data directories in the root application folder makes it difficult to distinguish between user data and base application data. It also makes it more difficult to create backups and to update, since it isn't obvious what came as part of the base install vs what was added by the user.

    Having a single user sub directory makes managing a portable installation much more simple and clean. This has the following primary benefits:

    • Backups can be done on a single directory. So any future additions/removals will automatically included.
    • Updating only needs to preserver a single directory. Copy the one directory to a new install and be done. No need to decipher what came pre-installed and what was user added.

    Request Type

    • [X] I can provide a PoC for this feature or am willing to work on it myself and submit a PR
    opened by mgziminsky 2
  • [Feature] Improved diffing

    [Feature] Improved diffing

    What feature would you like to see?

    Right now the diffing feature isn't very useful. There doesn't seem to be any way to go to the next/previous difference besides just scrolling the file. Additionally, when in diffing mode, it only shows the differences between the files and nothing else works (e.g. text preview, data inspector, strings, etc.)

    How will this feature be useful to you and others?

    At the moment, ImHex doesn't offer anything in terms of binary diffing over existing tools such as wxHexEditor. If it was better integrated with the other features it might be more compelling for those who want to compare binary files.

    Thanks!

    Request Type

    • [ ] I can provide a PoC for this feature or am willing to work on it myself and submit a PR
    opened by bmaupin 0
  • Be able to select a range from X to Y from a menu or by editing the values of selection

    Be able to select a range from X to Y from a menu or by editing the values of selection

    What feature would you like to see?

    With the feature descrived in the title if you are investigating a file format and you need to dump the content or select it which is preceeded by a size header it would be a great option to be able to tell select from X to Y or select from X size Y to be able to select it fast

    How will this feature be useful to you and others?

    Allowing people to save time insted of scrolling from a to b and press shift to select a region and calculating the offsets manually for the region to select.

    Request Type

    • [ ] I can provide a PoC for this feature or am willing to work on it myself and submit a PR
    opened by muniategui 0
  • [Bug] Builds fail with LTO

    [Bug] Builds fail with LTO

    Operating System

    Linux

    What's the issue you encountered?

    Builds fail with LTO flags enabled (-flto=auto -ffat-lto-objects).

    https://koji.fedoraproject.org/koji/watchlogs?taskID=90242911

    Confirmed on Fedora and ArchLinux.

    How can the issue be reproduced?

    Build from source using -flto=auto -ffat-lto-objects flags.

    ImHex Version

    1.19.3

    ImHex Build Type

    • [ ] Nightly or built from sources

    Additional context?

    Context/discussion from discord: https://discord.com/channels/789833418631675954/789833418631675957/1003044011885477978

    opened by jonathanspw 0
  • [Feature] Read only open files

    [Feature] Read only open files

    What feature would you like to see?

    I am working on a compiler and I generate .exe, actually ImHex lock files certainly because it open them with write flag. It would be interesting to have a read only mode or shared mode that allow outside modification of files. It should also detect the modification on offert the possibility to reload file.

    How will this feature be useful to you and others?

    It will save a lot of clicks for developers who want to debug files with pretty complicated architecture like executable,....

    Request Type

    • [X] I can provide a PoC for this feature or am willing to work on it myself and submit a PR
    opened by Flamaros 1
Releases(v1.20.0)
  • v1.20.0(Aug 5, 2022)

    Changelog

    Additions

    • Added Chinese (Traditional) translation. Thanks a lot to @5idereal
    • Replaced String finder view with a more generic Find view
      • String find supports ASCII, UTF16-LE and UTF16BE string extraction with various settings for allowed characters and null termination
      • New string sequence finder
      • New Regex string finder
      • New Binary Pattern finder
    • Added support for Fedora .rpm releases. Massive thanks to @jonathanspw for the help and implementation and @iTrooz for various improvements
    • Added ULEB128 and SLEB128 rows to the data inspector. Thanks to @gudzpoz
    • Added u24, s24, u48 and s48 rows to the data inspector
    • Added RGB565 row to the data inspector
    • Added new 3.0x and 4.0x window scaling option
    • Added a new error message for when a provider failed to open its source
    • Added setting to automatically synchronize pattern source code between providers
    • Added support for +Infinity, -Infinity, Signaling NaN and Quiet NaN in the IEEE 754 tester tool

    Improvements

    • ImHex should now properly scale up on HiDPI screens
    • Modernized look and feel of the ancient data information view
    • Portable Windows release now no longer uses the AppData folder
    • Updated ImGui, ImPlot and ImNodes to the latest version available
    • ImHex now resets its settings if it fails to parse them to avoid crashes on startup
    • Hex editor cell editing now correctly exits when clicking outside of the cell
    • When opening a new provider, the current pattern source code will now automatically be copied over
    • Lowered OpenGL requirements to 3.0 on Windows and Linux to hopefully support some older systems
    • Numpad enter can now be used in the pattern editor
    • Made many float displays easier to read

    Bug Fixes

    • Fixed Intel GPU detection not working correctly
    • Fixed global shortcuts not always working
    • Fixed various out of bounds memory reads and issues with multi-byte visualizers in the hex editor view
    • Fixed duplicate provider tabs not being selectable
    • Fixed crash when trying to search for an empty string
    • Fixed various issues and crashes with the search tool
    • Fixed crash when selecting a folder as custom font path
    • Fixed displaying of truncated strings in data inspector
    • Fixed resize cursor not showing up correctly in non-borderless window mode
    • Fixed auto-evaluation of pattern language code not working correctly
    • Fixed pattern tooltips of static array entries

    Pattern Language

    • Added the [[sealed]] attibute to make visualizers treat a type as a fundamental type
    • Massively improved search speed of Patterns using interval trees
    • Increased pattern and array limit.
      • You should now no longer run into these limits as quickly anymore
    • Fixed passing enums to functions
    • Added the std::time library for working with time constants and getting the local time
    • Added the type library with support for many additional type decodings
    • Fixed evaluation of in/out variables
    • Fixed decoding issues with signed out variables
    • Fixed issues with the namespace scope resolution
    • Fixed returning heap types from functions

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Full.Sources.tar.gz(22.31 MB)
    imhex-1.20.0-ArchLinux.pkg.tar.zst(10.83 MB)
    imhex-1.20.0-Darwin.dmg(20.46 MB)
    imhex-1.20.0-Fedora-Latest.rpm(8.67 MB)
    imhex-1.20.0-Fedora-Rawhide.rpm(8.61 MB)
    ImHex-1.20.0-win64.msi(20.67 MB)
    imhex-1.20.0-Windows-Portable.zip(20.81 MB)
    imhex-1.20.0.AppImage(83.18 MB)
    imhex-1.20.0.deb(9.18 MB)
  • v1.19.3(Jul 26, 2022)

    Changelog

    Additions

    • Added filter option to bookmarks view

    Improvements

    • Downloaded content store items no longer get placed in the /tmp directory when using the AppImage or Flatpak release. Thanks to @catsout
    • Improved rendering of bitfield entries in the pattern data view. Thanks to @Diadlo

    Bug Fixes

    • Fixed various hex editor highlighting, tooltips and selection issues
    • Fixed duplicate pattern data view entries when sorting the list
    • Fixed various issues with multi-byte visualizers in the hex editor view
    • Fixed various base address related issues
    • Fixed Edit -> Create Bookmark menu item not working correctly
    • Fixed search not working as expected

    Pattern Language

    • Bitwise operators no longer act like boolean operators
    • Fixed passing dynamically sized types to functions

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Full.Sources.tar.gz(22.28 MB)
    imhex-1.19.3-ArchLinux.pkg.tar.zst(10.03 MB)
    imhex-1.19.3-Darwin.dmg(16.17 MB)
    ImHex-1.19.3-win64.msi(17.05 MB)
    imhex-1.19.3-Windows-Portable.zip(16.75 MB)
    imhex-1.19.3.AppImage(79.01 MB)
    imhex-1.19.3.deb(9.05 MB)
  • v1.19.2(Jul 16, 2022)

    Changelog

    Improvements

    • Upgraded codebase to C++23
    • Possibly added support for Windows 7 (untested)

    Bug Fixes

    • Fixed advanced decoding hex editor row not being rendered correctly
    • Fixed editing floats, doubles and strings in the data inspector
    • Fixed opening files with spaces in their name on Linux not working correctly
    • Fixed crash when closing the file picker without choosing a file
    • Fixed duplicate file chooser popup entries not being selectable
    • Fixed CTRL + O only working when the hex editor view is selected
    • Fixed user folders not loading correctly on startup
    • Fixed crash when searching for an empty string
    • Fixed crash on exit

    Pattern Language

    • Added u24, u48. u96, s24, s48 and s96 builtin types
    • Added support for pointers to arrays. Thanks a lot to @PredatorCZ
    • Added support for pointers with signed values. Thanks a lot to @PredatorCZ
    • Greatly improved token creation and consuming. Refactored Lexer and Parser
    • Fixed invalid placement syntax parsing
    • Improved error message when a invalid token was encountered
    • Improved querying patterns by address
    • Fixed name of returned static array entry patterns
    • Fixed crash when querying value of a zero-length string
    • Fixed namespace resolution issues
    • Fixed overriding the color of static arrays. Thanks to @PredatorCZ
    • Fixed passing placed variables to functions
    • Fixed In/Out variables not working correctly. Thanks to @PredatorCZ
    • Removed empty string patterns from the pattern data view

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Full.Sources.tar.gz(22.27 MB)
    imhex-1.19.2-ArchLinux.pkg.tar.zst(10.03 MB)
    imhex-1.19.2-Darwin.dmg(16.17 MB)
    ImHex-1.19.2-win64.msi(17.07 MB)
    imhex-1.19.2-Windows-Portable.zip(16.78 MB)
    imhex-1.19.2.AppImage(79.03 MB)
    imhex-1.19.2.deb(9.09 MB)
  • v1.19.1(Jul 7, 2022)

    Changelog

    Heyo @shutingrz :)

    Additions

    • Added a backdrop image when no views are open

    Improvements

    • Automatically restore default layout when a file is opened but no views are open
    • Improved stuttering when resizing or minimizing/maximizing the window
    • Improved the Full Sources tar size. Thanks to @iTrooz
    • Updated various dependencies

    Bug Fixes

    • Fixed opening files with spaces in their name on Linux
    • Fixed various more Unicode issues

    Pattern Language

    • Custom type formatting
      • Passing custom types to e.g std::print now prints e.g struct Test { 12, 34, 56 } for a Struct named Test with 3 variables
    • Fixed a crash when using provider operators

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Full.Sources.tar.gz(22.16 MB)
    imhex-1.19.1-ArchLinux.pkg.tar.zst(10.03 MB)
    imhex-1.19.1-Darwin.dmg(16.16 MB)
    ImHex-1.19.1-win64.msi(17.05 MB)
    imhex-1.19.1-Windows-Portable.zip(16.77 MB)
    imhex-1.19.1.AppImage(93.03 MB)
    imhex-1.19.1.deb(9.07 MB)
  • v1.19.0(Jul 4, 2022)

    Changelog

    Additions

    • Added ability to remove bytes from a file. Thanks to @Diadlo
    • Added a macOS styled icon to the macOS build and updated the icon on other platforms Huge thanks to @zaafonin
    • Added back missing hex editor selection byte count value to the hex editor view footer
    • Added support for HTTP and SOCKS5 Proxies. Thanks a lot to @shirok1

    Improvements

    • Fixed many issues with the macOS .dmg file, and the Linux AppImage and Flatpak. Massive thanks to @iTrooz
    • Massive CI Improvements Huge thanks to @iTrooz
      • This includes much improved build times, ArchLinux support, automatic release uploading and many other improvements
    • Switched over to GCC on macOS
      • This allows for more cutting edge C++ features to be used in the future
    • Lots of Unicode related crashes and fixes
      • Paths are now consistently handled correctly on all platforms
      • ImHex now works correctly when launched from a location with non-ASCII characters in its path or on systems with a user account name with unicode characters in it
    • Massively improved pattern highlighting performance
      • Search algorithm is now O(log2(N)) instead of O(N)
    • Greatly improved the performance of static arrays in the pattern data view
    • Improved the scrolling behaviour in the hex editor view

    Bug Fixes

    • Fixed byte editing not working correctly in the hex editor view
    • Fixed AppImage crashing when opening the file chooser
    • Fixed crash when parsing invalid wide strings
    • Fixed Resize and Insert bytes popup not working correctly
    • Fixed fallback language being accidentally set to Portuguese. Thanks to @LFriede
    • Fixed misaligned hex editor selection hightlighting in very big files
    • Fixed double clicking on the "... (Double-click to see more items)" item in arrays in the pattern data view. Thanks to @Diadlo
    • Fixed a few hex editor highlighting crashes
    • Fixed hash function names not being localized
    • Fixed crash when undocking the hex editor view
    • Fixed various localization issues
    • Fixed hex editor selection moving with SHIFT + Arrow Keys not working as expected
    • Fixed a crash when copying text to the clipboard on non-english locales
    • Fixed system theme detection issues on all OSes
    • Fixed In/Out variables not being evaluated correctly when loading a pattern through the context menu

    Pattern Language

    • Added support for using custom types as local variables
      • This means you can now define structs, unions or bitfields and use and assign values to them inside of functions
    • Fixed endian inversion when passing variables to functions in big-endian mode
    • Fixed In/Out variables not working correctly when using any pre-processor directives

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Full.Sources.tar.gz(142.24 MB)
    imhex-1.19.0-ArchLinux.pkg.tar.zst(9.99 MB)
    imhex-1.19.0-Darwin.dmg(16.15 MB)
    ImHex-1.19.0-win64.msi(16.22 MB)
    imhex-1.19.0-Windows-Portable.zip(15.92 MB)
    imhex-1.19.0.AppImage(93.01 MB)
    imhex-1.19.0.deb(9.06 MB)
  • v1.18.2(Jun 3, 2022)

    Changelog

    Additions

    • Added Brazilian Portuguese translation. Huge thanks to @dgsmiley18
    • Added IEEE 754 floating point number experimenting tool
    • Complete rewrote the Hash view
      • It now supports displaying multiple different Hash types at the same time
      • Configured hashes now also appear in the hex editor when selecting a region, hovering the cursor over it and holding down SHIFT
    • Added tooltip to all Visualizer data processor nodes that display the visualization a lot bigger

    Improvements

    • Improved contrast of the pattern language error popup text color in light mode

    Bug Fixes

    • Fixed editing values in the hex editor
    • Fixed another scroll issue in the hex editor
    • Fixed pasting bytes in the hex editor view
    • Fixed bookmarks automatically collapsing when editing their name
    • Fixed a crash when the OS didn't configure monitors correctly
      • This mainly happens when using Windows Remote Desktop

    Previous Changelog

    Additions

    • Rewrite the entire Hex Editor View
      • The Editor now supports displaying data in various different ways. For example it can combine 4 bytes into one cell and display it as floating point number, or 2 bytes into a signed integer
      • Added setting to change color and transparency of selection
      • Added much better tooltips for Patterns and Bookmarks
        • Hold SHIFT for more information
      • Improved popups for find, goto, base address setting and byte insertion
      • Greatly improved search speed and efficiency
      • Fixed hex view not scrolling when moving the cursor off screen
      • Fixed many inconsistencies
    • Added support for custom languages for the Wikipedia terms searcher. Thanks to @xtexChooser
    • Added bit invert option to data inspector
    • Added bool, DOS Date and DOS Time decoder to data inspector

    Pattern Language

    • Added addressof($) to get the data base address and sizeof($) to get the data size
    • Make bitfields be more on-par with structs and allow conditionals to be used in there
    • Added support for while-sized paddings
    • Fixed pattern language errors not being displayed in the console correctly
    • Fixed MIME pragma not working correctly
    • Fixed including files that include other files themselves

    Improvements

    • Added ImHex to FlatHub. Thanks a lot to @Mailaender
    • Fixed various issues with the AppImage. Thanks a lot to @iTrooz
      • Opening the file browser still crashes the AppImage, drag-n-drop your files onto ImHex to open them

    Floating point decoding RGBA8 decoding


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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(68.52 MB)
    Linux.DEB.zip(7.97 MB)
    Linux.ELF.zip(10.03 MB)
    macOS.DMG.zip(18.55 MB)
    Windows.Installer.zip(16.74 MB)
    Windows.Portable.ZIP.zip(16.85 MB)
  • v1.18.1(May 28, 2022)

    Changelog

    Bug fixes

    • Fixed bookmark menu entry causing wrong region to be marked
    • Fixed Hex Editor selection scrolling being broken
    • Fixed parsing of hex escaped character literals in the pattern language
    • Fixed crash on exit
    • Fixed error again that broke building on GCC 12.1.0 (as used on Arch Linux)

    Previous Changelog

    Additions

    • Rewrite the entire Hex Editor View
      • The Editor now supports displaying data in various different ways. For example it can combine 4 bytes into one cell and display it as floating point number, or 2 bytes into a signed integer
      • Added setting to change color and transparency of selection
      • Added much better tooltips for Patterns and Bookmarks
        • Hold SHIFT for more information
      • Improved popups for find, goto, base address setting and byte insertion
      • Greatly improved search speed and efficiency
      • Fixed hex view not scrolling when moving the cursor off screen
      • Fixed many inconsistencies
    • Added support for custom languages for the Wikipedia terms searcher. Thanks to @xtexChooser
    • Added bit invert option to data inspector
    • Added bool, DOS Date and DOS Time decoder to data inspector

    Pattern Language

    • Added addressof($) to get the data base address and sizeof($) to get the data size
    • Make bitfields be more on-par with structs and allow conditionals to be used in there
    • Added support for while-sized paddings
    • Fixed pattern language errors not being displayed in the console correctly
    • Fixed MIME pragma not working correctly
    • Fixed including files that include other files themselves

    Improvements

    • Added ImHex to FlatHub. Thanks a lot to @Mailaender
    • Fixed various issues with the AppImage. Thanks a lot to @iTrooz
      • Opening the file browser still crashes the AppImage, drag-n-drop your files onto ImHex to open them

    Floating point decoding RGBA8 decoding


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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(68.49 MB)
    Linux.DEB.zip(7.93 MB)
    Linux.ELF.zip(9.99 MB)
    macOS.DMG.zip(18.53 MB)
    Windows.Installer.zip(16.69 MB)
    Windows.Portable.ZIP.zip(16.80 MB)
  • v1.18.0(May 28, 2022)

    Changelog

    Additions

    • Rewrite the entire Hex Editor View
      • The Editor now supports displaying data in various different ways. For example it can combine 4 bytes into one cell and display it as floating point number, or 2 bytes into a signed integer
      • Added setting to change color and transparency of selection
      • Added much better tooltips for Patterns and Bookmarks
        • Hold SHIFT for more information
      • Improved popups for find, goto, base address setting and byte insertion
      • Greatly improved search speed and efficiency
      • Fixed hex view not scrolling when moving the cursor off screen
      • Fixed many inconsistencies
    • Added support for custom languages for the Wikipedia terms searcher. Thanks to @xtexChooser
    • Added bit invert option to data inspector
    • Added bool, DOS Date and DOS Time decoder to data inspector

    Pattern Language

    • Added addressof($) to get the data base address and sizeof($) to get the data size
    • Make bitfields be more on-par with structs and allow conditionals to be used in there
    • Added support for while-sized paddings
    • Fixed pattern language errors not being displayed in the console correctly
    • Fixed MIME pragma not working correctly
    • Fixed including files that include other files themselves

    Improvements

    • Added ImHex to FlatHub. Thanks a lot to @Mailaender
    • Fixed various issues with the AppImage. Thanks a lot to @iTrooz
      • Opening the file browser still crashes the AppImage, drag-n-drop your files onto ImHex to open them

    Floating point decoding RGBA8 decoding


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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(68.49 MB)
    Linux.DEB.zip(7.92 MB)
    Linux.ELF.zip(9.99 MB)
    macOS.DMG.zip(18.53 MB)
    Windows.Installer.zip(16.69 MB)
    Windows.Portable.ZIP.zip(16.80 MB)
  • v1.17.0(Apr 18, 2022)

    Changelog

    Additions

    • Added support for the new Yara console module

    Pattern Language

    • The Pattern Language has been separated from ImHex and was moved to its own repository
      • This was in part made possible by @Diadlo's separation of the pattern rendering code from the rest of the runtime
      • A separate repository also now allows other people to include the Pattern Language in their own applications
    • Types can now be forward declared
    • Functions can now have default parameters
    • Bitfield fields are now selectable
    • Comments behind preprocessor defines are now correctly handled
    • Fixed recursive types not working correctly
    • Fixed caching for static array values
    • Fixed indentation for inlined variables
    • Fixed highlight colors of arrays not matching color shown in pattern data view
    • Fixed struct members that overlap with [[no_unique_address]] members not being highlighted
    • Fixed pointer patterns causing crashes when they are rendered

    Improvements

    • Make ImHex build with -Wall -Wextra -Werror on all platforms
    • Fixed tons of clang-tidy warnings
    • Improved / fixed the AppImage build
    • Recently opened file entries are now being removed if the file doesn't exist anymore
    • Disabled various menu items when no provider is loaded
    • Multi-viewport support has been enabled on Linux again, providing ImHex is running on a X11 system
      • Multi-viewport support is still very buggy on Wayland
    • Improved the about page
    • Pattern values are now being cached. Thanks to @Diadlo
    • Mathematical expressions can now be used in the hex editor goto function
    • Improved look and feel of many hexadecimal input fields
    • Improved string search filtering
    • Moved bookmark delete button to their header
    • Information view plots now don't capture scroll anymore and fit better into the rest of the interface
    • Undo and Redo buttons are only available now if that action is actually available
    • Data inspector endian and format radio boxes are now sliders

    Bug Fixes

    • Fixed crash when setting a custom font and that file can't be found
    • Fixed various bugs and crashes related to filesystem operations
    • Fixed various bugs with the Math Evaluator engine
    • Fixed highlighting not properly being cleared when switching to a different provider
    • Prevent imgui.ini from being created
    • Deferred calls are now handled in a thread-safe manner
    • Fixed interface layout not being saved properly in some cases
    • Fixed theme not changing properly on startup. Thanks to @PredatorCZ
    • Fixed issues where bookmarks not always created highlights correctly
    • Fixed displaying of file stat times in information view
    • Fixed crash on linux when opened file is being modified. Thanks to @PredatorCZ

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(77.48 MB)
    Linux.DEB.zip(7.93 MB)
    Linux.ELF.zip(9.98 MB)
    macOS.DMG.zip(18.48 MB)
    Windows.Installer.zip(16.84 MB)
    Windows.Portable.ZIP.zip(16.97 MB)
  • v1.16.2(Mar 3, 2022)

    Changelog

    Improvements

    • Yara rules are no longer bundled with ImHex directly anymore.
      • Having them bundled made a bunch of different anti virus tools very sad so they once again need to be downloaded manually from the content store
    • Patterns that use types which have been defined through a using statement now properly display their new type name in the pattern data view

    Bug Fixes

    • Fixed searching not working at all
    • Fixed many text boxes not being writable at all

    Pattern Language

    • Fixed crash when using control flow statements without a value
    • Fixed control flow statements not working correctly inside of custom types
    • Fixed crash when using attributes
    • Fixed major memory leak when using the [[format]] attribute
    • Fixed crash when passing a value as a auto parameter to a function

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(22.01 MB)
    Linux.DEB.zip(7.82 MB)
    Linux.ELF.zip(9.71 MB)
    macOS.DMG.zip(18.39 MB)
    Windows.Installer.zip(16.37 MB)
    Windows.Portable.ZIP.zip(16.51 MB)
  • v1.16.1(Mar 1, 2022)

    Changelog

    Addition

    • Added alpha preview to the color picker tool

    Improvements

    • Improved display of the base address setter popup
    • Make std::mem::find_sequence_in_range return -1 when the value couldn't be found

    Bug Fixes

    • Fixed bug where the current offset in the pattern runtime was getting messed up when calling a function
    • Fixed a crash when entering too much text in various input text boxes
    • Fixed a crash when searching for empty strings or bytes

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(22.01 MB)
    Linux.DEB.zip(8.62 MB)
    Linux.ELF.zip(11.38 MB)
    macOS.DMG.zip(19.82 MB)
    Windows.Installer.zip(17.82 MB)
    Windows.Portable.ZIP.zip(18.18 MB)
  • v1.16.0(Mar 1, 2022)

    Changelog

    Addition

    • Added basic editing support to the data inspector
      • Simply double click the type you want to edit and then enter your new value there
      • Not all types can currently be edited but the majority of it can
    • Added custom font and font size setting
    • Added long doubles to the data inspector
    • Added setting where the user can add additional search paths which will be considered throughout ImHex. Thanks a lot to @PredatorCZ
    • Added help text to data processor to tell the user how to start using it

    Pattern Language

    • Massive refactor of the pattern language
      • The entire pattern language now switched to using smart pointers instead of doing manual memory management. This should prevent the majority of memory leaks that were present before.
    • Allow all variable attributes to be applied to types directly so all their instances will have those attributes applied
    • Added #pragma bitfield_order which applies the [[left_to_right]] or [[right_to_left]] attribute to all bitfields by default
    • Added [[single_color]] attribute which forces all children of a pattern to have the same color. Thanks to @PredatorCZ
    • Fixed a crash with using #include. Thanks to @Diadlo
    • Arrays and custom types are now properly getting treated as references so they can be passed to functions without getting weird behaviour
    • Added std::mem::find_sequence_in_range. Thanks a lot to @PredatorCZ
      • This function works the same as std::mem::find_sequence but takes two additional parameters to specify the start and end address of the search performed
    • Fixed off-by-one error when calculating unsized array sizes. Thanks to @Dyddye

    Improvements

    • Automatically disable borderless window mode then an Intel HD GPU is being detected.
      • This prevents the black boarder / offset rendering from appearing which is caused by a bug in the Intel OpenGL driver
      • This detection can be overwritten by manually setting the hex.builtin.setting.interface.force_borderless_window_mode setting to 1 in your settings.json
    • Disable buffering on log files so their full content is always being written to disk
    • Improved error handling of the content store
      • The content store now only tries to list files in folders that are actually writable
      • ImHex will no longer try to download (and fail) to download files into folders without permissions
    • Increased store load timeout to 30 seconds
      • This should allow you to use the content store even if you're behind tons of proxies
    • Improved ImHex restarting user experience
      • Instead of just immediately closing ImHex when a setting was changed that needed a restart, ImHex now correctly prompts if you want to restart it.
    • Content from the ImHex-Patterns repository is now getting shipped by default

    Bug Fixes

    • Fixed opening files with unicode characters in their path
    • Fixed ImHex not loading plugins correctly on first launch
    • Fixed undo points not being created correctly
    • Fixed pasting bytes into ImHex in certain cases
    • Fixed log files being formatted incorrectly
    • Fixed a crash when scrolling through the hex editor too quickly
    • Fixed a bug where editing a byte and then scrolling down would cause all content of the hex editor view to disappear
    • Fixed banner and logo images being corrupted in certain cases. Thanks a lot to @PredatorCZ
    • Fixed circular dependency when building ImHex which caused issues on certain Linux distros
    • Fixed imgui.ini file sometimes being created in the current working directory
    • Fixed crash when trying to read from an empty file
    • Fixed crash when saving projects

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(22.00 MB)
    Linux.DEB.zip(8.61 MB)
    Linux.ELF.zip(11.38 MB)
    macOS.DMG.zip(19.82 MB)
    Windows.Installer.zip(17.82 MB)
    Windows.Portable.ZIP.zip(18.18 MB)
  • v1.15.0(Feb 15, 2022)

    Changelog

    Addition

    • Added better help messages for when Plugins are missing or outdated
    • Added German translation to the Windows plugin
    • Added Japanese translation. Thanks a lot to @gnuhead-chieb
    • Added highlighting to matched yara rules

    Data processor

    • Added Digram, Layered Distribution, Byte Distribution and Image visualizer nodes to the data processor
    • Added selected region node

    Pattern Language

    • Improved integer literal parsing, added hex-representation of floats
    • Allow assigning to global variables inside of structs
    • Allow variable placements inside of structs. This is especially useful for calculated pointers
    • Fixed issues with #pragma once and #include
    • Added [[left_to_right]] and [[right_to_left]] attribute for bitfields
    • Added [[format_entries]] attribute to add a formatting function to all array entries
    • Fixed precedence of comparison operators
    • Allow patterns with nested children (structs, bitfields, arrays and unions) to be selected by clicking on them in the pattern data view
    • Correctly disallow usage of negative values for array and padding sizes
    • Fixed control flow statements (return, continue and break) not being applied correctly
    • Fixed scopes not always being popped correctly. Thanks to @Diadlo

    Improvements

    • Massively refactored ImHex.
      • The main application is now completely free of any ImHex-related code and purely acts as a loader
      • The built-in plugin and libimhex now contain all functionality
    • Improved integer parsing in the pattern language
    • Drastically improved highlighting performance
    • Only show file chooser popup if there's actually files to list
    • Disable bookmark toolbar icon if no bytes are selected
    • Added a dedicated hex input text box

    Bug Fixes

    • Fixed strings still being displayed incorrectly in the pattern data view
    • Fixed pattern source code being deleted wrongly when switching to a different data provider
    • Fixed docking to main window not always working
    • Fixed icon being broken on macOS
    • Fixed incorrect capstone include path
    • Fixed a crash when opening files from the recent files list. Thanks to @Diadlo
    • Fixed crash when opening a read only file on Linux. Thanks to @bigfoot547
    • Fixed hex editor search popup buttons not working correctly. Thanks to @Diadlo
    • Fixed columns in diff view being misaligned. Thanks to @twevs

    unknown


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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(21.96 MB)
    Linux.DEB.zip(7.70 MB)
    Linux.ELF.zip(9.43 MB)
    Linux.Flatpak.zip(10.80 MB)
    macOS.DMG.zip(18.19 MB)
    Windows.Installer.zip(16.16 MB)
    Windows.Portable.ZIP.zip(16.23 MB)
  • v1.14.0(Jan 30, 2022)

    Changelog

    Addition

    • Added function for inserting bytes in the middle of files
    • Added custom encoding files to content store
    • ImHex now automatically writes all log output to a file
    • Added menu items to save and load data processors
    • Added support for copying values from the pattern language console
    • Added RISC-V, M68K, M680X, WebAssembly, MOS65XX and BPF architectures to disassembler

    Improvements

    • Fixed interface being scaled horribly on MacOS
    • Updated Italian translation. Thanks a lot to @CrustySean
    • Updated Chinese translation. Thanks a lot to @xtexChooser
    • Improved how integer values are displayed in the data inspector
    • Improved loading of custom encoding files
    • Splash screen no longer gets drawn on top of all other windows
    • GoTo and Find text boxes are now automatically focused when the window is opened. Execute GoTo or Find function when pressing enter
    • Patches that have the same value as the original value are now getting removed

    Bug Fixes

    • Fixed pasting bytes
    • Fixed Flatpak release not working correctly
    • Fixed ImHex crashing when exiting
    • Fixed many format warnings and security issues
    • Fixed jumping to addresses moving hex editor window to wrong offset
    • Fixed curl SSL verification on MacOS and Linux

    Pattern Language

    • Added parameter packs
      • This allows passing an unlimited amount of parameters to a function
    • All built-in functions have now been to the builtin namespace.
      • This means, to use built-in functions you now need to download and use libstd from the content store and include the correct include file
    • Added [[no_unique_address]] attribute
      • Applying this attribute to a variable makes it not increasing the cursor when placing it ​
    • Added ability to assign a value to the dollar operator to change the current cursor
    • Added assignment operators (+=, -=, *=, etc)
    • Added #pragma once directive
    • Added extra math functions (floor, ceil, round, sin, cos, and more)
    • Fixed local variables not respecting their type's size
    • Fixed color overriding for arrays and structs
    • Fixed [[static]] attribute not correctly optimizing the type
    • Fixed continue and break statements not working correctly in structs
    • Fixed highlighting of arrays
    • Fixed endian setting applied to structs not applying it to their members correctly
    • Fixed strings being displayed wrongly
    • Fixed lexing of sizeof and addressof operator

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(21.90 MB)
    Linux.DEB.zip(7.65 MB)
    Linux.ELF.zip(9.33 MB)
    Linux.Flatpak.zip(10.66 MB)
    macOS.DMG.zip(18.10 MB)
    Windows.Installer.zip(16.08 MB)
    Windows.Portable.ZIP.zip(16.13 MB)
  • v1.13.2(Jan 12, 2022)

    Changelog

    Improvements

    • Undocked windows now appear in the task bar and the window switching interface
    • Improved the look and feel of the hex editor footer bar

    Bug Fixes

    • Fixed default directories not being created correctly when ImHex launches
    • Fixed a crash when closing certain popups such as the about page

    Pattern Language

    • Improve the memory usage of patterns a bunch. This is not the end yet though
    • Fixed various crashes related to passing values and variables to functions
    • The [[format]] attribute can now be used correctly on custom types such as structs or enums
    • Limited Pattern Data UI to only display 50 array entries by default.
      • If you want to see more, double click on the last entry
    • Fixed local variables being able to hold larger values than they should be able to

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(21.69 MB)
    Linux.DEB.zip(7.43 MB)
    Linux.ELF.zip(9.14 MB)
    Linux.Flatpak.zip(10.61 MB)
    macOS.DMG.zip(18.00 MB)
    Windows.Installer.zip(16.04 MB)
    Windows.Portable.ZIP.zip(16.09 MB)
  • v1.13.1(Jan 10, 2022)

    Changelog

    Bug Fixes

    • Fixed passing structs and arrays to custom functions causing their address to be invalid
    • Fixed [[pointer_base]] attribute placing value at invalid addresses
    • Fixed settings screen being way too big
    • Fixed occasional crash when disassembling files

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(21.70 MB)
    Linux.DEB.zip(7.43 MB)
    Linux.ELF.zip(9.14 MB)
    Linux.Flatpak.zip(10.59 MB)
    macOS.DMG.zip(18.00 MB)
    Windows.Installer.zip(16.04 MB)
    Windows.Portable.ZIP.zip(16.09 MB)
  • v1.13.0(Jan 9, 2022)

    Changelog

    Additions

    • Added global progress bar to show currently running tasks
      • This shows all currently running background tasks in one places
      • With this, also a bunch of things that previously were running synchronously have now been made asynchronous.
    • Added link to Discord server to Welcome screen
    • If another ImHex instance is already open on Windows, new files are now automatically opened in that current instance.
      • It's still possible to have multiple instances running. Just open a new instance without opening a file through it.
    • Added ability to clear the recent files list. Thanks to @draftshade

    Pattern Language

    • Added a Environment Variables tab to pattern editor view
      • Environment variables let you specify a value (string, boolean, integer or float). These values can then be accessed again through the use of std::env.
    • Added in/out variables
      • in variables work similar to properties found in e.g Unity. They automatically add an entry with their name to the UI and can be set to some value through the UI. The value will be applied before running the pattern.
      • out variables work the same but simply display whatever value has been assigned to them once the pattern is done running.
    • Dangerous functions such as file IO or HTTP request functions are now gated behind a user confirmation dialog.
      • The first time such a function gets called in the current session, a popup will show up asking the user to confirm or deny running the pattern. The user can then either allow all dangerous function for this session or deny it in which case the popup will show up again the next time the function is called. When denying, execution of the current pattern is aborted.
    • Added break and continue statements
      • These can be used inside of for and while loops but also inside of structs. When an array is created and a break statement is hit, the array will stop growing and keep its current size. When a continue statement is hit, the current entry will be skipped but the array continues to grow until it reaches the end.

    Improvements

    • Added better timeouts for all curl code.
      • If you don't have an internet connection, ImHex will no longer try to check for updates for ages
    • The diff view line spacing is now is the same as the one in the main hex editor view
    • Improved how shortcuts are handled within ImHex

    Bug Fixes

    • Fixed opening files as read-only if user doesn't have write permissions
    • Fixed Windows TTY COM Port view
    • Fixed restarting of ImHex on Linux Thanks to @qxxxb
    • Fixed saving files
    • Fixed reading data from huge files
    • Fixed pattern language [[color]] attribute not working for arrays and structs
    • Fixed IPS patches import and export

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(21.69 MB)
    Linux.DEB.zip(7.43 MB)
    Linux.ELF.zip(9.14 MB)
    Linux.Flatpak.zip(10.58 MB)
    macOS.DMG.zip(18.00 MB)
    Windows.Installer.zip(16.04 MB)
    Windows.Portable.ZIP.zip(16.09 MB)
  • v1.12.1(Dec 16, 2021)

    Changelog

    Improvements

    • Capstone is now bundled with ImHex directly to work around issues with Ubuntu

    Bug Fixes

    • Fixed AppImages
    • Fixed opening zero-sized files
    • Fixed crashes when having yara installed on Linux
    • Fixed yara rule matching yielding invalid addresses
    • Fixed loading a project file crashes ImHex

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(21.87 MB)
    Linux.DEB.zip(7.58 MB)
    Linux.ELF.zip(9.32 MB)
    Linux.Flatpak.zip(10.65 MB)
    macOS.DMG.zip(18.15 MB)
    Windows.Installer.zip(15.98 MB)
    Windows.Portable.ZIP.zip(16.03 MB)
  • v1.12.0(Dec 13, 2021)

    Changelog

    Additions

    • Added GDB Server data provider
      • This allows accessing memory data from running processes, microcontrollers and many other things. ImHex can attach to any running GDB Server over the network
    • Added Raw Disk data provider
      • This allows accessing raw disk images or partitions of devices connected to your computer
    • Pattern Language: Added std::env function and a configuration menu for it
      • This lets you query strings, integers, bools and floats from a list and use them within the script making configuring patterns much easier.
    • Added "File -> Save Pattern..." option to save the current pattern language code

    Improvements

    • Added selection size in hexadecimal to hex editor view
    • Redid data provider reading and writing. This should fix many issues with non-zero base addresses or large files with multiple pages
    • ImHex now uses the native API to open websites so the command line window doesn't pop up every time you're clicking on a link
    • Improved about and settings page
    • Added icon to footer when ImHex is being run with Administrator or root permissions

    Bug Fixes

    • Pattern Language: Fixed variable access inside of pointer pattern yielding invalid results
    • Pattern Language: Fixed indexing of static arrays
    • Fixed bookmark colors not being saved into projects
    • Fixed flickering of the window on Windows if it was full screen
    • Fixed window border and shadow rendering on Windows more consistent with other windows
    • Fixed cursor not changing to the right resize arrow in the window corners

    Rendering issues

    If you're on Windows and you're experiencing any rendering or your Computer's or VM's GPU doesn't support OpenGL, download the opengl32.dll file from the releases below and drop it next to the ImHex application. This will cause the entire UI to be software rendered which will be much heavier on your CPU but may allow you to use ImHex at least.

    Plugin Development

    If you'd like to build a plugin for ImHex, you can do so now easily using the C++ and Rust plugin templates found here:


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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(23.37 MB)
    Linux.DEB.zip(6.78 MB)
    Linux.ELF.zip(8.12 MB)
    Linux.Flatpak.zip(14.63 MB)
    macOS.DMG.zip(17.90 MB)
    Windows.Installer.zip(15.72 MB)
    Windows.Portable.ZIP.zip(15.76 MB)
  • v1.11.2(Dec 4, 2021)

    Changelog

    Additions

    • Added new .deb packages
    • Added new AppImage packages. Thanks to @wardwouts
    • Added number of found strings to string finder view. Thanks to @qdlmcfresh

    Improvements

    • Improved scaling and font rendering on MacOS. Thanks to @DavidBuchanan314
    • ImHex now automatically compiles all magic source files when analyzing a file

    Bug Fixes

    • Fixed libimhex not being included in any Linux builds
    • Fixed diffing view not correctly scrolling all the way down
    • Fixed pattern language variable casting incrementing cursor
    • Fixed crash when ImHex takes longer than 200ms to draw a frame. Thanks to @wardwouts

    Rendering issues

    If you're on Windows and you're experiencing any rendering or your Computer's or VM's GPU doesn't support OpenGL, download the opengl32.dll file from the releases below and drop it next to the ImHex application. This will cause the entire UI to be software rendered which will be much heavier on your CPU but may allow you to use ImHex at least.

    Plugin Development

    If you'd like to build a plugin for ImHex, you can do so now easily using the C++ and Rust plugin templates found here:


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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.AppImage.zip(24.06 MB)
    Linux.DEB.zip(6.83 MB)
    Linux.ELF.zip(8.22 MB)
    Linux.Flatpak.zip(14.68 MB)
    macOS.DMG.zip(17.98 MB)
    opengl32.dll(36.02 MB)
    Windows.Installer.zip(15.81 MB)
    Windows.Portable.ZIP.zip(15.84 MB)
  • v1.11.1(Nov 28, 2021)

    Documentation

    A new documentation for ImHex (mainly the pattern language right now) is in the works and can be found here: https://imhex.werwolv.net/docs. It is a lot more detailed than the one found on the Wiki here and contains information about all the new features as well. Check it out!

    Changelog

    Bug Fixes

    • Fixed window being undecorated on all platforms while it should only be undecorated on Windows.
      • This caused the window to be unmovable and unresizable on platforms other than Windows
    • Fixed crash on Windows when launching ImHex without a terminal window on Windows

    I am so sorry for this mess...


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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.ELF.zip(1.60 MB)
    Linux.Flatpak.zip(9.23 MB)
    macOS.DMG.zip(11.77 MB)
    Windows.Installer.zip(15.68 MB)
    Windows.Portable.ZIP.zip(15.71 MB)
  • v1.11.0(Nov 28, 2021)

    Documentation

    A new documentation for ImHex (mainly the pattern language right now) is in the works and can be found here: https://imhex.werwolv.net/docs. It is a lot more detailed than the one found on the Wiki here and contains information about all the new features as well. Check it out!

    Changelog

    Additions

    • Added back MacOS support! Huge thanks to @Kuruyia for taking the time to fix it!
    • Added basic support to create plugins using Rust instead of C++! Huge thanks to @jam1garner
    • Added border around byte selection to make it more visible with other things highlighted
    • Put maximum FPS limit to 200, added "Unlocked" option
    • Variable names are now displayed when matching yara rules
    • Added regex searching to string finder view. Thanks to @qdlmcfresh

    Pattern Language

    • Added button to stop evaluation prematurely
    • Added main function support. If a function called main exists, it will automatically be called after all other things have been evaluated.
    • Added global variables
    • Allow functions to be called inside structs
    • Added for loops
    • Variables declared in global scope can now be accessed inside custom types.
    • Added padding expressions in bitfields
    • Limited maximum number of patterns that can be created. Can be overridden using the pattern_limit pragma.
    • Allow str types to be used inside function bodies
    • Allow pointer endianess to be changed

    Standard Library

    • Added basic file io built-in functions

    Improvements

    • Improved the command palette
    • Limited numbers of characters being displayed in parsed strings
    • [[name]] attribute no longer changes the variable name but only the name displayed in the pattern data view
    • The pattern code editor now automatically closes (, {, [, " and '

    Bug fixes

    • Fixed titlebar and cursor being misaligned on some computers
    • Fixed nothing being printed to console in release mode, even when console is open
    • Fixed multi variable declarations sometimes causing crashes
    • Fixed endian pragma not working
    • Fixed issue where signed integers weren't correctly sign extended
    • Fixed null bytes being included in read strings
    • Fixed Project file load and save not working correctly
    • Fixed incorrect offsets being accessed when passing custom types to functions
    • Fixed color attribute taking a color value in BGR instead in RGB format
    • Fixed not all include paths being searched correctly
    • Fixed CRC and hash calculations not working properly in all cases. Thanks to @raron for fixing them and writing many unit tests to prevent issues like this in the future
    • Fixed bookmarks closing when changing their name
    • Fixed ImHex crashing after splash screen if no plugins have been loaded
    • Fixed syntax error in code generated "Copy as Rust array" option. Thanks to @paoda
    • Fixed string pattern causing crashes when they are empty

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.ELF.zip(1.60 MB)
    Linux.Flatpak.zip(9.14 MB)
    macOS.DMG.zip(11.77 MB)
    Windows.Installer.zip(15.68 MB)
    Windows.Portable.ZIP.zip(15.71 MB)
  • v1.10.1(Sep 30, 2021)

    Documentation

    A new documentation for ImHex (mainly the pattern language right now) is in the works and can be found here: https://imhex.werwolv.net/docs. It is a lot more detailed than the one found on the Wiki here and contains information about all the new features as well. Check it out!

    Changelog

    Additions

    • Added File Utils
      • File Shredder: Safely deletes files
      • File splitter: Splits a file into multiple smaller files of a given size
      • File combiner: Combines multiple smaller files into a single one
    • Added custom font size setting
      • As this only works for custom fonts, the option is available only by manually editing the hex.builtin.setting.interface.font_size setting in the config file
    • Added support for include files in Yara Rules
    • Pattern Files dropped onto ImHex are now automatically opened in the pattern editor
    • Yara rules and magic databases dropped onto ImHex are now copied to their respective folder

    Pattern Language

    • Added the auto datatype for functions to accept any variable type
    • Added inheritance for structs
    • Moved all std::str functions to std::string since they were not accessible anymore
    • Comments (//, /* */) and preprocessor directives are now ignored inside strings
    • Added [[inline]] attribute to allow struct, union and array members to be displayed without adding deeper nesting
    • Added [[transform]] attribute to allow modifying the a value before it's being accessed through the dot syntax
    • Added [[pointer_base]] attribute to allow making pointers relative from different regions of the file or to calculate a custom offset
    • Fixed unary expressions behaving wrong in parenthesis
    • Fixed boolean mathematical expressions and cast syntax
    • Fixed std::string::substr
    • Fixed enum entry scope resolution
    • Fixed accessing strings as rvalues
    • Fixed pointer offset calculation
    • Fixed recursive types
    • Respect endianess when accessing rvalues
    • Fixed member access inside of an if body

    Standard Library

    • The pattern language now has a proper standard library
    • Added std::http allowing HTTP GET requests from the pattern language
    • Added std::bit for common bit operatons
    • Added C Types files containing C/C++ type definitions (uint32_t, float64_t, etc)
    • Added Rust Types files containing Rust type definitions (i32, f64, etc)
    • Added std::ctype to inspect ASCII character traits
    • Added std::fxpt with fixed point number conversion and arithmetic
    • Added std::limits with minimal and maximal values for different data types
    • Added std::math with common math functions
    • Added std::ptr with helper functions for the [[pointer_base]] attribute
    • Added additional std::string functions. (std::string::parse_int, std::string::to_string, std::string::contains and more)

    Improvements

    • Improved automatic pattern loading based on the MIME type of the currently loaded data
      • This can be turned off in the settings
    • Improved Hex editor Find and Goto popup

    Bug fixes

    • Fixed a major memory leak with Yara Rules
    • Fixed new update available popup appearing, even on latest version
    • Fixed "File -> Close" option crashing
    • Fixed "Open File" shortcut not working

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.ELF.zip(7.97 MB)
    Linux.Flatpak.zip(14.71 MB)
    Windows.Installer.zip(16.73 MB)
    Windows.Portable.ZIP.zip(16.77 MB)
  • v1.10.0(Sep 22, 2021)

    Documentation

    A new documentation for ImHex (mainly the pattern language right now) is in the works and can be found here: https://imhex.werwolv.net/docs. It is a lot more detailed than the one found on the Wiki here and contains information about all the new features as well. Check it out!

    Changelog

    Additions

    • Added support for loading multiple files/data sources simultaneously
    • Added Binary Diffing view
    • Added Quit ImHex option to File menu
    • Added Follow system theme option
    • Added Chinese (Simplified) Localization. Many thanks to @xtexChooser

    Pattern Language

    • Rewrote entire evaluation engine
      • Made Evaluator a lot simpler and faster
      • Function parameters now require a type definition
      • Strings may now be passed to functions using the str type
      • Added check to prevent huge arrays from being generated (can be overridden with a pragma)
      • Added cast expression
      • Added std::format
        • It and std::print now use libfmt / C++'s std::format syntax
      • Allow passing variables of custom types to functions
      • Added multi-variable declaration for functions
      • Many more under-the-hood changess
    • [[format]] attribute to override the way values are displayed
    • Added Unit tests
      • This will hopefully help with things breaking in the pattern language randomly
    • Unnecessary semicolons are now ignored
    • Added std::mem::read_string built-in function

    Improvements

    • **On Windows, resources are now placed in the AppData folder in addition to next to the executable``
    • Fixed format-security warnings. Thanks to @russkel
    • Moved all Hex Editor settings to the settings menu
    • Restructured the settings menu into multiple tabs
    • Fixed footer items jumping around a lot when updating
    • Removed View suffix from all View names in the Views menu. Thanks to @xtexChooser
    • Fixed pattern language evaluator "lagging" behind when Automatic evaluation is active

    Bug fixes

    • Fixed settings not being initialized correctly sometimes and causing crashes
      • No more crashes when settings have been set to invalid values
    • Fixed recent files not updating properly
    • Fixed Resize File option crashing
    • Fixed crash when creating arrays with negative size.
    • Fixed parent keyword not working correctly
    • Fixed constants store page not getting cleared correctly on reload
    • Fixed feedback button URL
    • Fixed padding not working correctly
    • Fixed enums not counting properly
    • Fixed bitfields not respecting endian setting
    • Fixed language selection combo box crashing in some circumstances
    • Fixed settings menu closing when changing language
    • Fixed Regex replacer tool
    • Fixed TTY console crashing if no COM ports are available. Thanks to @xtexChooser


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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.ELF.zip(7.92 MB)
    Linux.Flatpak.zip(14.74 MB)
    Windows.Installer.zip(16.69 MB)
    Windows.Portable.ZIP.zip(16.72 MB)
  • v1.9.0(Sep 10, 2021)

    Documentation

    A new documentation for ImHex (mainly the pattern language right now) is in the works and can be found here: https://imhex.werwolv.net/docs. It is a lot more detailed than the one found on the Wiki here and contains information about all the new features as well. Check it out!

    Changelog

    First of all, there has been made some adjustments to the distributed binaries:

    • Windows releases are now distributed as an installer and a portable version
    • Linux releases are now distributed as a flatpak file and a portable version
      • Thanks to @Calinou for the initial work on this
    • MacOS support has been dropped because it's impossible for me currently to get it working correctly
      • The reason for this is that I have no access to a Mac and development is just frustrating for me
      • The previous release was already horribly broken because of that
      • If anybody would like to help fix ImHex on MacOS, PRs are highly appreciated.

    For people that rather like to build ImHex themselves, there's now a Dockerfile present in the /dist folder of this repository

    Additions

    • Added a TTY console view (Windows only)
    • CTRL + A now selects all bytes in the hex view
    • Added default polynomials to CRC16 and CRC32 initially
    • Added CPU usage to footer (Windows only)
    • Added a new view for looking up common constants
    • Added Create new File option
    • Added Resize file option
    • Added a UNIX permissions calculator tool
    • Added a minimap to the data processor nodes editor
    • Added crash detection and emergency backups
      • If ImHex crashes now, an automatic backup will be created and you will be asked if you want to restore it the next time you open ImHex.
    • Got rid of the window border and title bar on Windows and instead use a custom one
    • Added a toolbar with buttons
    • Added proper interface scaling settings
    • Added tips of the day popup at launch
      • This can be disabled from the popup or in the settings
    • Added a tool to quickly upload files to https://anonfiles.com
    • Added a tool to get short definitions of terms from Wikipedia
    • Added half floats (16 bit floating point numbers) to data inspector
    • Added UTF-8 strings to data inspector
    • Added a built-in download "store" for patterns, libraries, magics and constant databases
      • The store directly accesses https://github.com/WerWolv/ImHex-Patterns so if you'd like to add more items to the store, please make a PR there

    Pattern Language

    • Added while statements for array definitions
    • Added [[hidden]] attribute to hide a variable from the pattern data view
    • Fixed the parent keyword not working properly
    • Added ability to declare custom functions
    • Allow fields in bitfields to be accessed like struct members
    • Added support for namespaces
    • Added support for declaring multiple variables on the same line
      • e.g u32 x, y, z;
    • Moved all built-in functions to the std namespace
      • Most functions also got renamed to use snake_case instead
    • Fixed endianess setting not applying to char16s
    • Added full unicode support by default
      • ImHex now loads unifont on launch
    • Optimize arrays of built-in types
      • This causes e.g huge byte arrays to not take up nearly as much memory anymore
      • The same optimization can be applied to custom structs by marking them with the new [[static]] attribute, however this only works correctly if the layout of the struct is actually static.

    Improvements

    • ImHex now reduces its framerate if there's no events to be processed and doesn't render at all anymore when minimized.
    • Allow ImHex to redraw the screen when resizing for a much smoother experience
    • Added a nice banner to the welcome screen
    • Splash screen, banner and certificates are now embedded into the executable instead of needing to be in the right folder
    • ImHex now makes sure that saved project files always have the .hexproj extension. Thanks to @jam1garner
    • Added a bunch of icons to the welcome screen
    • The splash screen is now DPI aware
    • ImHex now more reliably detects when a file has been modified
    • Floats in the data inspector are now displayed in decimal form if they are reasonably close to 0.0 and in scientific notation otherwise. Thanks to @jam1garner
    • Drastically improved how bookmarks are displaying bytes
    • Added buttons to calculator tool
    • Reduced build times of ImHex quite a bit
    • Massively improved string search memory usage
    • ImHex now searches in the exeutable folder for plugins and resources again on Linux as well as in the system directories

    Bug fixes

    • Fixed advanced decoding separator in the hex view not respecting horizontal scrolling
    • Fixed various issues related to plugin loading
    • Fixed keyboard shortcuts not working
    • ImHex no longer crashes on every exit

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.ELF.zip(7.96 MB)
    Linux.Flatpak.zip(14.58 MB)
    Windows.Installer.zip(16.98 MB)
    Windows.Portable.ZIP.zip(17.02 MB)
  • v1.8.1(May 24, 2021)

    Changelog

    Additions

    • Added a list of all paths used by ImHex to the about page to allow locating them easily on platforms with non-default settings

    Improvements

    • Improve confusing "Quit application" popup text
    • Allow using of system libraries during build instead of the bundled ones. Thanks a lot to @Mailaender
    • Selecting the "Match Selection" checkbox now correctly updates the current region in the Hash and Disassembler view
    • Display correct offsets in hex editor header when base address is not aligned to the number of columns
    • The disassembler now always disassembles all selected bytes and inserts .byte "instructions" when a opcode couldn't be decoded.

    Bug fixes

    • Fix crashes when ImHex is installed in a privileged location (e.g C:/Program Files) and is not launched as Administrator
    • Fix git commit hash and branch not being displayed properly in Release builds
    • Fix broken header text in About popup
    • Fix published name of ImHex to show as "Humanity" in Window's Program and Features window

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.ELF.zip(2.99 MB)
    macOS.DMG.zip(7.70 MB)
    Windows.Installer.zip(11.18 MB)
    Windows.Portable.ZIP.zip(11.18 MB)
  • v1.8.0(May 18, 2021)

    Changelog

    After many months I can finally release a new version. I'm really sorry for the delay but I'm currently working full time on my bachelor's thesis so I don't have much free time to work on ImHex right now. Hopefully in a few weeks again though :)

    Additions

    • Added a new and super fancy splash screen!
      • All resource loading will now be done while this screen is shown
    • Added German localization. Thanks a lot to @tumGER for proof reading!
    • Added Italian localization. Thanks a lot to @CrustySean!
    • Updated ImHex icon with a new one
    • Added FPS limiting
      • ImHex is now less power hungry and lowers its FPS to 5 when the window loses focus
    • Added Paste, Undo and Redo function!
      • This has LONG been overdue
    • Added saving and loading of data processor setups
    • Added data size node to the data processor
    • Added ability to copy values from the data inspector
    • Data overlays now work everywhere
      • This means if the data processor changed the displayed data, this data will also show up in the pattern data view, inspector, analyzer, disassembler and every where else
    • Added parent keyword to the pattern language
      • This allows you to access variables that are found in the parent of the current structure
    • Added array index syntax to r-values in the pattern language
      • This also turned the addressof and sizeof built-in function into operators now so they no longer require ""
    • Added UTF-16 character type and strings to the pattern language
    • Allow nested use of types in the pattern language
    • Added dataSize() function to the pattern language to get the currently loaded data size
    • Added base_address pragma to the pattern language to automatically set the file's base address
    • Loaded plugins are now displayed on the welcome screen
    • Added slider to entropy graph to quickly skip through the file
    • Added Recent Files to File menu
    • Added ability to lock bookmarks so they can't be edited anymore until unlocked
    • Added Font Awesome icons in a few places
    • Use correct folder paths on Mac and Linux instead of looking for everything next to the executable
      • Check the README to know where things are supposed to go now!
    • Added memory usage footer item on Windows
    • Added buffer combine, slice and repeat nodes to the data processor
    • Added currently loaded file name to the window title
    • Added Close File option to the File Menu
    • Added hex editor color highlighting opacity setting

    Improvements

    • Pattern language execution, disassembling, searching and many other things that may take a long time to complete are now run asynchronously
    • Properly open some default views on first launch
    • Greatly improved the Data Analyzer interface with ImPlot
    • ImHex now uses the system file dialog instead of a custom one to open files
    • Improved colors used on the welcome screen
    • Variables placed out of bounds are now discarded instead of causing a error
    • Improved goto command to now respect base addresses

    Bug fixes

    • Fixed multiple severe memory leaks in the pattern language
    • Fixed bookmark names and comments refusing to be changed
    • Fixed color attribute requiring a 0x prefix to understand the value
    • Fixed region selection event only selecting first byte
    • Fixed eval_depth default value being way too low
    • Fixed ternary expressions in the pattern language not working everywhere
    • Fixed bookmark name and comment not being loaded properly from a project file
    • Fixed binary value in base converter being shifted by one
    • Fixed pointers in the pattern language easily crashing ImHex
    • Fixed MIME-based pattern loading popup being almost unusable. Thanks to @ThisALV for making me aware of this

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.ELF.zip(2.99 MB)
    macOS.DMG.zip(7.70 MB)
    Windows.Installer.zip(11.18 MB)
    Windows.Portable.ZIP.zip(11.18 MB)
  • v1.7.0(Feb 18, 2021)

    Changelog

    Additions

    • Pattern language additions
      • Added new built-in functions
        • addressof : Gets the address of a variable
        • nextAfter : Gets the address directly after a variable
        • alignTo : Aligns a value to the provided boundaries
      • Added modulus operator %
      • Added dollar operator $. It acts as a value placeholder and returns the current address within the file
      • Added support for printing 128 bit values
      • Added attributes
        • The attribute syntax is similar to the one found in C++ [[attr("value")]] and allows configuring extra parameters for variables. Currently available are the following:
        • name : Overrides the name displayed in the pattern data view
        • color : Overrides the color displayed in the pattern data view
        • comment : Adds a comment to the variable in the pattern data view
    • Added Light and Classic color mode, changeable in the new settings interface
    • Added data processor
      • This is a huge feature that allows preprocessing of data before it is shown in the hex view through a node system.
      • Currently following features are supported
        • Bitwise operations
        • Boolean operations
        • Control flow (if and co)
        • Base64 and hexadecimal decoding
        • AES decryption (all commonly used modes)
      • Besides this there's also a Nodes API that allows plugin devs to implement their own nodes
    • Added full localization support
      • Through custom plugins, ImHex can now be fully translated to other languages
      • Language selection is done through the settings menu
    • Added custom file encoding features
      • This allows for example ROM hackers to provide so called Thingy files that map byte sequences to UTF-8 characters. These decodings will be displayed to the right of the ASCII pane in the hex view
    • Added set base address option to hex editor
    • Added settings interface
    • Added color picker for Bookmark header and selection color
      • Also added a tooltip window for bookmarks when hovering over their region in the hex view
    • Added keyboard navigation. Thanks to @csinkers
    • Improved suggested pattern popup to now list all available patterns instead of just the first one
    • Added a nice welcome screen
    • Added support for Home, End, PageUp and PageDown keys in hex view
    • Added base converter tool
    • Added footer and an API to add information to it

    Improvements

    • Most popup windows can now be closed with the ESC key
    • All built-in features of ImHex are now refactored into a "builtin" plugin
    • Improved about page to contain actual links and better information
    • Improved error displaying for when files failed to open
    • Switched to mbedtls instead of openssl for crypto operations

    Bug fixes

    • Fixed issues with plugins
    • Fixed signed integer display in data inspector
    • Fixed many crashes especially on Linux
    • Disabled multi-viewport support on Linux as it's just not ready yet to be used there
      • Once ImGui updates and adds better support for Linux, this will be reverted
    • Fixed multiple memory leaks
    • Fixed search feature in hex view
    • Fixed hex view shortcuts
    • Fixed multiple instances of popups only appearing when certain views are open
    • Fixed bookmarks being created and displayed in wrong positions in huge files

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    Linux.ELF.zip(1.57 MB)
    macOS.DMG.zip(4.07 MB)
    Windows.Installer.zip(8.34 MB)
    Windows.Portable.ZIP.zip(8.33 MB)
  • v1.6.1(Jan 11, 2021)

    Changelog

    Additions

    • Added a MSI installer for Windows
      • Thanks a lot to @roblabla for his work on this!
    • Added a console to the pattern window to show evaluator infos, warnings and errors
    • Added assert, warnAssert and print builtin functions
    • Added a right click context menu to the Hex editor window
    • Added engineering display mode to Calculator
    • Various UI improvements

    Bug fixes

    • Fixed findSequence builtin function not working correctly
      • Thanks to @kaero
    • Fixed issues with bitfields, enums and unions
    • Fixed a bunch of crashes when using the pattern language
    • Fixed invalid display of 64 bit values in the pattern data window
    • Fixed bitfield entries displaying an invalid type
    • Fixed empty structs displaying a wrong offset
    • Fixed a off-by-one error that prevented arrays from going to the end of the data
    • Fixed boolean OR operator not working at all
    • Fixed applying of defines
    • Improved UTF-8 display in data inspector
    • Various cmake improvements

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

    GitHub donate button Patreon donate button PayPal donate button

    Source code(tar.gz)
    Source code(zip)
    ImHex_1.6.1_Linux.zip(7.90 MB)
    ImHex_1.6.1_MacOS.zip(11.09 MB)
    ImHex_1.6.1_Windows.zip(18.43 MB)
  • v1.6.0(Jan 8, 2021)

    Changelog

    Additions

    • Added official support for MacOS
      • Made possible by @Thog's amazing contributions to the build system
    • Added Plugin support
      • Allows creation of custom windows, custom entries to the Tools window and custom data providers
      • An example can be found under /plugins/example
    • Rewrote the entire pattern language parser and evaluator
      • The language is now faster, more robust and has much less issues
      • A in-depth guide for all the features in the Pattern Language can now be found in the Wiki
    • Many new features have been added to the pattern language
      • Added mathematical expressions with many operators, bit operators and value access
      • Added a much more featureful way of using values of other variables everywhere where a number is required
      • Added conditional statements for structs and unions (if, else and else if)
      • Added back zero sized array. These will simply be ignored
      • Added scope resolution operator for using enum values in expressions
      • Added built-in functions to find sequences and read values at addresses
      • Added boolean patterns
      • Added unsized character arrays for null-terminated strings
    • Use file memory mapping instead of using standard file IO
      • This greatly increases performance on older computers and brings down background file IO to a minimum.
    • Added Decimal, Hexadecimal and Octal number format options to data inspector
    • Added nightlies for all platforms
      • These are available under the Actions tab
      • Thanks to @Thog for the macOS nightlies
    • Added full DPI scaling
    • Added custom font support
      • To use this, place your font named font.ttf next to the executable
    • Added version info to about page
      • Version info, current commit hash and branch are shown
    • Added selected region information to hex editor footer
    • Various UI/UX improvements

    Bug fixes

    • Greatly improved byte highlighting performance
      • Previously, when scrolling down with a big pattern running, huge slowdowns started happening. The algorithm used for highlighting has been greatly improved to fix this.
    • Fixed opening of files with a non-ASCII file path
    • Fixed crashes with zero-sized arrays
    • Fixed byte selection in read-only files
    • Fixed ImHex refusing to be closed in some circumstances
    • Fixed data inspector not updating in all cases
    • Fixed ASCII characters drawing above the hex editor footer
    • Fixed floating point displaying in pattern data view
    • Fixed pattern data not updating when a new file is loaded
    Source code(tar.gz)
    Source code(zip)
    ImHex_1.6.0_Linux.zip(7.88 MB)
    ImHex_1.6.0_MacOS.zip(11.07 MB)
    ImHex_1.6.0_Windows.zip(13.02 MB)
Owner
WerWolv
I'm a 23 year old embedded systems electronics engineer. Mostly interested in reverse engineering, low-level coding and homebrew development
WerWolv
John Walker 18 Aug 8, 2022
This is new projec based in apps to chat or messages people to people

Stranger This is new projec based in apps to chat or messages people to people Esta aplicacion tendra las siguientes caracteristicas: 1* Es 100% segur

Juan Duque 3 Nov 3, 2021
JeVois-Pro People Counter : Implement people counter on JeVois-Pro Deep Learning Smart Camera

JeVois-Pro People Counter Refer to the OpenCV People Counter article to implement a people counter on the JeVois-Pro Deep Learning Smart Camera. First

On-Device AI Co., Ltd. 1 Nov 10, 2021
Simple text editor in C++ - Simple editor built upon kilo editor.

GUMBO editor Simple editor built upon kilo editor. Still big work in progress although this is just fun side project to learn more C/C++. From 0.0.2->

Filip Ivanušec 3 Sep 15, 2021
This project helps a person park their car in their garage in the same place every time.

garage-parking-sensor Description This project is developed to help a person park their car in their garage in the same place every time. Normally peo

Calvin Pereira 2 Sep 13, 2021
Dexe is a simple hex editor, written in Uxntal.

Dexe Dexe is a simple hex editor, written in Uxntal. Build You must have the Uxn assembler and emulator. uxnasm noodle.tal noodle.rom && uxnemu noodle

DeltaF1 3 Oct 15, 2021
bviplusplus (bvi++) is an ncurses-based hex editor derived from bviplus

bviplusplus (bvi++) Overview bviplusplus (bvi++) is an ncurses-based hex editor derived from bviplus Links Other bviplus derivatives bviplus by Barano

Jeffrey H. Johnson 4 May 9, 2022
This is a tool for software engineers to view,record and analyse data(sensor data and module data) In the process of software development.

![Contributors][Huang Jianyu] Statement 由于工具源码在网上公开,除使用部分开源项目代码外,其余代码均来自我个人,工具本身不包含公司的知识产权,所有与公司有关的内容均从软件包中移除,软件发布遵循Apache协议,任何人均可下载进行修改使用,如使用过程中出现任何问

HuangJianyu 34 May 5, 2022
AI Powered Hacking Environment, A Software For Hackers, Social Engineers, Penetration Testers.

Digital Eagle (Digle) (Note: This Project isn't Finished Yet, it's Under Development, Some Tools will not work) Hell0 W0rld This Project Focus Firstly

Mahmoud Osman (MLT) 107 Apr 18, 2022
Unofficial upload of ChinesePython, a translation of the Python programming language in Chinese [Provided by UrduPython engineers]

# Downloaded from SourceForge: https://sourceforge.net/projects/chinesepython/ # (Uploaded as is) ---------------------------------------------------

Saad A. Bazaz 3 Feb 12, 2022
List of Persian Colors and hex colors for CSS, SCSS, PHP, JS, Python, and Ruby.

Persian Colors (Iranian colors) List of Persian Colors and hex colors for CSS, SCSS, PHP, C++, QML, JS, Python, Ruby and CSharp. Persian colors Name H

Max Base 11 Jul 20, 2022
A short and sweet hex dumper!

██████╗ ██████╗ ███╗ ███╗██████╗ ██╔═══██╗██╔══██╗████╗ ████║██╔══██╗ ██║ ██║██║ ██║██╔████╔██║██████╔╝ ██║▄▄ ██║██║ ██║██║╚██╔╝██║██╔═══

Victor Sarkisov 1 Nov 18, 2021
「⚙️」Simple header for C language to encode and decode hex

「 ⚙️ 」Simple header for C language to encode and decode hex Example: Encode: #include <stdio.h> #include <string.h> #include <stdlib.h> #include "hex.

null 2 Dec 30, 2021
IDA StrikeOut: A Hex-Rays decompiler plugin to patch the Ctree

StrikeOut is an plugin for the Hex-Rays Decompiler. It allows you to delete (hide) statements from the AST, thus simplifying the pseudocode output. This is a useful scenario when you are dealing with lots of junk code or code that don't necessarily increase your understanding of the pseudocode.

Elias Bachaalany 79 Jun 20, 2022
Header only wrapper around Hex-Rays API in C++20.

HexSuite HexSuite is a header only wrapper around Hex-Rays API in C++20 designed to simplify the use of Hex-Rays and IDA APIs by modern C++ features.

Can Bölük 117 Jul 15, 2022
Hex-Rays microcode plugin for automated simplification of Windows Kernel decompilation.

NtRays NtRays is a Hex-Rays microcode plugin for automated simplification of Windows Kernel decompilation. Features Cleanup of instrumentation and sch

Can Bölük 335 Aug 9, 2022
Edit a PF-DTA content in hex on a side-by-side display of EBCDIC character representation.

AS400 Hex Editor Edit a PF-DTA content in hex on a side-by-side display of EBCDIC character representation. Introduction This tool was written to edit

Project Vulcan 6 May 3, 2022
An efficient, small mobile key-value storage framework developed by WeChat. Works on Android, iOS, macOS, Windows, and POSIX.

中文版本请参看这里 MMKV is an efficient, small, easy-to-use mobile key-value storage framework used in the WeChat application. It's currently available on Andr

Tencent 14.9k Aug 11, 2022