Releases: WerWolv/ImHex
Text Editor improvements, bug fixes
Screenshots
Improvements
- Improved word selecting in text editor and added CTRL + Backspace/Delete shortcuts to delete full words
Bug Fixes
- Fixed various build issues on some Linux platforms
- Fixed safety backup restore popup getting hidden by the tip of the day popup
Pattern Language
- Fixed attributes not being applied correctly to bitfield fields
- Fixed issues where turning a type into bytes didn't correctly consider Proxy types with a zero size
- Fixed offsets of static array members getting messed up by highlighting process
- Fixed crash when returning invalid values from format/transform functions
Previous Release
Additions
- Added support for selecting OTF font files as custom fonts
- Added a new Division by Invariant Multiplication calculator tool
- Added support for specifying multiple Yara rules to be executed in order
- Added support for custom Nodes in the data processor
- These nodes can be created directly in the editor and then exported and shared
- We have a new section in the WerWolv/ImHex-Patterns repo for sharing these nodes!
- Added support for specifying input values for integer and float inputs on nodes directly on the node itself
- Added new builds for Fedora Rawhide, RHEL and AlmaLinux. Thanks to @jonathanspw
- Resources such as patterns, includes and scripts can now be loaded from folders relative to the current project file
- Task progress is now being displayed in the Taskbar on Windows
- Added basic stack trace output on crash
- Added support for macOS keyboard shortcut layouts. Thanks to @Kuruyia
- Added support for saving more things to project files
- Added a Base64 file exporter
- Added option to copy the selected custom encoding string
- Added a wait popup when Tasks are still running when ImHex is being closed
- Added option to import patches from a modified version of the same file
Improvements
- Project is now correctly closed when all providers have been closed. Thanks to @iTrooz
- Improved handling of Projects in general
- Improved native scaling handler on macOS
- Added a short description to the IEEE754 decoder tool
- Reordered File menu to make more logical sense
- Allow .yar and .yara files to be loaded
- Added better error messages for importing/exporting IPS patches
- The process memory provider's process and module list can now be searched case-insensitively
- The find view string finder can now be searched case-insensitively
- Updated Japanese translation. Thanks to @Berylskid
- Updated the German translation
Bug Fixes
- Fixed IEEE 754 tool typo. Thanks to @ivq
- Fixed the editing cursor not advancing automatically after the first page of data
- Fixed Intel Hex and Motorola SREC files not being openable on macOS
- Fixed issues with Yara rules not being able to include other rules
- Fixed exceptions not displaying their error messages correctly
- Fixed logs always being saved to user folders, even on portable releases
- Fixed ImHex not being able to load properly in portable mode from a folder without permissions
- Fixed rare crash when loading providers
- Fixed importing of IPS and IPS32 patches being broken
- Fixed find view not correctly accepting hexadecimal values
- Fixed copying bytes from non-zero pages not working correctly
- Fixed rendering of custom encodings on non-zero pages
- Fixed CRC8 hashing algorithm displaying 16 bits instead of 8
- Fixed loading of Hex and SREC files with new lines in them
- Fixed last row in diff view always being displayed as zeros
Pattern Language
- Added various Visualizers to graphically visualize patterns and binary data
- Currently available Visualizers are
line_plot
,scatter_plot
,image
,bitmap
,disassembler
,3d
,sound
- Currently available Visualizers are
- Added option to automatically expand or flatten the pattern data tree
- Added support for specifying local variables inside of structs
- Added ability to query various informations from the currently loaded provider
- Added
const
variables application/octet-stream
is no longer considered a valid MIME type as it matches any unknown format- Bitfield field bit addresses now always specify the offset from the start of the bitfield instead of from the start of the current byte
- Fixed editing of static array values
- Fixed various issues with recursion
- Fixed character patterns not always being formatted correctly
- Fixed crash when removing out variables
- Fixed string conversions not properly trimming values
- Added better array out of bounds checks for arrays
- Custom patterns are now always being passed as references implicitly
- Fixed only the last pragma of a specific type to be executed
- Added support for attributes with more than one parameter
- Allow
this
to be used in variable attributes to refer to the current variable - Fixed printing of strings with null bytes in them
- Fixed pointer values being evaluated twice
- Added
null
keyword - Fixed
#endif
directives requiring a space behind it to work - Added
format_read_entries
,format_write_entries
andtransform_entries
attributes - Added
highlight_hidden
attribute to disable highlighting of the current pattern
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Pattern Visualizers, better data processor
Screenshots
Additions
- Added support for selecting OTF font files as custom fonts
- Added a new Division by Invariant Multiplication calculator tool
- Added support for specifying multiple Yara rules to be executed in order
- Added support for custom Nodes in the data processor
- These nodes can be created directly in the editor and then exported and shared
- We have a new section in the WerWolv/ImHex-Patterns repo for sharing these nodes!
- Added support for specifying input values for integer and float inputs on nodes directly on the node itself
- Added new builds for Fedora Rawhide, RHEL and AlmaLinux. Thanks to @jonathanspw
- Resources such as patterns, includes and scripts can now be loaded from folders relative to the current project file
- Task progress is now being displayed in the Taskbar on Windows
- Added basic stack trace output on crash
- Added support for macOS keyboard shortcut layouts. Thanks to @Kuruyia
- Added support for saving more things to project files
- Added a Base64 file exporter
- Added option to copy the selected custom encoding string
- Added a wait popup when Tasks are still running when ImHex is being closed
- Added option to import patches from a modified version of the same file
Improvements
- Project is now correctly closed when all providers have been closed. Thanks to @iTrooz
- Improved handling of Projects in general
- Improved native scaling handler on macOS
- Added a short description to the IEEE754 decoder tool
- Reordered File menu to make more logical sense
- Allow .yar and .yara files to be loaded
- Added better error messages for importing/exporting IPS patches
- The process memory provider's process and module list can now be searched case-insensitively
- The find view string finder can now be searched case-insensitively
- Updated Japanese translation. Thanks to @Berylskid
- Updated the German translation
Bug Fixes
- Fixed IEEE 754 tool typo. Thanks to @ivq
- Fixed the editing cursor not advancing automatically after the first page of data
- Fixed Intel Hex and Motorola SREC files not being openable on macOS
- Fixed issues with Yara rules not being able to include other rules
- Fixed exceptions not displaying their error messages correctly
- Fixed logs always being saved to user folders, even on portable releases
- Fixed ImHex not being able to load properly in portable mode from a folder without permissions
- Fixed rare crash when loading providers
- Fixed importing of IPS and IPS32 patches being broken
- Fixed find view not correctly accepting hexadecimal values
- Fixed copying bytes from non-zero pages not working correctly
- Fixed rendering of custom encodings on non-zero pages
- Fixed CRC8 hashing algorithm displaying 16 bits instead of 8
- Fixed loading of Hex and SREC files with new lines in them
- Fixed last row in diff view always being displayed as zeros
Pattern Language
- Added various Visualizers to graphically visualize patterns and binary data
- Currently available Visualizers are
line_plot
,scatter_plot
,image
,bitmap
,disassembler
,3d
,sound
- Currently available Visualizers are
- Added option to automatically expand or flatten the pattern data tree
- Added support for specifying local variables inside of structs
- Added ability to query various informations from the currently loaded provider
- Added
const
variables application/octet-stream
is no longer considered a valid MIME type as it matches any unknown format- Bitfield field bit addresses now always specify the offset from the start of the bitfield instead of from the start of the current byte
- Fixed editing of static array values
- Fixed various issues with recursion
- Fixed character patterns not always being formatted correctly
- Fixed crash when removing out variables
- Fixed string conversions not properly trimming values
- Added better array out of bounds checks for arrays
- Custom patterns are now always being passed as references implicitly
- Fixed only the last pragma of a specific type to be executed
- Added support for attributes with more than one parameter
- Allow
this
to be used in variable attributes to refer to the current variable - Fixed printing of strings with null bytes in them
- Fixed pointer values being evaluated twice
- Added
null
keyword - Fixed
#endif
directives requiring a space behind it to work - Added
format_read_entries
,format_write_entries
andtransform_entries
attributes - Added
highlight_hidden
attribute to disable highlighting of the current pattern
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Actually fix startup issues
Improvements
- Made content store window resizable
Bug Fixes
- Actually fixed the last releases not starting at all anymore on macOS and Linux
Previous Changelog
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
- New themes can now simply be placed in the
- 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!
Process memory provider search bar, startup fixes
Additions
- Added search bars to the process memory provider's process and module list
Bug Fixes
- Fixed the last release not starting at all anymore on macOS and Linux
Previous Changelog
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
- New themes can now simply be placed in the
- 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!
Process memory provider, native theming, better information view
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
- New themes can now simply be placed in the
- 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!
View providers, custom sections
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 ai64
and floats use along double
instead of afloat
- Integers now use a
- 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 into0x44434241
- 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!
ASCII row editing, Out variable access node
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
- 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
- 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!
Hex editor selection rendering fix, Addressof/Sizeof error message fix
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
andsizeof
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
- 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
- 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!
Selected pattern highlighting, non-type template parameters,
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!
Custom data inspector entries, numeric value searching, Templates
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!