Releases: WerWolv/ImHex
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!
Bug fixes
Changelog
Additions
- Added filter option to bookmarks view
Improvements
- Downloaded content store items no longer get placed in the
/tmp
directory when using the AppImage or Flatpak release. Thanks to @catsout - Improved rendering of bitfield entries in the pattern data view. Thanks to @Diadlo
Bug Fixes
- Fixed various hex editor highlighting, tooltips and selection issues
- Fixed duplicate pattern data view entries when sorting the list
- Fixed various issues with multi-byte visualizers in the hex editor view
- Fixed various base address related issues
- Fixed Edit -> Create Bookmark menu item not working correctly
- Fixed search not working as expected
Pattern Language
- Bitwise operators no longer act like boolean operators
- Fixed passing dynamically sized types to functions
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
New builtin types, pointers to arrays and many bug fixes
Changelog
Improvements
- Upgraded codebase to C++23
- Possibly added support for Windows 7 (untested)
Bug Fixes
- Fixed advanced decoding hex editor row not being rendered correctly
- Fixed editing floats, doubles and strings in the data inspector
- Fixed opening files with spaces in their name on Linux not working correctly
- Fixed crash when closing the file picker without choosing a file
- Fixed duplicate file chooser popup entries not being selectable
- Fixed CTRL + O only working when the hex editor view is selected
- Fixed user folders not loading correctly on startup
- Fixed crash when searching for an empty string
- Fixed crash on exit
Pattern Language
- Added u24, u48. u96, s24, s48 and s96 builtin types
- Added support for pointers to arrays. Thanks a lot to @PredatorCZ
- Added support for pointers with signed values. Thanks a lot to @PredatorCZ
- Greatly improved token creation and consuming. Refactored Lexer and Parser
- Fixed invalid placement syntax parsing
- Improved error message when a invalid token was encountered
- Improved querying patterns by address
- Fixed name of returned static array entry patterns
- Fixed crash when querying value of a zero-length string
- Fixed namespace resolution issues
- Fixed overriding the color of static arrays. Thanks to @PredatorCZ
- Fixed passing placed variables to functions
- Fixed In/Out variables not working correctly. Thanks to @PredatorCZ
- Removed empty string patterns from the pattern data view
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!