`match` statements, `bitfield` improvements, custom themes
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
'sformat
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!