Releases: WerWolv/ImHex
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!
More unicode fixes
Changelog
Heyo @shutingrz :)
Additions
- Added a backdrop image when no views are open
Improvements
- Automatically restore default layout when a file is opened but no views are open
- Improved stuttering when resizing or minimizing/maximizing the window
- Improved the Full Sources tar size. Thanks to @iTrooz
- Updated various dependencies
Bug Fixes
- Fixed opening files with spaces in their name on Linux
- Fixed various more Unicode issues
Pattern Language
- Custom type formatting
- Passing custom types to e.g
std::print
now prints e.gstruct Test { 12, 34, 56 }
for a Struct namedTest
with 3 variables
- Passing custom types to e.g
- Fixed a crash when using provider operators
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Unicode systems support, custom local variables and http proxies
Changelog
Additions
- Added ability to remove bytes from a file. Thanks to @Diadlo
- Added a macOS styled icon to the macOS build and updated the icon on other platforms Huge thanks to @zaafonin
- Added back missing hex editor selection byte count value to the hex editor view footer
- Added support for HTTP and SOCKS5 Proxies. Thanks a lot to @shirok1
Improvements
- Fixed many issues with the macOS .dmg file, and the Linux AppImage and Flatpak. Massive thanks to @iTrooz
- Massive CI Improvements Huge thanks to @iTrooz
- This includes much improved build times, ArchLinux support, automatic release uploading and many other improvements
- Switched over to GCC on macOS
- This allows for more cutting edge C++ features to be used in the future
- Lots of Unicode related crashes and fixes
- Paths are now consistently handled correctly on all platforms
- ImHex now works correctly when launched from a location with non-ASCII characters in its path or on systems with a user account name with unicode characters in it
- Massively improved pattern highlighting performance
- Search algorithm is now
O(log2(N))
instead ofO(N)
- Search algorithm is now
- Greatly improved the performance of static arrays in the pattern data view
- Improved the scrolling behaviour in the hex editor view
Bug Fixes
- Fixed byte editing not working correctly in the hex editor view
- Fixed AppImage crashing when opening the file chooser
- Fixed crash when parsing invalid wide strings
- Fixed Resize and Insert bytes popup not working correctly
- Fixed fallback language being accidentally set to Portuguese. Thanks to @LFriede
- Fixed misaligned hex editor selection hightlighting in very big files
- Fixed double clicking on the "... (Double-click to see more items)" item in arrays in the pattern data view. Thanks to @Diadlo
- Fixed a few hex editor highlighting crashes
- Fixed hash function names not being localized
- Fixed crash when undocking the hex editor view
- Fixed various localization issues
- Fixed hex editor selection moving with SHIFT + Arrow Keys not working as expected
- Fixed a crash when copying text to the clipboard on non-english locales
- Fixed system theme detection issues on all OSes
- Fixed In/Out variables not being evaluated correctly when loading a pattern through the context menu
Pattern Language
- Added support for using custom types as local variables
- This means you can now define structs, unions or bitfields and use and assign values to them inside of functions
- Fixed endian inversion when passing variables to functions in big-endian mode
- Fixed In/Out variables not working correctly when using any pre-processor directives
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Reworked hash view, Brazilian Portuguese translation
Changelog
Additions
- Added Brazilian Portuguese translation. Huge thanks to @dgsmiley18
- Added IEEE 754 floating point number experimenting tool
- Complete rewrote the Hash view
- It now supports displaying multiple different Hash types at the same time
- Configured hashes now also appear in the hex editor when selecting a region, hovering the cursor over it and holding down SHIFT
- Added tooltip to all Visualizer data processor nodes that display the visualization a lot bigger
Improvements
- Improved contrast of the pattern language error popup text color in light mode
Bug Fixes
- Fixed editing values in the hex editor
- Fixed another scroll issue in the hex editor
- Fixed pasting bytes in the hex editor view
- Fixed bookmarks automatically collapsing when editing their name
- Fixed a crash when the OS didn't configure monitors correctly
- This mainly happens when using Windows Remote Desktop
Previous Changelog
Additions
- Rewrite the entire Hex Editor View
- The Editor now supports displaying data in various different ways. For example it can combine 4 bytes into one cell and display it as floating point number, or 2 bytes into a signed integer
- Added setting to change color and transparency of selection
- Added much better tooltips for Patterns and Bookmarks
- Hold SHIFT for more information
- Improved popups for find, goto, base address setting and byte insertion
- Greatly improved search speed and efficiency
- Fixed hex view not scrolling when moving the cursor off screen
- Fixed many inconsistencies
- Added support for custom languages for the Wikipedia terms searcher. Thanks to @xtexChooser
- Added bit invert option to data inspector
- Added bool, DOS Date and DOS Time decoder to data inspector
Pattern Language
- Added
addressof($)
to get the data base address andsizeof($)
to get the data size - Make bitfields be more on-par with structs and allow conditionals to be used in there
- Added support for while-sized paddings
- Fixed pattern language errors not being displayed in the console correctly
- Fixed MIME pragma not working correctly
- Fixed including files that include other files themselves
Improvements
- Added ImHex to FlatHub. Thanks a lot to @Mailaender
- Fixed various issues with the AppImage. Thanks a lot to @iTrooz
- Opening the file browser still crashes the AppImage, drag-n-drop your files onto ImHex to open them
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!