Releases: WerWolv/ImHex
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!
Linux crash fixes
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.
- If values in a range have the same meaning, you can now use
- 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.
- 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
- 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
- Applications can also set their own global defines, for example ImHex sets the
- Allow
using
declarations to change the name of builtin types - Added optional endian parameter to
std::mem::read_unsigned
andstd::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) }
- Bitfields are now displayed as
- 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!
Pattern language speed improvements and bug fixes
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.
- If values in a range have the same meaning, you can now use
- 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.
- 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
- 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
- Applications can also set their own global defines, for example ImHex sets the
- Allow
using
declarations to change the name of builtin types - Added optional endian parameter to
std::mem::read_unsigned
andstd::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) }
- Bitfields are now displayed as
- 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!
More 'Copy As...' options, Enum ranges and references
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.
- If values in a range have the same meaning, you can now use
- 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.
- 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
- 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
- Applications can also set their own global defines, for example ImHex sets the
- Allow
using
declarations to change the name of builtin types - Added optional endian parameter to
std::mem::read_unsigned
andstd::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) }
- Bitfields are now displayed as
- 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!
NoGPU releases, Korean translation and better pattern sorting
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
- This mode can be enabled using the
[[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!
Task canceling, better window scaling
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!
Provider and project file bug fixes
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!
Project file rewrite, Intel Hex & Motorola SREC provider and macOS Yosemite support
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!
Traditional chinese translation, Find view, HiDPI fixes
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!