github WerWolv/ImHex v1.28.0
`match` statements, `bitfield` improvements, custom themes

latest releases: v1.35.3, v1.35.2, v1.35.1...
15 months ago

New projects

  • The documentation that has been finally written from scratch for most of the important features of ImHex and the Pattern Language. You can find it at https://imhex.werwolv.net/docs

  • The Pattern Language is now compatible with Emscripten so it can running in a browser! A proof of concept of this is available on https://pl.werwolv.net. It can do the same thing as the plcli's format option can do, it takes a pattern and a binary file and converts it to a JSON, YAML or HTML file.

New Plugins

Two new plugins have been developed for ImHex as well!

  • Malcore Plugin - Allows you to upload binary data to the Malcore service for analysis
  • Hashes Plugin - Adds tons of new hashes to the hashes view

Additions

  • Rewrote the entire Diffing view to make it actually usable
  • Added support for custom themes
    • These themes can either be downloaded through the Content Store or created and shared yourself through the Theme Manager
  • Custom nodes can now be downloaded from the Content Store
  • Added rotation and scale sliders to the 3D visualizer
  • Added support for loading custom CA certs
  • Added binary hex cell visualizer
  • ImHex now once again loads the entire unicode character plain if possible
  • Added option to disable saving of recently loaded files
  • File -> Save As can now be used in all providers correctly
  • Most string search options can now also be applied to the regex search
  • Custom data inspector rows can now be edited
  • Most main menu commands can now be found in the Command Palette (CTRL + SHIFT + P)
  • Added a new byte swapper tool to the tools view
  • Added new CRC hash types. Thanks to @jcreedon
  • Added new Fedora 38 build. Thanks to @jonathanspw

Improvements

  • Text editor now properly considers underscores as part of words
  • Removed x3.0 and x4.0 scaling settings as these caused issues with GPU drivers often
  • Files are no longer mapped into memory when opened by ImHex so other programs can keep using them now
  • The choose file dialog entries are now correctly sorted and display their full path when hovered
  • CTRL + N now properly creates a new memory file provider instead of opening a file picker. Thanks to @qux-bbb
  • Chunk size and analysis region can now be specified in the data information view. Thanks to @Fenrisfulsur
  • Custom encoding characters are now being rendered correctly when split between two lines
  • Recent items are now being limited to 5 files at max
  • The Yara match list is now sortable
  • Drastically improved Bookmarks view
  • Improved filtering speeds of the find view
  • The current commit hash and branch now correctly shows up in the About view on release builds
  • Providers now display better error messages when they can't load their data. Thanks to @iTrooz
  • Search processes from the find view can now be correctly canceled
  • A tooltip in the settings now informs the user about selecting custom fonts and scaling them
  • Improved the look and feel of the content store
  • Config files are now properly stored in the correct XDG directories on Linux
  • Selected custom encoding files are now correctly saved to the current project file
  • When a custom encoding is loaded and the ASCII column is disabled, there is no longer a huge gap now
  • The Character padding setting now properly applies to the custom encoding column
  • Improve loading speed of custom encoding files

Bug Fixes

  • Fixed the bug where ImHex would keep jumping back up in the hex view when making a selection
  • Fixed issues where UI was scaled too large
  • Fixed editing of binary values in the data inspector
  • Fixed various issues with the GDB provider
  • Fixed string search not including strings at the end of the data
  • Fixed rendering of UTF-16BE strings in find view
  • Fixed find view string search filters filtering wrong characters. Thanks to @qux-bbb
  • Fixed an issue where advancing to the next row when editing a byte would load the wrong value
  • Fixed Yara view filtering out all but one match
  • Fixed a crash when not making a valid selection in a provider load interface
  • Fixed moving around the hex editor cursor with the arrow keys
  • Fixed the standard magic file not always working correctly
  • Saving and loading a pattern will no longer add a new line to it
  • Using Save As on the current file no longer truncates it
  • Fixed rare freezes when resizing ImHex
  • Fixed occasional crashes when using ImHex through the Windows Remote Desktop
  • Fixed entering of decimal and float values in the hex editor with the relevant cell visualizer selected
  • Fixed filtering of long strings in the find view

Pattern Language

  • Added match statements. Thanks a lot to @Nowilltolife
  • Added std::math::accumulate. Thanks to @Nowilltolife
  • Added std::random functions
  • Added std::core::set_display_name function. Thanks to @amaksoft
  • Absolute MASSIVE improvements to bitfields. Huge thanks to @Zaggy1024
    • Conditionals now work correctly inside of bitfields
    • Added support for unsigned, signed, boolean and enum fields inside of bitfields
    • Added support for nested bitfields and bitfield arrays inside of bitfields
    • Replaced [[left_to_right]] and [[right_to_left]] with a [[bitfield_order]] attribute that offers more control
    • Added support for using regular types inside of bitfields
  • Massive improvements to templates. Again huge thanks to @Zaggy1024
    • Templates of the same type can now be nested
    • Template types can now be inherited from
    • Fixed various issues with templates in general
  • Added support for using any type as pointer size type
  • Added support for compiling the PatternLanguage to WebAssembly
  • CRC32 function now correctly calculates their value the same way ImHex does
  • Fixed highlighting of patterns placed in custom sections
  • Fixed casts changing endianess in big endian mode
  • Fixed 128 bit integer sign extension
  • Fixed formatting of 128 bit enums
  • Fixed placing of arrays in sections from within functions
  • Fixed some occurrences of duplicate identifiers not being caught
  • Fixed various issues related to doc comments
  • Fixed rvalue accesses in custom sections
  • Fixed type operators increasing the cursor position
  • Fixed modifiying of big endian values. Thanks to @soxfox42
  • Fixed issues with heap and pattern-local variables
  • Fixed [[hidden]] and [[highlight_hidden]] attributes not working correctly
  • Fixed creating of local variables in global scope
  • Fixed parsing of nested templates

Absolute massive thanks to everybody that got involved in this Project in the past weeks. You're amazing <3


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

Don't miss a new ImHex release

NewReleases is sending notifications on new releases.