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
- To do this, create a new file in the
- 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 theEdit
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 to0
- 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!