🔍 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
Comments
  • [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?

    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
    ...................................................
    xtex@xtex 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
  • [Bug] Flatpak 1.18.2 crashes on open file in Fedora 36

    [Bug] Flatpak 1.18.2 crashes on open file in Fedora 36

    Operating System

    Linux

    What's the issue you encountered?

    Note sure if you control the Flatpak build or if it is a third party.....finding this out is a major flatpak weakness. Please let me know if this is a third party build and I will try to hunt them down.

    However it installs cleanly on Fedora 36 from flathub, and starts the GUI just fine. However when you open a file or try to create a new file, the app crashes with:

    Gtk-Message: 01:31:34.030: Failed to load module "canberra-gtk-module"
    Gtk-Message: 01:31:34.030: Failed to load module "pk-gtk-module"
    Gtk-Message: 01:31:34.031: Failed to load module "canberra-gtk-module"
    Gtk-Message: 01:31:34.031: Failed to load module "pk-gtk-module"
    /usr/include/c++/11.3.0/bits/stl_vector.h:1045: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>; std::vector<_Tp, _Alloc>::reference = unsigned char&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__n < this->size()' failed.
    

    I'm guessing it is missing dependencies in the Flatpak build.

    How can the issue be reproduced?

    Just install from flathub, start app, and try opening a file. To see the error message, start from a commandline with flatpak run.

    ImHex Version

    1.18.2

    ImHex Build Type

    • [ ] Nightly or built from sources

    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 meeas 17
  • 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
    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.

    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                                                                  
                       -`                    user@userArch 
                      .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
  • [Bug] 1.26.0 Crashes on startup on macOS

    [Bug] 1.26.0 Crashes on startup on macOS

    Operating System

    MacOS

    What's the issue you encountered?

    Tried to update to 1.26.0, but this version crashes on startup for me.

    How can the issue be reproduced?

    1. Install 1.26.0
    2. Start imhex
    3. Get crash dialog

    ImHex Version

    1.26.0

    ImHex Build Type

    • [ ] Nightly or built from sources

    Installation type

    Installed from macOS dmg (GPU version) on GitHub

    Additional context?

    macOS 12.6.2

    bug 
    opened by dopplershift 5
  • [Bug]  Diff window gets stuck docked to bottom of screen, unmovable, unclosable

    [Bug] Diff window gets stuck docked to bottom of screen, unmovable, unclosable

    Operating System

    Linux

    What's the issue you encountered?

    Linux Mint 20.3, Cinnamon, (2x Monitors if that is relevant)

    The diff window can get stuck permanently docked to the bottom of the screen. I was just trying to dock it on the right-hand side of the main app window and I guess something went wrong.

    • It can be horizontally resized (from bottom-right) but not vertically.
    • Clicks within the window are ignored and passed through to the main app window (if it is beneath the diff window). This includes clicks in the title bar trying to move it or close it.
    • Menu -> Layout -> Default will temporarily hide the diff window, but it restores to the stuck position again it is re-opened via the app menu.
    • The behavior persists across shutdown and restart.

    How to fix it:

    1. Menu -> Help-> Settings -> Interface -> Enable Multi_window Support -> Uncheck
    2. Restart
    3. Diff Window is now way down in the lower right of the app window -> move it to a normal position
    4. Menu -> Help-> Settings -> Interface -> Enable Multi-window Support -> Re-check
    5. Diff window can now be moved as normal

    How can the issue be reproduced?

    1. Have app in Multi-Window mode
    2. Drag app Window down until it runs into edge of screen and won't go further, but is NOT attached to any of the docking points. Release Mouse button
    3. Window is now stuck and cannot be moved using it's title area or closed using it's X button.

    ImHex Version

    1.25.0

    ImHex Build Type

    • [ ] Nightly or built from sources

    Installation type

    AppImage

    Additional context?

    No response

    bug 
    opened by bbbbbr 0
  • [Bug] Disassembly doesn't start from base offset

    [Bug] Disassembly doesn't start from base offset

    Operating System

    Windows

    What's the issue you encountered?

    The disassembly doesn't start from the chosen base offset. I opened a small Windows/PE .exe and I can't move the start of disassembly as below

    Image 2022-12-21 173308

    Note that however, with a 'Selection' the disassembly is correct

    How can the issue be reproduced?

    1. Open an .exe
    2. Select View, Disassembler
    3. Enter a 'Position' different from zero
    4. The disassembled data keep starting from 0x0

    ImHex Version

    1.25.0

    ImHex Build Type

    • [ ] Nightly or built from sources

    Installation type

    Portable Windows package, just extracted

    Additional context?

    No response

    bug 
    opened by luc0x61 2
  • [Feature] Infineon Tricore 1.31 and 1.6 decompilation support

    [Feature] Infineon Tricore 1.31 and 1.6 decompilation support

    What feature would you like to see?

    [Feature] Infineon Tricore 1.31 and 1.6 decompilation

    How will this feature be useful to you and others?

    Currently use tricore-objdump which is clunky and command line based.

    Request Type

    • [ ] I can provide a PoC for this feature or am willing to work on it myself and submit a PR

    Additional context?

    I can provide tricore-objdump which is open source. There are several repos available on github.

    feature request 
    opened by rollsch 0
  • [Bug]

    [Bug]

    Operating System

    Windows

    What's the issue you encountered?

    Load the bin file into a c array if the size is greater than 65535, it will find the subscript above 65535 is 0, a variable of uint16 should be defined as uint32

    How can the issue be reproduced?

    Load the bin file into a c array if the size is greater than 65535, Copy it to a c file and you'll find it

    ImHex Version

    1.22.0

    ImHex Build Type

    • [ ] Nightly or built from sources

    Installation type

    MSI

    Additional context?

    No response

    bug 
    opened by huang12864 0
  • [Bug] Unicode font broken

    [Bug] Unicode font broken

    Operating System

    Windows

    What's the issue you encountered?

    Unicode font rendering is broken on monospaced unicode font with unicode symbols.

    image

    How can the issue be reproduced?

    load this character encoding Petscii_tbl.txt

    ImHex Version

    imhex-1.25.0-Windows-Portable.zip

    ImHex Build Type

    • [ ] Nightly or built from sources

    Installation type

    Portable zip

    Additional context?

    I used CBM Pro Mono font from: https://style64.org/c64-truetype

    bug 
    opened by grue74 0
Releases(v1.26.0)
  • v1.26.0(Jan 4, 2023)

    Additions

    • Added a "Save Project" menu entry to quickly save the current project without specifying a path
    • Added byte Type distribution, digram and layered distribution plots to information view
    • Added support for pasting byte strings with 0x prefixes or commas inbetween in the hex editor view. Thanks to @Diadlo for their initial implementation of this
    • Added native theming support
      • New themes can now simply be placed in the %IMHEX%/themes folder for them to be loaded
    • Added a Process Memory Provider on Windows
      • This provider can attach to any process and read its entire address space
      • It can also list all available sections and modules, and inject new DLLs

    Improvements

    • ImHex now automatically disables unicode support if the used GPU doesn't have enough VRAM to load all glyphs
    • Debug builds now completely ignore plugins that are not in the plugins folder next to the executable
      • This is useful for debugging issues especially on Linux systems where ImHex has been installed using a package manager
    • The localization system has been completely revamped and now uses simple json files
      • If you plan on adding support for a new language, there's a simple tool to help you with that now. Check out the HACKING.md file for more information
    • Improved speed of entropy graph calculation
    • Improved German translation. Thanks to @123456abcdef
    • Improved Chinese (Simplified) translation. Thanks to @xtexChooser
    • ImHex is now compiled using -Wpedantic to make sure we're using valid ISO C++

    Bug Fixes

    • Fixed building with LTO enabled
    • Fixed patterns not appearing if pattern editor is not visible
    • Fixed a crash when closing a section view while bytes were selected
    • Fixed file provider adding additional zero bytes at the end of the file when saving
    • Fixed issues where the hex editor view would sometimes jump back to the start of the file after searching
    • Fixed searching for negative floating point values
    • Fixed a crash when printing NULL bytes to the pattern console
    • Fixed bookmarks displaying too many bytes in some cases
    • Fixed saving of projects to paths containing non-ASCII characters
    • Fixed various issues where iterators and containers got accessed incorrectly which could lead to issues and crashes
    • Fixed template types being placable through the hex editor right click menu

    Pattern Language

    • Added the ability to modify values in the pattern data view
      • To go into editing mode, double click the value field of a pattern in the pattern data view
      • This works for all built-in types as well as enums by default
      • If you want to make your own types modifyable, use the [[format_write]] attribute
    • Arrays are now displayed without extra indentation if there's less than 512 entries in it
    • Added visualizers
      • Currently available are a basic line plot and an image visualizer
      • They can be used through the [[hex::visualizer]] attribute
    • Added support for anonymous patterns
    • Allow sections to be initialized using strings
    • Added new std::mem::find_string_in_range function
    • str variables can now be used in global scope
    • Patterns views can now be placed from functions using the placement syntax
      • This doesn't add a new pattern to the pattern list but can be used to read/write bytes
    • Added $[123] syntax to read a single byte from the main memory
    • Added support for doc comments
      • These can be parsed and turned into markdown files using the plcli tool
    • Allow attributes to directly use rvalues instead of being limited to string literals only
      • This allows you to for example have pattern names, colors and many other things depend on values in the type they are applied to
    • Fixed passing local variables to functions
    • Fixed array out of bounds checks applying to heap arrays
    • File handles are now cleaned up completely after evaluaton finishes
    • Fixed reading from bitfield fields that have been placed in a different section
    • Fixed [[sealed]] attribute not working correctly with static arrays
    • Improved pattern memory usage
    • Fixed various issues with reference parameters
    • Fixed bitfield fields not respecting endianess settings
    • The [[format]] attribute has been deprecated in favour of the new [[format_read]] and [[format_write]] attributes
    • Fixed some patterns having no name or a black color
    • Fixed broken sign extension of 64 and 128 bit signed variables
    • Fixed dynamic arrays always overriding colors
    • Fixed indexing of strings and wide strings
    • Prevented indexing of non-indexable types

    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(23.19 MB)
    imhex-1.26.0-ArchLinux.pkg.tar.zst(11.02 MB)
    imhex-1.26.0-Fedora-Latest.rpm(8.59 MB)
    imhex-1.26.0-Fedora-Rawhide.rpm(8.59 MB)
    imhex-1.26.0-macOS-NoGPU.dmg(19.61 MB)
    imhex-1.26.0-macOS.dmg(19.59 MB)
    imhex-1.26.0-Ubuntu-22.04.deb(14.66 MB)
    imhex-1.26.0-win64.msi(21.58 MB)
    imhex-1.26.0-Windows-Portable-NoGPU.zip(35.59 MB)
    imhex-1.26.0-Windows-Portable.zip(21.85 MB)
    imhex-1.26.0.AppImage(62.59 MB)
    imhex-1.26.0.AppImage.zsync(219.29 KB)
  • v1.25.0(Nov 14, 2022)

    Additions

    • All tool windows can now be detached
    • Added a RGBA8 image visualizer node to the data processor
    • Added a uninstall target to the build script. Thanks to @iTrooz
    • Added CTRL + SHIFT + Z as a Undo shortcut. Thanks to @iTrooz
    • Added a menu to the Edit menu to automatically place a pattern type at the current selection
    • New files are now created in memory and only turned into actual files when saved
    • Added Paste all option to paste all bytes and resize the provider accordingly if it's too small
    • Added Display Buffer, Display String, Arithmetic Average, Arithmetic Median and Buffer Patch data processor nodes
    • Added a setting to disable loading of unicode characters. Thanks to @iTrooz
    • ImHex now no longer makes any web requests unless specifically instructed to do so by the user. Thanks to @iTrooz
    • Added a new View provider to open a view of section of another provider in a new tab

    Improvements

    • Non-existing folders are now displayed in red in the paths list. Thanks to @iTrooz
    • Visualizer data processor nodes now only show a bigger view of their content if SHIFT is held down
    • Greatly improved various error messages. Thanks to @iTrooz
    • Improved precision of data passed between nodes in the data processor
      • Integers now use a i128 internally instead of a i64 and floats use a long double instead of a float
    • Various pattern editor settings are now unique per provider
    • Yara rule matching can now be interrupted
    • Multiple Yara rules can now be applied at the same time
    • Limited the maximum window name length to 32 characters
    • Improved window scaling on macOS
    • The pattern editor now always inserts spaces instead of tabs

    Bug Fixes

    • Fixed a crash when loading a new provider after evaluating pattern source code
    • Fixed issues when modifying bytes on any pages but the first one
    • Fixed editing not working on some Linux systems
    • Fixed a crash when scrolling to the end of a file that's a multiple of 8 bytes long
    • Fixed an issue that prevented pattern auto loading to work correctly on Windows. Thanks to @Asvel
    • Fixed opening multiple files by dragging them onto the window

    Pattern Language

    • Added custom sections support
      • This feature allows you to dynamically create new memory regions, write data to them and then place patterns in them
      • This is useful for encrypted, compressed or otherwise transformed data
    • Allow casting of strings to integers for magic numbers. For example u32("ABCD") turns into 0x44434241
    • Fixed template types not being correctly cleared on reset
    • Fixed creating global arrays of certain types
    • Fixed a crash when validating infinitely recursive types
    • Fixed issues when returning custom types from inside of a conditional
    • Fixed printing of zero sized arrays
    • Fixed [[hidden]] attributes not applying to top level patterns
    • Evaluation time is now being displayed in the console once execution finished
    • Removed some unneeded overhead
    • Fixed format function memory leak
    • Fixed sizeof(this) yielding incorrect results
    • Fixed some statements not being executed at all in global scope
    • Greatly improved the speed of std::hash::crc32
    • Added std::core::is_valid_enum function to check if a enum has a valid representation

    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(23.06 MB)
    imhex-1.25.0-ArchLinux.pkg.tar.zst(11.18 MB)
    imhex-1.25.0-Fedora-Latest.rpm(8.82 MB)
    imhex-1.25.0-Fedora-Rawhide.rpm(8.69 MB)
    imhex-1.25.0-macOS-NoGPU.dmg(34.52 MB)
    imhex-1.25.0-macOS.dmg(34.51 MB)
    imhex-1.25.0-Ubuntu-22.04.deb(15.05 MB)
    imhex-1.25.0-win64.msi(21.50 MB)
    imhex-1.25.0-Windows-Portable-NoGPU.zip(35.51 MB)
    imhex-1.25.0-Windows-Portable.zip(21.77 MB)
    imhex-1.25.0.AppImage(64.87 MB)
    imhex-1.25.0.AppImage.zsync(227.27 KB)
  • v1.24.3(Oct 12, 2022)

    Additions

    • Added support for editing the ASCII characters in the hex editor view
    • Added new Float <-> Buffer conversion nodes to the data processor
    • Added new Pattern Language Out variable access node to the pattern processor

    Bug Fixes

    • Fixed a occasional crash when opening providers
    • Fixed 64 bit hex data visualizer only displaying 32 bit values
    • Fixed some gaps in the hex editor cell background highlighting
    • Fixed data inspector still displaying entries despite no bytes being selected
    • Fixed invalid axis labels of the plots in the data analyzer view

    Pattern Language

    • Fixed an issue that caused attributes to not work correctly
    • Fixed non-type template parameters in using declarations
    • Fixed error in formatting function always causing a recursion error after a while

    Previous Changelog

    Additions

    • Patterns that overlap with the selected bytes in the hex editor view are now highlighted in blue in the pattern data view
    • It's now possible to add custom Data Inspector entries using the Pattern Language
      • To do this, create a new file in the %IMHEX_PATH%/scripts/inspectors folder with the .pat extension and enter you pattern code there
      • Each value that has been placed in memory using the @ operator will be added to the list
      • To get the current selected offset, use the $ operator
    • Added numeric value searching to Find View
    • Added unique selection and scrolling position support for each provider
      • This means when you scroll somewhere and select some data in a file, then switch to a different one and select some bytes there, the selection and scroll position in the original file will still remain where they were
    • Added icons next to all textfields
      • These display what kind of input this textfield supports. For example: Text, Numbers, Mathematical expressions, Regex, Binary Pattern, etc.
    • Modified bytes are now being highlighted in red in the hex editor view until they are saved
    • Added Wide Strings (UTF-16) to the Data Inspector
    • Added Half Floats to the Data Inspector
    • Bookmarks can now be reordered by dragging them around
    • The color picker in Bookmarks now has a bunch of predefined colors that can be selected by clicking on them
    • Added a Jump to option to the Edit menu that allows scrolling directly to the currently selected region
    • Added option to the settings menu to explicitly disable multi window support
      • This is useful for systems that either don't properly support Multi Window support or for people using Tiled Window Managers which get very confused by these extra windows.
      • If you can't open ImHex properly because of this, you can also manually set the hex.builtin.setting.interface.multi_windows setting in the config file to 0
    • Added new options to the settings menu to adjust the padding between individual bytes and the padding between ASCII characters in the hex editor view

    Improvements

    • Reduced File / Provider loading time to basically zero
    • Completely removed all lag that happened when typing in the pattern editor
      • This extends out to other things that were doing work asynchronously (Disassembler, Yara, Analyzer, etc.)
    • Improved startup time of ImHex by about 50%
    • Huge pattern arrays will now be split up into chunks of 512 entries in the Pattern Data View to make them easier to navigate.
    • Properly display an error message when a Project failed to load
    • Display an error message with potential fixes if the file dialog couldn't be opened on Linux. Thanks to @iTrooz
    • The File Provider no longer keeps files open when it doesn't need to
      • This means other applications that support it, can now open files that are already open in ImHex
    • Improved selection and drag scrolling in the Hex Editor View
    • ASCII Table background colors are no longer hardcoded so it looks correct in Light Mode
    • Limited the maximum number of characters that can be displayed in the tooltip that shows up when hovering over a pattern in the Hex editor view to prevent the tooltip from growing indefinitely
    • Properly center current selection when jumping to it

    Bug Fixes

    • Fixed Copy-As Python Array putting a semicolon at the end of the data
    • Fixed issues when multiple web requests are running simultaneously
    • Fixed issue where file inspector failed to read over page boundaries
    • Fixed crash when the hex editor view data visualizer cell byte size was not evenly divisible by the column count
    • Fixed many issues and crashes with the Calculator Tool
    • Fixed various UTF-8 path bugs that prevented ImHex to work correctly on systems that have non-ASCII characters in their paths
    • Fixed issue where the data processor nodes did not remember their position correctly when switching to a different provider
    • Fixed potential crashes when trying to paste clipboard data when it's empty
    • Fixed flickering of the Pattern Data View when executing a pattern
    • Fixed opening files with unicode names through the command line
    • Fixed a crash when closing ImHex after launching it through the terminal
    • Fixed scrolling issues and improved the whole scrolling system overall
    • Fixed pattern evaluator not exiting evaluating state correctly in some cases
    • Fixed new lines in wide strings messing up the data inspector view layout
    • Fixed highlighting of separator column in the hex editor view

    Pattern Language

    • Added Templates for structs, unions and using declarations
    • Break and Continue can now be used outside of arrays to terminate stop evaluating the current type
    • Return can now be used anywhere outside of functions to terminate execution of the entire pattern
    • Added function to get current hex editor selection as an ImHex Extension
    • Added function to demangle a string as an ImHex Extension
    • Added support for global arrays
    • Added non-type template parameters
    • Allow custom types to be used inside of sizeof operators
      • This might yield incorrect results if the type's size is not static
    • Added better error messages when parsing invalid struct, bitfield and if statements. Thanks to @Calcoph
    • Fixed many many issues with templates
    • Fixed using control flow statements inside of conditionals
    • Fixed padding fields being displayed in bitfields
    • Allow use of compound statements in global scope
    • The ternary operator no longer enforces exactly the same types for the second and third operand
    • Fixed highlighting of arrays of arrays
    • Fixed bitfield order not resetting correctly
    • Fixed indexing of strings
    • Prevent the user from indexing other non-array types
    • Fixed a crash when using break in an unsized array
    • Fixed std::mem::read_signed yielding invalid values
    • Fixed formatting of signed hex values
    • Fixed accessing of local arrays
    • Fixed string pattern not correctly reading all bytes
    • Fixed a few out of bounds indexing errors in the Preprocessor
    • Fixed reading from local float variables
    • Fixed a crash when passing invalid values to the std::time library
    • Fixed issue where while-sized static arrays could expand indefinitely beyond the end of the data
    • Fixed crash with empty dynamic arrays

    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(23.19 MB)
    imhex-1.24.3-ArchLinux.pkg.tar.zst(11.07 MB)
    imhex-1.24.3-Fedora-Latest.rpm(8.74 MB)
    imhex-1.24.3-Fedora-Rawhide.rpm(8.63 MB)
    imhex-1.24.3-macOS-NoGPU.dmg(20.93 MB)
    imhex-1.24.3-macOS.dmg(20.91 MB)
    imhex-1.24.3-Ubuntu-22.04.deb(14.94 MB)
    imhex-1.24.3-win64.msi(21.36 MB)
    imhex-1.24.3-Windows-Portable-NoGPU.zip(35.38 MB)
    imhex-1.24.3-Windows-Portable.zip(21.64 MB)
    imhex-1.24.3.AppImage(64.80 MB)
    imhex-1.24.3.AppImage.zsync(227.04 KB)
  • v1.24.2(Oct 10, 2022)

    Improvements

    • Many CI improvements once again. Thanks a lot to @iTrooz

    Bug Fixes

    • Fixed rendering of selection in Hex Editor view

    Pattern Language

    • Fixed an incorrect error message with addressof and sizeof operators

    Previous Changelog

    Additions

    • Patterns that overlap with the selected bytes in the hex editor view are now highlighted in blue in the pattern data view
    • It's now possible to add custom Data Inspector entries using the Pattern Language
      • To do this, create a new file in the %IMHEX_PATH%/scripts/inspectors folder with the .pat extension and enter you pattern code there
      • Each value that has been placed in memory using the @ operator will be added to the list
      • To get the current selected offset, use the $ operator
    • Added numeric value searching to Find View
    • Added unique selection and scrolling position support for each provider
      • This means when you scroll somewhere and select some data in a file, then switch to a different one and select some bytes there, the selection and scroll position in the original file will still remain where they were
    • Added icons next to all textfields
      • These display what kind of input this textfield supports. For example: Text, Numbers, Mathematical expressions, Regex, Binary Pattern, etc.
    • Modified bytes are now being highlighted in red in the hex editor view until they are saved
    • Added Wide Strings (UTF-16) to the Data Inspector
    • Added Half Floats to the Data Inspector
    • Bookmarks can now be reordered by dragging them around
    • The color picker in Bookmarks now has a bunch of predefined colors that can be selected by clicking on them
    • Added a Jump to option to the Edit menu that allows scrolling directly to the currently selected region
    • Added option to the settings menu to explicitly disable multi window support
      • This is useful for systems that either don't properly support Multi Window support or for people using Tiled Window Managers which get very confused by these extra windows.
      • If you can't open ImHex properly because of this, you can also manually set the hex.builtin.setting.interface.multi_windows setting in the config file to 0
    • Added new options to the settings menu to adjust the padding between individual bytes and the padding between ASCII characters in the hex editor view

    Improvements

    • Reduced File / Provider loading time to basically zero
    • Completely removed all lag that happened when typing in the pattern editor
      • This extends out to other things that were doing work asynchronously (Disassembler, Yara, Analyzer, etc.)
    • Improved startup time of ImHex by about 50%
    • Huge pattern arrays will now be split up into chunks of 512 entries in the Pattern Data View to make them easier to navigate.
    • Properly display an error message when a Project failed to load
    • Display an error message with potential fixes if the file dialog couldn't be opened on Linux. Thanks to @iTrooz
    • The File Provider no longer keeps files open when it doesn't need to
      • This means other applications that support it, can now open files that are already open in ImHex
    • Improved selection and drag scrolling in the Hex Editor View
    • ASCII Table background colors are no longer hardcoded so it looks correct in Light Mode
    • Limited the maximum number of characters that can be displayed in the tooltip that shows up when hovering over a pattern in the Hex editor view to prevent the tooltip from growing indefinitely
    • Properly center current selection when jumping to it

    Bug Fixes

    • Fixed Copy-As Python Array putting a semicolon at the end of the data
    • Fixed issues when multiple web requests are running simultaneously
    • Fixed issue where file inspector failed to read over page boundaries
    • Fixed crash when the hex editor view data visualizer cell byte size was not evenly divisible by the column count
    • Fixed many issues and crashes with the Calculator Tool
    • Fixed various UTF-8 path bugs that prevented ImHex to work correctly on systems that have non-ASCII characters in their paths
    • Fixed issue where the data processor nodes did not remember their position correctly when switching to a different provider
    • Fixed potential crashes when trying to paste clipboard data when it's empty
    • Fixed flickering of the Pattern Data View when executing a pattern
    • Fixed opening files with unicode names through the command line
    • Fixed a crash when closing ImHex after launching it through the terminal
    • Fixed scrolling issues and improved the whole scrolling system overall
    • Fixed pattern evaluator not exiting evaluating state correctly in some cases
    • Fixed new lines in wide strings messing up the data inspector view layout
    • Fixed highlighting of separator column in the hex editor view

    Pattern Language

    • Added Templates for structs, unions and using declarations
    • Break and Continue can now be used outside of arrays to terminate stop evaluating the current type
    • Return can now be used anywhere outside of functions to terminate execution of the entire pattern
    • Added function to get current hex editor selection as an ImHex Extension
    • Added function to demangle a string as an ImHex Extension
    • Added support for global arrays
    • Added non-type template parameters
    • Allow custom types to be used inside of sizeof operators
      • This might yield incorrect results if the type's size is not static
    • Added better error messages when parsing invalid struct, bitfield and if statements. Thanks to @Calcoph
    • Fixed many many issues with templates
    • Fixed using control flow statements inside of conditionals
    • Fixed padding fields being displayed in bitfields
    • Allow use of compound statements in global scope
    • The ternary operator no longer enforces exactly the same types for the second and third operand
    • Fixed highlighting of arrays of arrays
    • Fixed bitfield order not resetting correctly
    • Fixed indexing of strings
    • Prevent the user from indexing other non-array types
    • Fixed a crash when using break in an unsized array
    • Fixed std::mem::read_signed yielding invalid values
    • Fixed formatting of signed hex values
    • Fixed accessing of local arrays
    • Fixed string pattern not correctly reading all bytes
    • Fixed a few out of bounds indexing errors in the Preprocessor
    • Fixed reading from local float variables
    • Fixed a crash when passing invalid values to the std::time library
    • Fixed issue where while-sized static arrays could expand indefinitely beyond the end of the data
    • Fixed crash with empty dynamic arrays

    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(23.19 MB)
    imhex-1.24.2-ArchLinux.pkg.tar.zst(11.05 MB)
    imhex-1.24.2-Fedora-Latest.rpm(8.73 MB)
    imhex-1.24.2-Fedora-Rawhide.rpm(8.59 MB)
    imhex-1.24.2-macOS-NoGPU.dmg(20.94 MB)
    imhex-1.24.2-macOS.dmg(20.93 MB)
    imhex-1.24.2-Ubuntu-22.04.deb(14.93 MB)
    imhex-1.24.2-win64.msi(21.36 MB)
    imhex-1.24.2-Windows-Portable-NoGPU.zip(35.37 MB)
    imhex-1.24.2-Windows-Portable.zip(21.63 MB)
    imhex-1.24.2.AppImage(64.79 MB)
    imhex-1.24.2.AppImage.zsync(227.00 KB)
  • v1.24.1(Oct 10, 2022)

    Additions

    • Patterns that overlap with the selected bytes in the hex editor view are now highlighted in blue in the pattern data view

    Improvements

    • Properly center current selection when jumping to it

    Bug Fixes

    • Fixed scrolling issues and improved the whole scrolling system overall
    • Fixed pattern evaluator not exiting evaluating state correctly in some cases
    • Fixed new lines in wide strings messing up the data inspector view layout
    • Fixed highlighting of separator column in the hex editor view

    Pattern Language

    • Added non-type template parameters
    • Allow custom types to be used inside of sizeof operators
      • This might yield incorrect results if the type's size is not static
    • Added better error messages when parsing invalid struct, bitfield and if statements. Thanks to @Calcoph
    • Fixed many many issues with templates
    • Fixed using control flow statements inside of conditionals
    • Fixed padding fields being displayed in bitfields

    Previous Changelog

    Additions

    • It's now possible to add custom Data Inspector entries using the Pattern Language
      • To do this, create a new file in the %IMHEX_PATH%/scripts/inspectors folder with the .pat extension and enter you pattern code there
      • Each value that has been placed in memory using the @ operator will be added to the list
      • To get the current selected offset, use the $ operator
    • Added numeric value searching to Find View
    • Added unique selection and scrolling position support for each provider
      • This means when you scroll somewhere and select some data in a file, then switch to a different one and select some bytes there, the selection and scroll position in the original file will still remain where they were
    • Added icons next to all textfields
      • These display what kind of input this textfield supports. For example: Text, Numbers, Mathematical expressions, Regex, Binary Pattern, etc.
    • Modified bytes are now being highlighted in red in the hex editor view until they are saved
    • Added Wide Strings (UTF-16) to the Data Inspector
    • Added Half Floats to the Data Inspector
    • Bookmarks can now be reordered by dragging them around
    • The color picker in Bookmarks now has a bunch of predefined colors that can be selected by clicking on them
    • Added a Jump to option to the Edit menu that allows scrolling directly to the currently selected region
    • Added option to the settings menu to explicitly disable multi window support
      • This is useful for systems that either don't properly support Multi Window support or for people using Tiled Window Managers which get very confused by these extra windows.
      • If you can't open ImHex properly because of this, you can also manually set the hex.builtin.setting.interface.multi_windows setting in the config file to 0
    • Added new options to the settings menu to adjust the padding between individual bytes and the padding between ASCII characters in the hex editor view

    Improvements

    • Reduced File / Provider loading time to basically zero
    • Completely removed all lag that happened when typing in the pattern editor
      • This extends out to other things that were doing work asynchronously (Disassembler, Yara, Analyzer, etc.)
    • Improved startup time of ImHex by about 50%
    • Huge pattern arrays will now be split up into chunks of 512 entries in the Pattern Data View to make them easier to navigate.
    • Properly display an error message when a Project failed to load
    • Display an error message with potential fixes if the file dialog couldn't be opened on Linux. Thanks to @iTrooz
    • The File Provider no longer keeps files open when it doesn't need to
      • This means other applications that support it, can now open files that are already open in ImHex
    • Improved selection and drag scrolling in the Hex Editor View
    • ASCII Table background colors are no longer hardcoded so it looks correct in Light Mode
    • Limited the maximum number of characters that can be displayed in the tooltip that shows up when hovering over a pattern in the Hex editor view to prevent the tooltip from growing indefinitely

    Bug Fixes

    • Fixed Copy-As Python Array putting a semicolon at the end of the data
    • Fixed issues when multiple web requests are running simultaneously
    • Fixed issue where file inspector failed to read over page boundaries
    • Fixed crash when the hex editor view data visualizer cell byte size was not evenly divisible by the column count
    • Fixed many issues and crashes with the Calculator Tool
    • Fixed various UTF-8 path bugs that prevented ImHex to work correctly on systems that have non-ASCII characters in their paths
    • Fixed issue where the data processor nodes did not remember their position correctly when switching to a different provider
    • Fixed potential crashes when trying to paste clipboard data when it's empty
    • Fixed flickering of the Pattern Data View when executing a pattern
    • Fixed opening files with unicode names through the command line
    • Fixed a crash when closing ImHex after launching it through the terminal

    Pattern Language

    • Added Templates for structs, unions and using declarations
    • Break and Continue can now be used outside of arrays to terminate stop evaluating the current type
    • Return can now be used anywhere outside of functions to terminate execution of the entire pattern
    • Added function to get current hex editor selection as an ImHex Extension
    • Added function to demangle a string as an ImHex Extension
    • Added support for global arrays
    • Allow use of compound statements in global scope
    • The ternary operator no longer enforces exactly the same types for the second and third operand
    • Fixed highlighting of arrays of arrays
    • Fixed bitfield order not resetting correctly
    • Fixed indexing of strings
    • Prevent the user from indexing other non-array types
    • Fixed a crash when using break in an unsized array
    • Fixed std::mem::read_signed yielding invalid values
    • Fixed formatting of signed hex values
    • Fixed accessing of local arrays
    • Fixed string pattern not correctly reading all bytes
    • Fixed a few out of bounds indexing errors in the Preprocessor
    • Fixed reading from local float variables
    • Fixed a crash when passing invalid values to the std::time library
    • Fixed issue where while-sized static arrays could expand indefinitely beyond the end of the data
    • Fixed crash with empty dynamic arrays

    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(23.19 MB)
    imhex-1.24.1-ArchLinux.pkg.tar.zst(11.11 MB)
    imhex-1.24.1-Fedora-Latest.rpm(8.74 MB)
    imhex-1.24.1-Fedora-Rawhide.rpm(8.64 MB)
    imhex-1.24.1-macOS-NoGPU.dmg(20.95 MB)
    imhex-1.24.1-macOS.dmg(20.93 MB)
    imhex-1.24.1-Ubuntu-22.04.deb(14.93 MB)
    imhex-1.24.1-win64.msi(21.36 MB)
    imhex-1.24.1-Windows-Portable-NoGPU.zip(35.37 MB)
    imhex-1.24.1-Windows-Portable.zip(21.63 MB)
    imhex-1.24.1.AppImage(83.77 MB)
    imhex-1.24.1.AppImage.zsync(293.40 KB)
  • v1.24.0(Oct 8, 2022)

    Additions

    • It's now possible to add custom Data Inspector entries using the Pattern Language
      • To do this, create a new file in the %IMHEX_PATH%/scripts/inspectors folder with the .pat extension and enter you pattern code there
      • Each value that has been placed in memory using the @ operator will be added to the list
      • To get the current selected offset, use the $ operator
    • Added numeric value searching to Find View
    • Added unique selection and scrolling position support for each provider
      • This means when you scroll somewhere and select some data in a file, then switch to a different one and select some bytes there, the selection and scroll position in the original file will still remain where they were
    • Added icons next to all textfields
      • These display what kind of input this textfield supports. For example: Text, Numbers, Mathematical expressions, Regex, Binary Pattern, etc.
    • Modified bytes are now being highlighted in red in the hex editor view until they are saved
    • Added Wide Strings (UTF-16) to the Data Inspector
    • Added Half Floats to the Data Inspector
    • Bookmarks can now be reordered by dragging them around
    • The color picker in Bookmarks now has a bunch of predefined colors that can be selected by clicking on them
    • Added a Jump to option to the Edit menu that allows scrolling directly to the currently selected region
    • Added option to the settings menu to explicitly disable multi window support
      • This is useful for systems that either don't properly support Multi Window support or for people using Tiled Window Managers which get very confused by these extra windows.
      • If you can't open ImHex properly because of this, you can also manually set the hex.builtin.setting.interface.multi_windows setting in the config file to 0
    • Added new options to the settings menu to adjust the padding between individual bytes and the padding between ASCII characters in the hex editor view

    Improvements

    • Reduced File / Provider loading time to basically zero
    • Completely removed all lag that happened when typing in the pattern editor
      • This extends out to other things that were doing work asynchronously (Disassembler, Yara, Analyzer, etc.)
    • Improved startup time of ImHex by about 50%
    • Huge pattern arrays will now be split up into chunks of 512 entries in the Pattern Data View to make them easier to navigate.
    • Properly display an error message when a Project failed to load
    • Display an error message with potential fixes if the file dialog couldn't be opened on Linux. Thanks to @iTrooz
    • The File Provider no longer keeps files open when it doesn't need to
      • This means other applications that support it, can now open files that are already open in ImHex
    • Improved selection and drag scrolling in the Hex Editor View
    • ASCII Table background colors are no longer hardcoded so it looks correct in Light Mode
    • Limited the maximum number of characters that can be displayed in the tooltip that shows up when hovering over a pattern in the Hex editor view to prevent the tooltip from growing indefinitely

    Bug Fixes

    • Fixed Copy-As Python Array putting a semicolon at the end of the data
    • Fixed issues when multiple web requests are running simultaneously
    • Fixed issue where file inspector failed to read over page boundaries
    • Fixed crash when the hex editor view data visualizer cell byte size was not evenly divisible by the column count
    • Fixed many issues and crashes with the Calculator Tool
    • Fixed various UTF-8 path bugs that prevented ImHex to work correctly on systems that have non-ASCII characters in their paths
    • Fixed issue where the data processor nodes did not remember their position correctly when switching to a different provider
    • Fixed potential crashes when trying to paste clipboard data when it's empty
    • Fixed flickering of the Pattern Data View when executing a pattern
    • Fixed opening files with unicode names through the command line
    • Fixed a crash when closing ImHex after launching it through the terminal

    Pattern Language

    • Added Templates for structs, unions and using declarations
    • Break and Continue can now be used outside of arrays to terminate stop evaluating the current type
    • Return can now be used anywhere outside of functions to terminate execution of the entire pattern
    • Added function to get current hex editor selection as an ImHex Extension
    • Added function to demangle a string as an ImHex Extension
    • Added support for global arrays
    • Allow use of compound statements in global scope
    • The ternary operator no longer enforces exactly the same types for the second and third operand
    • Fixed highlighting of arrays of arrays
    • Fixed bitfield order not resetting correctly
    • Fixed indexing of strings
    • Prevent the user from indexing other non-array types
    • Fixed a crash when using break in an unsized array
    • Fixed std::mem::read_signed yielding invalid values
    • Fixed formatting of signed hex values
    • Fixed accessing of local arrays
    • Fixed string pattern not correctly reading all bytes
    • Fixed a few out of bounds indexing errors in the Preprocessor
    • Fixed reading from local float variables
    • Fixed a crash when passing invalid values to the std::time library
    • Fixed issue where while-sized static arrays could expand indefinitely beyond the end of the data
    • Fixed crash with empty dynamic arrays

    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(23.18 MB)
    imhex-1.24.0-ArchLinux.pkg.tar.zst(11.06 MB)
    imhex-1.24.0-Fedora-Latest.rpm(8.73 MB)
    imhex-1.24.0-Fedora-Rawhide.rpm(8.59 MB)
    imhex-1.24.0-macOS-NoGPU.dmg(20.91 MB)
    imhex-1.24.0-macOS.dmg(20.89 MB)
    imhex-1.24.0-Ubuntu-22.04.deb(14.93 MB)
    imhex-1.24.0-win64.msi(21.35 MB)
    imhex-1.24.0-Windows-Portable-NoGPU.zip(35.36 MB)
    imhex-1.24.0-Windows-Portable.zip(21.62 MB)
    imhex-1.24.0.AppImage(83.76 MB)
    imhex-1.24.0.AppImage.zsync(293.38 KB)
  • v1.23.2(Sep 17, 2022)

    Changelog

    Bug Fixes

    • Actually fixed ImHex crashing on some Linux systems when trying to open a file

    Previous Changelog

    Additions

    • Added many new Copy As... options
      • Current Address
      • Base64
      • Lua array
      • Go array
      • Crystal array
      • Swift arrary
      • Pascal array
    • Added zsync file to releases. Thanks a lot to @iTrooz
      • This file can be used to auto-update the AppImage
    • Added "Require full match" toggle to Regex finder
    • Added reset button to Find view to clear the currently found items
    • Pattern Database files are now included by default in the Flatpak build. Thanks to @ColinKinloch
    • Added support to open multiple files at once through the command line

    Improvements

    • Improved formatting of ASCII Text area and HTML Copy as... output
    • Disabled FPS displaying in release builds
    • Improved rendering of patterns in the pattern data view
    • Removed unused space in hex editor footer
    • Improved load times of ImHex on some systems
    • Pattern evaluation can now be aborted with the task stop button

    Bug Fixes

    • Fixed crash when resizing a file
    • Fixed graphical artifacts on welcome screen footer
    • Fixed welcome screen settings button only working sometimes
    • Fixed rendering of pattern array entries
    • Fixed searching for invalid sequences in the Find view to yield way too many results
    • Fixed sequence escape codes being parsed incorrectly
    • Fixed opening files in an existing instance of ImHex not always working correctly
    • Fixed the dangerous function popup reappearing constantly

    Pattern Language

    • Added support for enum ranges
      • If values in a range have the same meaning, you can now use MY_ENUM_VALUE = 0x10 ... 0x20 to have the formatter display all values in that range as such.
    • Added references
      • If you need to use a variable in a function without copying it onto the heap (for performance reasons or if you have pointers inside your structure), you can now use the ref keyword before your parameter type to turn it into a reference.
    • Added #ifdef, #ifndef, #endif, #error and #define without a value
      • Applications can also set their own global defines, for example ImHex sets the __IMHEX__ and __IMHEX_VERSION__ macro by default
    • Allow using declarations to change the name of builtin types
    • Added optional endian parameter to std::mem::read_unsigned and std::mem::read_signed
    • Improved Lexer, Parser and Preprocessor performance
    • Massively improved function call and formatting performance
    • Improved color highlighting
    • Improved bitfield value visualization
      • Bitfields are now displayed as { FLAG_A | FLAG_B | VALUE(123) }
    • Fixed out of bounds read when having a comment at the end of the file
    • Fixed local variable assignments not always working correctly
    • Fixed cast issues when passing enums to functions
    • Fixed pattern limit from applying after evaluation has already finished
    • Fixed #pargma once not working correctly
    • Fixed subtraction of two unsigned values yielding unexpected results
    • Fixed stringifying variables not outputting their formatted value
    • Fixed casts incrementing current offset
    • Fixed reading bytes when a non-zero base address is being used
    • Fixed parsing of attributes following r-values

    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.87 MB)
    imhex-1.23.2-ArchLinux.pkg.tar.zst(11.21 MB)
    imhex-1.23.2-Fedora-Latest.rpm(8.86 MB)
    imhex-1.23.2-Fedora-Rawhide.rpm(8.80 MB)
    imhex-1.23.2-macOS-NoGPU.dmg(21.03 MB)
    imhex-1.23.2-macOS.dmg(21.01 MB)
    imhex-1.23.2-Ubuntu-22.04.deb(15.06 MB)
    imhex-1.23.2-win64.msi(21.16 MB)
    imhex-1.23.2-Windows-Portable-NoGPU.zip(35.17 MB)
    imhex-1.23.2-Windows-Portable.zip(21.43 MB)
    imhex-1.23.2.AppImage(83.29 MB)
    imhex-1.23.2.AppImage.zsync(291.74 KB)
  • v1.23.1(Sep 17, 2022)

    Changelog

    Improvements

    • Pre-fill the size field of the "Remove bytes" popup with the current selection size

    Bug Fixes

    • Fixed ImHex crashing on some Linux systems when trying to open a file
    • Fixed "Copy As..." function (but also others) having their second-to-last byte wrong

    Pattern Language

    • TONS of speed improvements
      • Prevent debug mode string formatting from occurring on non-debug mode
      • Improved stringification of pattern performance
      • Improved function calling performance
      • Improved flattening performance of static arrays
      • Prevent accessing values through the dot syntax unnecessarily copying data

    Previous Changelog

    Additions

    • Added many new Copy As... options
      • Current Address
      • Base64
      • Lua array
      • Go array
      • Crystal array
      • Swift arrary
      • Pascal array
    • Added zsync file to releases. Thanks a lot to @iTrooz
      • This file can be used to auto-update the AppImage
    • Added "Require full match" toggle to Regex finder
    • Added reset button to Find view to clear the currently found items
    • Pattern Database files are now included by default in the Flatpak build. Thanks to @ColinKinloch
    • Added support to open multiple files at once through the command line

    Improvements

    • Improved formatting of ASCII Text area and HTML Copy as... output
    • Disabled FPS displaying in release builds
    • Improved rendering of patterns in the pattern data view
    • Removed unused space in hex editor footer
    • Improved load times of ImHex on some systems
    • Pattern evaluation can now be aborted with the task stop button

    Bug Fixes

    • Fixed crash when resizing a file
    • Fixed graphical artifacts on welcome screen footer
    • Fixed welcome screen settings button only working sometimes
    • Fixed rendering of pattern array entries
    • Fixed searching for invalid sequences in the Find view to yield way too many results
    • Fixed sequence escape codes being parsed incorrectly
    • Fixed opening files in an existing instance of ImHex not always working correctly
    • Fixed the dangerous function popup reappearing constantly

    Pattern Language

    • Added support for enum ranges
      • If values in a range have the same meaning, you can now use MY_ENUM_VALUE = 0x10 ... 0x20 to have the formatter display all values in that range as such.
    • Added references
      • If you need to use a variable in a function without copying it onto the heap (for performance reasons or if you have pointers inside your structure), you can now use the ref keyword before your parameter type to turn it into a reference.
    • Added #ifdef, #ifndef, #endif, #error and #define without a value
      • Applications can also set their own global defines, for example ImHex sets the __IMHEX__ and __IMHEX_VERSION__ macro by default
    • Allow using declarations to change the name of builtin types
    • Added optional endian parameter to std::mem::read_unsigned and std::mem::read_signed
    • Improved Lexer, Parser and Preprocessor performance
    • Massively improved function call and formatting performance
    • Improved color highlighting
    • Improved bitfield value visualization
      • Bitfields are now displayed as { FLAG_A | FLAG_B | VALUE(123) }
    • Fixed out of bounds read when having a comment at the end of the file
    • Fixed local variable assignments not always working correctly
    • Fixed cast issues when passing enums to functions
    • Fixed pattern limit from applying after evaluation has already finished
    • Fixed #pargma once not working correctly
    • Fixed subtraction of two unsigned values yielding unexpected results
    • Fixed stringifying variables not outputting their formatted value
    • Fixed casts incrementing current offset
    • Fixed reading bytes when a non-zero base address is being used
    • Fixed parsing of attributes following r-values

    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.87 MB)
    imhex-1.23.1-ArchLinux.pkg.tar.zst(11.21 MB)
    imhex-1.23.1-Fedora-Latest.rpm(8.86 MB)
    imhex-1.23.1-Fedora-Rawhide.rpm(8.80 MB)
    imhex-1.23.1-macOS-NoGPU.dmg(21.03 MB)
    imhex-1.23.1-macOS.dmg(21.01 MB)
    imhex-1.23.1-Ubuntu-22.04.deb(15.06 MB)
    imhex-1.23.1-win64.msi(21.16 MB)
    imhex-1.23.1-Windows-Portable-NoGPU.zip(35.17 MB)
    imhex-1.23.1-Windows-Portable.zip(21.43 MB)
    imhex-1.23.1.AppImage(83.29 MB)
    imhex-1.23.1.AppImage.zsync(291.74 KB)
  • v1.23.0(Sep 15, 2022)

    Changelog

    Additions

    • Added many new Copy As... options
      • Current Address
      • Base64
      • Lua array
      • Go array
      • Crystal array
      • Swift arrary
      • Pascal array
    • Added zsync file to releases. Thanks a lot to @iTrooz
      • This file can be used to auto-update the AppImage
    • Added "Require full match" toggle to Regex finder
    • Added reset button to Find view to clear the currently found items
    • Pattern Database files are now included by default in the Flatpak build. Thanks to @ColinKinloch
    • Added support to open multiple files at once through the command line

    Improvements

    • Improved formatting of ASCII Text area and HTML Copy as... output
    • Disabled FPS displaying in release builds
    • Improved rendering of patterns in the pattern data view
    • Removed unused space in hex editor footer
    • Improved load times of ImHex on some systems
    • Pattern evaluation can now be aborted with the task stop button

    Bug Fixes

    • Fixed crash when resizing a file
    • Fixed graphical artifacts on welcome screen footer
    • Fixed welcome screen settings button only working sometimes
    • Fixed rendering of pattern array entries
    • Fixed searching for invalid sequences in the Find view to yield way too many results
    • Fixed sequence escape codes being parsed incorrectly
    • Fixed opening files in an existing instance of ImHex not always working correctly
    • Fixed the dangerous function popup reappearing constantly

    Pattern Language

    • Added support for enum ranges
      • If values in a range have the same meaning, you can now use MY_ENUM_VALUE = 0x10 ... 0x20 to have the formatter display all values in that range as such.
    • Added references
      • If you need to use a variable in a function without copying it onto the heap (for performance reasons or if you have pointers inside your structure), you can now use the ref keyword before your parameter type to turn it into a reference.
    • Added #ifdef, #ifndef, #endif, #error and #define without a value
      • Applications can also set their own global defines, for example ImHex sets the __IMHEX__ and __IMHEX_VERSION__ macro by default
    • Allow using declarations to change the name of builtin types
    • Added optional endian parameter to std::mem::read_unsigned and std::mem::read_signed
    • Improved Lexer, Parser and Preprocessor performance
    • Massively improved function call and formatting performance
    • Improved color highlighting
    • Improved bitfield value visualization
      • Bitfields are now displayed as { FLAG_A | FLAG_B | VALUE(123) }
    • Fixed out of bounds read when having a comment at the end of the file
    • Fixed local variable assignments not always working correctly
    • Fixed cast issues when passing enums to functions
    • Fixed pattern limit from applying after evaluation has already finished
    • Fixed #pargma once not working correctly
    • Fixed subtraction of two unsigned values yielding unexpected results
    • Fixed stringifying variables not outputting their formatted value
    • Fixed casts incrementing current offset
    • Fixed reading bytes when a non-zero base address is being used
    • Fixed parsing of attributes following r-values

    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.87 MB)
    imhex-1.23.0-ArchLinux.pkg.tar.zst(11.21 MB)
    imhex-1.23.0-Fedora-Latest.rpm(8.86 MB)
    imhex-1.23.0-Fedora-Rawhide.rpm(9.26 MB)
    imhex-1.23.0-macOS-NoGPU.dmg(21.03 MB)
    imhex-1.23.0-macOS.dmg(21.01 MB)
    imhex-1.23.0-Ubuntu-22.04.deb(15.06 MB)
    imhex-1.23.0-win64.msi(21.15 MB)
    imhex-1.23.0-Windows-Portable-NoGPU.zip(35.17 MB)
    imhex-1.23.0-Windows-Portable.zip(21.43 MB)
    imhex-1.23.0.AppImage(83.29 MB)
    imhex-1.23.0.AppImage.zsync(291.74 KB)
  • v1.22.0(Sep 3, 2022)

    Changelog

    Additions

    • Added NoGPU releases for Windows and MacOS! Thanks a lot to @iTrooz
      • This allows ImHex to run on Windows and MacOS machines that do not have any GPU available (as well as Virtual Machines without GPU forwarding)
      • Keep in mind that the entire UI will be Software rendered in these versions so your CPU usage will be a lot higher than with the regular versions
    • Added Korean Translation! Thanks a lot to @mirusu400
    • Added New File... menu item and shortcut
    • Added an error popup when an exception is being thrown in a Task

    Improvements

    • Patterns in the pattern data view are now automatically being sorted by their address instead of by their name
    • Make sure all recent providers show up correctly

    Bug Fixes

    • Fixed providers not being closed correctly
    • Fixed CTRL + F searching not working correctly in many cases
    • Fixed filtering in the Find view when multiple files are loaded
    • Fixed pattern source code not being loaded correctly from project files
    • Fixed data analyzer displaying invalid data for files that are smaller than 16MiB
    • Fixed AppImage not being able to make any web requests
    • Fixed signed data inspector rows displaying invalid values
    • Fixed pattern include paths not being respected correctly
    • Fixed race condition when the evaluate pattern button is being spam clicked
    • Fixed ImHex sometimes crashing when exiting
    • Fixed json parse exceptions being thrown when web requests ran into timeouts
    • Fixed window header always displaying (Read Only) even if the file isn't being opened as read only
    • Fixed crash when closing a provider that's currently getting Diffd
    • Fixed a crash when trying to resize a Read Only file

    Pattern Language

    • Added std::core library
      • This library contains various "magic" functions to query information or change settings about patterns and the runtime
      • To find out more about this library, check out its source code
    • Rewrote entire Stack/Heap management
      • This now finally allows you to properly pass types with dynamic sizes and layouts to functions
      • This also fixes various issues with passing custom types to functions
    • Added Debug mode to evaluator
      • This mode can be enabled using the #pragma debug pragma
      • When enabled, various information is being logged to the console and the pattern list will not get cleared if an error occurres
    • [[format]] attribute functions can now return non-string types which will automatically be stringifyed when being displayed
    • Fixed a crash when creating infinitely recursive types
    • Fixed comments messing up error line information
    • Fixed variables being placeable from inside of functions
    • Fixed accessing global variables from within [[format]] functions
    • Fixed a crash when using arrays in functions
    • Fixed base address not being set properly in the pattern language
    • Fixed unions placing patterns at incorrect offsets
    • Fixed incorrect "Array expanded past end of the data" errors

    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.69 MB)
    imhex-1.22.0-ArchLinux.pkg.tar.zst(11.19 MB)
    imhex-1.22.0-Fedora-Latest.rpm(8.83 MB)
    imhex-1.22.0-Fedora-Rawhide.rpm(8.80 MB)
    imhex-1.22.0-macOS-NoGPU.dmg(21.02 MB)
    imhex-1.22.0-macOS.dmg(21.00 MB)
    imhex-1.22.0-win64.msi(21.03 MB)
    imhex-1.22.0-Windows-Portable-NoGPU.zip(35.04 MB)
    imhex-1.22.0-Windows-Portable.zip(21.30 MB)
    imhex-1.22.0.AppImage(83.19 MB)
    imhex-1.22.0.deb(15.04 MB)
  • v1.21.2(Aug 17, 2022)

    Changelog

    Additions

    • Added the ability to cancel many long running tasks
      • To do this, click on the Stop button next to the task progress bar in the footer

    Improvements

    • Window sizes now also use the current font size to calculate their scale
    • Moved the "Close welcome screen" button a bit further to the left so it won't be cut off

    Bug Fixes

    • Fixed multiple undefined behavior issues
    • Fixed the "Learn the Pattern Language" welcome screen button pointing to the wrong URL
    • Fixed automatic restarting of ImHex not always working
    • Fixed Import/Export bookmarks options requiring a selection to be available
    • Fixed hex editor displaying ?? for all bytes when a base address has been set

    Pattern Language

    • Added more array size checks
    • Fixed crash when referencing a invalid type member
    • Fixed error reporting in math expressions not working correctly
    • Fixed issues when parsing Unions
    • Fixed return statements acting like breaks when used inside of loops

    Previous Changelog

    Thank you so much for the ridiculous amount of 20'000 ⭐ on this project!

    Additions

    • Replaced terrible existing project file system with a much more flexible one
      • This is a breaking change. If you have existing project files, they will no longer be loadable in ImHex starting from this version
      • To still use your old projects, you can use this Python Script here to extract the different parts of the old project file as stand-alone files that can then be imported again in newer versions of ImHex
    • The recents list now contain all providers, not just opened files
    • Added Intel Hex and Motorola SREC provider
    • Added hexadecimal size of file and selection to hex editor footer
    • Added select region command
    • Added close button to the welcome screen so various tools can be accessed without opening any data
    • Added Bookmark Import and Export option

    Improvements

    • Added better support for Windows 7
      • You're still much better of by using Windows 10 or 11 instead since a bunch of things simply aren't possible on Windows 7
    • Removed dependency on macOS 11 only Framework so ImHex can now run on macOS Yosemite and higher
    • Switched .deb compression to gzip so it can be used on older Debian versions
    • Various find view improvements. Overlapping occurrences and occurrences at the very end of the file can now be found
    • Updated the LLVM demangler dependency
      • All demanglers in ImHex now support the latest C++ features as well as D and Rust mangled names
    • ImHex now properly allows opening of all files on macOS when dragging a file onto its executable

    Bug Fixes

    • Fixed crash when trying to edit a hex cell
    • Fixed various issues with the multi-byte visualizers
    • Fixed pattern language runtime not being reset properly after checking for MIME types
    • Fixed config files being placed in wrong locations on Linux
    • Fixed Windows native theme detection not always working correctly
    • Fixed a crash when the auto-load pattern setting is disabled

    Pattern Language

    • Restructured entire library and cleaned up a bunch of legacy stuff
    • Updated Error messages and error display
      • All errors that are being thrown now show line/column information of the error as well as helpful error messages and hints on how to fix it (inspired by Rust errors)
    • Fixed for-loop parsing
    • Fixed display issues with static array entries
    • Fixed reading strings that were passed to functions
    • Fixed a namespace resolution crash
    • Fixed array out of bounds checks

    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.38 MB)
    imhex-1.21.2-ArchLinux.pkg.tar.zst(11.03 MB)
    imhex-1.21.2-Darwin.dmg(20.74 MB)
    imhex-1.21.2-Fedora-Latest.rpm(8.77 MB)
    imhex-1.21.2-Fedora-Rawhide.rpm(8.69 MB)
    imhex-1.21.2-win64.msi(20.89 MB)
    imhex-1.21.2-Windows-Portable.zip(21.17 MB)
    imhex-1.21.2.AppImage(83.42 MB)
    imhex-1.21.2.deb(14.92 MB)
  • v1.21.1(Aug 15, 2022)

    Changelog

    Bug Fixes

    • Fixed crash when closing provider tabs
    • Fixed recent providers not always being selectable
    • Fixed pattern in-variables resetting when patterns are being executed
    • Fixed restoring of safety backups after a crash not working correctly
    • Fixed displaying of unavailable addresses in Intel Hex and Motorola SREC providers
    • Fixed a crash when returning patterns or global variables from [[format]] functions

    Previous Changelog

    Thank you so much for the ridiculous amount of 20'000 ⭐ on this project!

    Additions

    • Replaced terrible existing project file system with a much more flexible one
      • This is a breaking change. If you have existing project files, they will no longer be loadable in ImHex starting from this version
      • To still use your old projects, you can use this Python Script here to extract the different parts of the old project file as stand-alone files that can then be imported again in newer versions of ImHex
    • The recents list now contain all providers, not just opened files
    • Added Intel Hex and Motorola SREC provider
    • Added hexadecimal size of file and selection to hex editor footer
    • Added select region command
    • Added close button to the welcome screen so various tools can be accessed without opening any data
    • Added Bookmark Import and Export option

    Improvements

    • Added better support for Windows 7
      • You're still much better of by using Windows 10 or 11 instead since a bunch of things simply aren't possible on Windows 7
    • Removed dependency on macOS 11 only Framework so ImHex can now run on macOS Yosemite and higher
    • Switched .deb compression to gzip so it can be used on older Debian versions
    • Various find view improvements. Overlapping occurrences and occurrences at the very end of the file can now be found
    • Updated the LLVM demangler dependency
      • All demanglers in ImHex now support the latest C++ features as well as D and Rust mangled names
    • ImHex now properly allows opening of all files on macOS when dragging a file onto its executable

    Bug Fixes

    • Fixed crash when trying to edit a hex cell
    • Fixed various issues with the multi-byte visualizers
    • Fixed pattern language runtime not being reset properly after checking for MIME types
    • Fixed config files being placed in wrong locations on Linux
    • Fixed Windows native theme detection not always working correctly
    • Fixed a crash when the auto-load pattern setting is disabled

    Pattern Language

    • Restructured entire library and cleaned up a bunch of legacy stuff
    • Updated Error messages and error display
      • All errors that are being thrown now show line/column information of the error as well as helpful error messages and hints on how to fix it (inspired by Rust errors)
    • Fixed for-loop parsing
    • Fixed display issues with static array entries
    • Fixed reading strings that were passed to functions
    • Fixed a namespace resolution crash
    • Fixed array out of bounds checks

    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.38 MB)
    imhex-1.21.1-ArchLinux.pkg.tar.zst(11.00 MB)
    imhex-1.21.1-Darwin.dmg(20.72 MB)
    imhex-1.21.1-Fedora-Latest.rpm(8.78 MB)
    imhex-1.21.1-Fedora-Rawhide.rpm(8.68 MB)
    ImHex-1.21.1-win64.msi(20.89 MB)
    imhex-1.21.1-Windows-Portable.zip(21.16 MB)
    imhex-1.21.1.AppImage(83.40 MB)
    imhex-1.21.1.deb(14.91 MB)
  • v1.21.0(Aug 14, 2022)

    Changelog

    Thank you so much for the ridiculous amount of 20'000 ⭐ on this project!

    Additions

    • Replaced terrible existing project file system with a much more flexible one
      • This is a breaking change. If you have existing project files, they will no longer be loadable in ImHex starting from this version
      • To still use your old projects, you can use this Python Script here to extract the different parts of the old project file as stand-alone files that can then be imported again in newer versions of ImHex
    • The recents list now contain all providers, not just opened files
    • Added Intel Hex and Motorola SREC provider
    • Added hexadecimal size of file and selection to hex editor footer
    • Added select region command
    • Added close button to the welcome screen so various tools can be accessed without opening any data
    • Added Bookmark Import and Export option

    Improvements

    • Added better support for Windows 7
      • You're still much better of by using Windows 10 or 11 instead since a bunch of things simply aren't possible on Windows 7
    • Removed dependency on macOS 11 only Framework so ImHex can now run on macOS Yosemite and higher
    • Switched .deb compression to gzip so it can be used on older Debian versions
    • Various find view improvements. Overlapping occurrences and occurrences at the very end of the file can now be found
    • Updated the LLVM demangler dependency
      • All demanglers in ImHex now support the latest C++ features as well as D and Rust mangled names
    • ImHex now properly allows opening of all files on macOS when dragging a file onto its executable

    Bug Fixes

    • Fixed crash when trying to edit a hex cell
    • Fixed various issues with the multi-byte visualizers
    • Fixed pattern language runtime not being reset properly after checking for MIME types
    • Fixed config files being placed in wrong locations on Linux
    • Fixed Windows native theme detection not always working correctly
    • Fixed a crash when the auto-load pattern setting is disabled

    Pattern Language

    • Restructured entire library and cleaned up a bunch of legacy stuff
    • Updated Error messages and error display
      • All errors that are being thrown now show line/column information of the error as well as helpful error messages and hints on how to fix it (inspired by Rust errors)
    • Fixed for-loop parsing
    • Fixed display issues with static array entries
    • Fixed reading strings that were passed to functions
    • Fixed a namespace resolution crash
    • Fixed array out of bounds checks

    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.40 MB)
    imhex-1.21.0-ArchLinux.pkg.tar.zst(12.35 MB)
    imhex-1.21.0-Darwin.dmg(22.56 MB)
    imhex-1.21.0-Fedora-Latest.rpm(8.76 MB)
    imhex-1.21.0-Fedora-Rawhide.rpm(8.68 MB)
    ImHex-1.21.0-win64.msi(21.55 MB)
    imhex-1.21.0-Windows-Portable.zip(21.87 MB)
    imhex-1.21.0.AppImage(83.40 MB)
    imhex-1.21.0.deb(16.64 MB)
  • 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)
Owner
WerWolv
I'm a 23 year old embedded systems electronics engineer. Mostly interested in reverse engineering, low-level coding and homebrew development
WerWolv
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
John Walker 24 Dec 15, 2022
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 1 Aug 18, 2022
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 36 Dec 25, 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) 4 Oct 22, 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 12 Sep 3, 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 3 Jan 1, 2023
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 82 Dec 6, 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 127 Dec 6, 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 359 Jan 3, 2023
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
Threat Emulation and Red Teaming Framework, The Hacking Software for normal people.

The Remote Hacker Probe is a Threat Emulation and Red Teaming Framework built to be easy to use. The Remote Hacker Probe is Feature Rich! Including, K

QuantumCored 179 Jan 5, 2023
A simple wrapper for 'pacman' with a syntax similar to 'apt' to help people transitioning to Arch and Arch based distributions like Manjaro.

aptpac aptpac is a program which helps with the transition to Arch Linux and Arch based distros like Manjaro. It simplifies using pacman as it works l

Itai Nelken 18 Dec 4, 2022