Releases: WerWolv/ImHex
[Packaging fixes] Web and M1 version, Workspaces, Tutorials, Auto backups and more
Bug Fixes
- Ubuntu package no longer refers to an invalid libarchive package
- Windows packages now include libarchive and libcapstone dlls
- Library plugins are properly being initialized on macOS now
- ImHex doesn't crash anymore when opening the diffing view
Previous Changes
This release has been cooking for a very long time and encompasses over 500 commits improving basically every single aspect of ImHex in one way or another. Hope y'all like it 鉂わ笍
Additions
- ImHex is now available for the Web!
- It supports basically 99% of all features that the native version does (minus things like process memory, raw disk providers and some other things that browsers just don't have access to)
- Check it out at https://web.imhex.werwolv.net
- Support was added entirely by @iTrooz. Massive thanks to him!
- ImHex now has a native Apple M1 build!
- Currently this version is cross compiled from Linux
- It is unsigned and distributed in a zip file instead of a dmg (You might need to disable SIP to run it)
- Any PRs improving this are highly welcome!
- Again huge thanks to @iTrooz for adding this
- Added a Auto Updater
- Currently this supports the Windows MSI version, Ubuntu and macOS dmg version.
- Added a shortcut manager to the Settings
- Added Markdown reports
- This system allows you to export things like bookmarks, patterns and data information to a markdown file for easy documentation
- Greatly improve the Undo/Redo system
- This now allows you to undo and redo things like resizes, insertions and removals that previously were irreversible
- Important to note is, all changes made in ImHex still get applied to the file directly!
- Added option to specify custom highlighting rules to set the foreground color of bytes according to boolean equations
- Added Workspaces
- These enhance the old Layout system by allowing you to create multiple workspaces all with their own layouts and freely switch between them
- Added a minimal layout
- Many people just want to have a dirt simple Hex Editor and not all the extra features ImHex offers
- The minimal layout is meant for them. It hides everything except the hex editor and makes the UI much simpler
- Added automatic backups
- Ever had ImHex crash on you randomly in the middle of work you haven't saved? Well now automatic backups can be enabled in the settings to they are created every N seconds
- Added a interactive tutorial
- There's currently just a simple one to get people started but more will be added in the future
- Merged in old ExtraHashes plugin
- This adds support for about 20 new hashes such as Adler32, Blake, Tiger and Murmur
- The Process Memory provider can now be used in Linux. Thanks a lot to @trumank
- Added support for locking layouts
- Replaced weird Import -> Base 64 option with a full Base64 provider
- This provider can transparently decode and re-encode base64 files to view and modify them
- Added support for Fedora 39, removed support for Fedora 37. Thanks to @jonathanspw
- Added support for hiding individual data inspector rows
- Added simple right click context menu to the pattern editor
- Added setting to enable colored pattern row backgrounds
- Added bitwise shift left/right nodes to the data processor
- Added release notes and commits to about page
- Added some fun things :)
- Added simple data access graph to pattern editor when a pattern is being executed
- All the copy-as formatters can now output data directly to a file
- Patterns in the pattern data view can now be filtered by value
- For example using
myStruct.* > 5
shows all members inside ofmyStruct
with a value greater than 5
- For example using
- Added a TCP Client/Server tester tool
- Added a simple function graphing calculator tool
- Added euclidean algorithms tool
- Added a search bar to open the command palette to the title bar
- Added pretty syntax highlighting to the demangler tool
- Added support for making fonts bold or italic
- Vastly improved the 3D Visualizer to render the model much nicer. Thanks a lot to @paxcut
- This includes specular lighting, light colors, wireframe mode, a grid and axes arrows
- Added
--hexdump
subcommand to the CLI to get a hexdump of a file - Added
--demangle
subcommand to the CLI to demangle symbols - Added setting to enable resource usage widgets in the footer
- Added new unit conversion tool to command pallette
- It currently supports switching between different number formats as well as byte / bit representations
- Some valid inputs are
5MiB in hex
,0x42000 to Mb
or0xAABBCC in decimal
- Added support for searching for specific strings in UTF-16 and while ignoring the character case
- Added button to export pattern language sections to a file
Improvements
- Rewrote, restructured and redesigned Settings interface
- Updated ImGui to v1.90
- We also merged in the new Shadows branch to add pretty shadows to all windows
- Lots and lots of UI improvements
- Replaced many info and error popup modals with toasts
- Lots and lots of internal rewrites, restructures and refactors
- Most of these changes aren't user-facing, however they made many systems much more stable so they won't break as easily anymore in the future
- Scrolling in the hex editor now works much nicer
- A entire 64 bit address space can now be displayed on one virtual page without losing precision
- Drastically improved performance of some background tasks
- Analyzing data regions and searching through the data will be much faster now
Edit -> Jump to
can now jump to big and little endian addresses- ImHex now supports using integrated GPUs on macOS
- The Raw Disk Provider now lists all physical drives on Windows and displays more friendly disk names now
- Default magic database is now bundled with application instead of being part of the content store
- The ImHex window is now force set to be 100% opaque which should fix issues where the window is partially transparent on some GPUs
- Newly opened windows are now automatically docked instead of floating around
- Improved "Unsaved Changes" popup that shows up when closing unsaved providers
- Zeros in the HTML formatted data are now grayed out
- Shift-Backspace now works in the pattern editor
- The color picker tool is much more useful now
- Added support for outputting colors in many different bit layouts with a specifyable amount of bits
- Added displaying of the name of the selected color
- Fixed docking two tool windows to each other making both disappear
- Files that are inside of subfolders now display their relative path in the file chooser popup
- Advanced provider settings (when available) are now part of the sidebar
- Hovering over a color in the Theme Manager now flashes that color in yellow in the UI
- CRC32 now uses reflected version by default as that is the standard. Thanks to @qux-bbb
- Many tables now refuse to collapse to zero-height
- Glyphs in the font atlas are now packed more efficiently so GPUs won't reject the texture as often anymore
- Bookmark addresses can now be changed in the UI after creating them
- The hex editor's footer is now collapsible
- More popups can now be closed by pressing Escape
- ImHex now tries to only render frames when it has to, saving more system resources
- Fixed some issues where settings might be reset in rare cases
Bug Fixes
- Fixed issue where no provider was being selected when closing a provider in some cases
- Fixed console opening and not disappearing when using the Windows Terminal
- Moving windows that overlap with the main window title bar no longer move the main window
- Popups that are not visible on the screen anymore are now properly reset back to the center
- Hovering over a provider tab always showed information about the current provider
- Fixed a crash when opening invalid files through the CLI
- Fixed achievement triggering every single time a file was opened through the CLI
- Fixed issues where the recursion check in the data processor triggered too early
- Fixed data processor workspaces not always loading correctly from a project file
- Fixed issues where the native scaling of ImHex was way too small
- Fixed modifying bytes sometimes get populated with incorrect values
- Fixed binary pattern search being broken with alignments greater than 1
- Fixed file picker not handling supported extensions correctly
- Fixed crash when using a too large column count in the hex editor
- Fixed issues with unary operators when evaluating mathematical expressions
- Fixed out-of-bounds reads when opening a zero-sized file
- Fixed highlight colors of bookmarks in the hex editor not changing when updating the bookmark's color
- Fixed opening files with non-ASCII file paths from the command line
- Fixed numeric search tool not displaying values in the correct endianess
- Fixed diffing view highlighting not working correctly with a custom base address
Pattern Language
- Ongoing: Big parts of the Pattern Language are currently being rewritten in order to drastically improve usability, speed and reliability
- Added support for writing back to the data source
- Adding
#pragma allow_edits
and then just assigning to a placed variable will now modify the analyzed data
- Adding
- Added support for decompressing data
- Pattern non-type template parameters are no longer added to the output
- Fixed
std::math::atan2
not being registered correctly - Fixed a bunch of other issues
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Web and M1 version, Workspaces, Tutorials, Auto backups and more
This release has been cooking for a very long time and encompasses over 500 commits improving basically every single aspect of ImHex in one way or another. Hope y'all like it 鉂わ笍
Additions
- ImHex is now available for the Web!
- It supports basically 99% of all features that the native version does (minus things like process memory, raw disk providers and some other things that browsers just don't have access to)
- Check it out at https://web.imhex.werwolv.net
- Support was added entirely by @iTrooz. Massive thanks to him!
- ImHex now has a native Apple M1 build!
- Currently this version is cross compiled from Linux
- It is unsigned and distributed in a zip file instead of a dmg (You might need to disable SIP to run it)
- Any PRs improving this are highly welcome!
- Again huge thanks to @iTrooz for adding this
- Added a Auto Updater
- Currently this supports the Windows MSI version, Ubuntu and macOS dmg version.
- Added a shortcut manager to the Settings
- Added Markdown reports
- This system allows you to export things like bookmarks, patterns and data information to a markdown file for easy documentation
- Greatly improve the Undo/Redo system
- This now allows you to undo and redo things like resizes, insertions and removals that previously were irreversible
- Important to note is, all changes made in ImHex still get applied to the file directly!
- Added option to specify custom highlighting rules to set the foreground color of bytes according to boolean equations
- Added Workspaces
- These enhance the old Layout system by allowing you to create multiple workspaces all with their own layouts and freely switch between them
- Added a minimal layout
- Many people just want to have a dirt simple Hex Editor and not all the extra features ImHex offers
- The minimal layout is meant for them. It hides everything except the hex editor and makes the UI much simpler
- Added automatic backups
- Ever had ImHex crash on you randomly in the middle of work you haven't saved? Well now automatic backups can be enabled in the settings to they are created every N seconds
- Added a interactive tutorial
- There's currently just a simple one to get people started but more will be added in the future
- Merged in old ExtraHashes plugin
- This adds support for about 20 new hashes such as Adler32, Blake, Tiger and Murmur
- The Process Memory provider can now be used in Linux. Thanks a lot to @trumank
- Added support for locking layouts
- Replaced weird Import -> Base 64 option with a full Base64 provider
- This provider can transparently decode and re-encode base64 files to view and modify them
- Added support for Fedora 39, removed support for Fedora 37. Thanks to @jonathanspw
- Added support for hiding individual data inspector rows
- Added simple right click context menu to the pattern editor
- Added setting to enable colored pattern row backgrounds
- Added bitwise shift left/right nodes to the data processor
- Added release notes and commits to about page
- Added some fun things :)
- Added simple data access graph to pattern editor when a pattern is being executed
- All the copy-as formatters can now output data directly to a file
- Patterns in the pattern data view can now be filtered by value
- For example using
myStruct.* > 5
shows all members inside ofmyStruct
with a value greater than 5
- For example using
- Added a TCP Client/Server tester tool
- Added a simple function graphing calculator tool
- Added euclidean algorithms tool
- Added a search bar to open the command palette to the title bar
- Added pretty syntax highlighting to the demangler tool
- Added support for making fonts bold or italic
- Vastly improved the 3D Visualizer to render the model much nicer. Thanks a lot to @paxcut
- This includes specular lighting, light colors, wireframe mode, a grid and axes arrows
- Added
--hexdump
subcommand to the CLI to get a hexdump of a file - Added
--demangle
subcommand to the CLI to demangle symbols - Added setting to enable resource usage widgets in the footer
- Added new unit conversion tool to command pallette
- It currently supports switching between different number formats as well as byte / bit representations
- Some valid inputs are
5MiB in hex
,0x42000 to Mb
or0xAABBCC in decimal
- Added support for searching for specific strings in UTF-16 and while ignoring the character case
- Added button to export pattern language sections to a file
Improvements
- Rewrote, restructured and redesigned Settings interface
- Updated ImGui to v1.90
- We also merged in the new Shadows branch to add pretty shadows to all windows
- Lots and lots of UI improvements
- Replaced many info and error popup modals with toasts
- Lots and lots of internal rewrites, restructures and refactors
- Most of these changes aren't user-facing, however they made many systems much more stable so they won't break as easily anymore in the future
- Scrolling in the hex editor now works much nicer
- A entire 64 bit address space can now be displayed on one virtual page without losing precision
- Drastically improved performance of some background tasks
- Analyzing data regions and searching through the data will be much faster now
Edit -> Jump to
can now jump to big and little endian addresses- ImHex now supports using integrated GPUs on macOS
- The Raw Disk Provider now lists all physical drives on Windows and displays more friendly disk names now
- Default magic database is now bundled with application instead of being part of the content store
- The ImHex window is now force set to be 100% opaque which should fix issues where the window is partially transparent on some GPUs
- Newly opened windows are now automatically docked instead of floating around
- Improved "Unsaved Changes" popup that shows up when closing unsaved providers
- Zeros in the HTML formatted data are now grayed out
- Shift-Backspace now works in the pattern editor
- The color picker tool is much more useful now
- Added support for outputting colors in many different bit layouts with a specifyable amount of bits
- Added displaying of the name of the selected color
- Fixed docking two tool windows to each other making both disappear
- Files that are inside of subfolders now display their relative path in the file chooser popup
- Advanced provider settings (when available) are now part of the sidebar
- Hovering over a color in the Theme Manager now flashes that color in yellow in the UI
- CRC32 now uses reflected version by default as that is the standard. Thanks to @qux-bbb
- Many tables now refuse to collapse to zero-height
- Glyphs in the font atlas are now packed more efficiently so GPUs won't reject the texture as often anymore
- Bookmark addresses can now be changed in the UI after creating them
- The hex editor's footer is now collapsible
- More popups can now be closed by pressing Escape
- ImHex now tries to only render frames when it has to, saving more system resources
- Fixed some issues where settings might be reset in rare cases
Bug Fixes
- Fixed issue where no provider was being selected when closing a provider in some cases
- Fixed console opening and not disappearing when using the Windows Terminal
- Moving windows that overlap with the main window title bar no longer move the main window
- Popups that are not visible on the screen anymore are now properly reset back to the center
- Hovering over a provider tab always showed information about the current provider
- Fixed a crash when opening invalid files through the CLI
- Fixed achievement triggering every single time a file was opened through the CLI
- Fixed issues where the recursion check in the data processor triggered too early
- Fixed data processor workspaces not always loading correctly from a project file
- Fixed issues where the native scaling of ImHex was way too small
- Fixed modifying bytes sometimes get populated with incorrect values
- Fixed binary pattern search being broken with alignments greater than 1
- Fixed file picker not handling supported extensions correctly
- Fixed crash when using a too large column count in the hex editor
- Fixed issues with unary operators when evaluating mathematical expressions
- Fixed out-of-bounds reads when opening a zero-sized file
- Fixed highlight colors of bookmarks in the hex editor not changing when updating the bookmark's color
- Fixed opening files with non-ASCII file paths from the command line
- Fixed numeric search tool not displaying values in the correct endianess
- Fixed diffing view highlighting not working correctly with a custom base address
Pattern Language
- Ongoing: Big parts of the Pattern Language are currently being rewritten in order to drastically improve usability, speed and reliability
- Added support for writing back to the data source
- Adding
#pragma allow_edits
and then just assigning to a placed variable will now modify the analyzed data
- Adding
- Added support for decompressing data
- Pattern non-type template parameters are no longer added to the output
- Fixed
std::math::atan2
not being registered correctly - Fixed a bunch of other issues
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Command Line Interface, .NET scripts, Achievements
Additions
- Added a command line interface to ImHex. Huge thanks to @iTrooz
- Get started by typing
imhex --help
- Get started by typing
- Added initial support for .NET scripts
- These scripts are meant to be a cross-platform way of performing automated actions.
- They cannot be used to add new features like native plugins can
- Special thanks to @PerikiyoXD for some really involved fixes around this
- Added Achievements
- These are meant to provide an easy and fun way to learn and get used to ImHex
- The achievement window can be opened by going to Extras -> Achievement
- If you don't like the achievements and just want to use ImHex like before, open the achievements window and disable the popups there
- Added a new and much nicer splash screen
- Allow memory files to be saved to project files and be renamed
- Files can also be converted to memory files now
- Added support for hashing arbitrary strings using the hashes view
- Added built-in logging console
- Allow hex editor data visualizers to be switched to big-endian mode
- Upgraded to Capstone V5 finally
- Encoding names are now being displayed in the header of the hex editor
- Added a "Update All" button to the content store
- Linux now uses the GTK filepicker whenever possible
- This should correct issues where the file picker didn't work correctly on some Linux systems by default
- The AppImage and Flatpak still use the Portals filepicker because it's necessary there
- The hex editor editing mode is now being entered when pressing Enter
- Added a setting to remember the current main window size and position
- Added option to fill a selected region with bytes
- Added option to switch between human-readable sizes and bytes in the hex editor footer. Thanks to @LennardF1989
- Removed Anonfiles file uploader. Rest in Peace 鉁濓笍
- Added windo actions popup when clicking on the header icon
- Added authors and descriptions to things in the content store
- Added shortcuts to switch between providers, evaluate patterns and interact with the pattern debugger
Improvements
- Improved the data information diagrams look and field
- Multi-window support is now being disabled properly by default on Linux
- Plugins are now being loaded asynchronously to improve startup times
- Pattern console is automatically scrolled to the bottom now when new lines are being added
- Unidentifiable data is being handled better now in the data information view
- Allow hex editor view to be scrolled slightly past the end
- Made demangler results selectable and copyable
- Timestamp of files is being updated correctly now on Windows. Thanks to @lorsanta
- ImHex should now exit cleanly when crashing
- Bytes per row count setting in the hex editor is being remembered now. Thanks to @LennardF1989
Bug Fixes
- Fixed raw disk provider not working correctly on non-windows platforms. Thanks a lot to @Nowilltolife
- Fixed disassembler view not clearning selection when typing in the region field
- Fixed page count displaying wrongly in empty files
- Fixed crash when trying to paste bytes without a selection
- Fixed occasional crash when evaluating patterns
- Fixed scaling not being applied properly in some cases
- Fixed bookmarks not being loaded correctly from project files
- Fixed menu bar being scrollable sideways
- Fixed loading projects when an existing project is loaded already
- Fixed issues where the cursor started flickering when hovering certain elements
- Fixed crash when clicking on "Open in new view" in a bookmark
- Fixed occasional crash when loading incorrect data processor node files
- Fixed writing to non-zero pages in the hex editor when a custom base address has been set
- Fixed issue where libmagic dumped a bunch of compiled files into the cwd on Linux and macOS. Thanks to @iTrooz
- Fixed endianess of all CRC hashes
- Fixed highest/lowest entropy block address in the data information view being wrong
- Fixed issue where downloading items from the store was suceptible for path traversal. Thanks to @iTrooz
- Fixed various data processor issues
Pattern Language
- Added
typenameof
operator - Added
[[hex::favorite]]
attribute to mark patterns as favorites directly - Added
[[hex::group]]
attribute to add patterns to custom groups in the pattern data view - Added single-stepping feature to pattern debugger
- Added coordinates visualizer
- Added timestamp visualizer
- Images in the pattern image and bitmap visualizer can now be scaled
- Added various new inline visualizers such as "color", "guage" and "button"
- Format functions are no longer being evaluated during highlighting
- Sections without a name are being hidden now and treated as "internal" sections
- Added
[[hex::spec_name]]
attribute to document names for pattern variables taken from the documentation - Added string in/out variables
- Fixed issue where pattern local variables sometimes allocated huge amounts of memory
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Font loading and favorite pattern fixes
Improvements
- The Accept Pattern popup can now be closed using Escape
Bug Fixes
- Fixed an issue that caused the unifont font to not be loaded correctly causing mainly asian languages to not display correctly
- Fixed a rendering issue with the entropy and byte type graph
- Fixed hex editor hovering tooltips of large arrays causing ImHex to lag a lot
- Fixed favorites loading in large patterns causing ImHex to freeze
Previous Release
Additions
- Added option to export generated pattern data
- This allows you to export your current patterns as JSON, YAML and HTML
- Added a debugger to debug your pattern code
- This allows setting breakpoints, halting the execution and inspecting the value of variables
- Added option to upload crash logs to help us fix issues more quickly. Huge thanks to @Nowilltolife
- Added optional usage statistics reporting. Huge thanks to @Nowilltolife
- Added provider tab right click menu with provider-specific options
- The file provider for example has a option to open the file location in the explorer or open the file in an external editor
- Recent providers can now be removed from the list in the welcome screen by right clicking them and selecting "Remove". Thanks to @iTrooz
- Added support for changing the hex editor page size
- Opened projects are now being saved to the recent entries
- Added a native error message when the GLFW fails to be created. Thanks to @iTrooz
- Added a replace feature to the find view
- Added advanced provider information when hovering over its tab and holding down SHIFT
- Updated ImGui and its extension libraries to the newest versions. Thanks a lot to @iTrooz
- Added filter option to the pattern data view
- Added support for marking specific patterns in the pattern data view as favorite
- The pattern editor console can now be resized and text in it can be selected and copied
- Pattern language console log is now always printed immediately
- The Offset column in the pattern data view has been split into a Start and End column
Improvements
- The files in the file chooser popup now appear in alphabetical order
- Themes can now make use of Windows's acrylic blur window background
- Drastically improved crash backup and restore logic
- Additional title bar buttons are now being displayed when not running in borderless window mode. Thanks to @iTrooz
- Drastically improved loading times for custom encoding files
- Projects that fail to load now display a detailed error message. Thanks to @iTrooz
- Drastically improve usefulnes of stacktraces, especially on Windows.
Bug Fixes
- Fixed rendering issues with custom encodings. Thanks a lot to @shenlebantongying
- Entropy and byte type distribution graph now always fill out the entire diagram width
- Fixed issue where view-sepecific shortcuts would get applied globally
- Fixed issue where ranges found by find view were not being highlighted
- Fixed invalid key code error being spammed in the console
- Fixed a crash when sorting the value column in the pattern data view
- Fixed issues where the intel hex provider didn't display any data
- Fixed an issue where projects couldn't be saved if the current provider wasn't writable
- Fixed commit hash and branch not being displayed correctly in various places
Pattern Language
- Added
#pragma magic
to automatically load patterns based on a sequence of bytes at a specific location in the data instead of using MIME types - Added a new
hex_viewer
visualizer - Added the
[[export]]
attribute to display pattern local variable in the pattern data view - Massively improved handling of local variables
- Variables used in functions, function parameters and pattern local variables should now behave a lot more like you'd expect
- Fixed issues with the pattern 3D visualizer calculating normal vectors incorrectly. Thanks to @paxcut
- Fixed issue where loops and conditionals increased the parent stack
- Fixed a crash when pragmas didn't end with a new line
- Fixed static arrays displaying the same value for all entries
- Fixed handling of return statements in global scope
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Pattern language debugger, [[export]]ing local patterns, pattern data view improvements
Additions
- Added option to export generated pattern data
- This allows you to export your current patterns as JSON, YAML and HTML
- Added a debugger to debug your pattern code
- This allows setting breakpoints, halting the execution and inspecting the value of variables
- Added option to upload crash logs to help us fix issues more quickly. Huge thanks to @Nowilltolife
- Added optional usage statistics reporting. Huge thanks to @Nowilltolife
- Added provider tab right click menu with provider-specific options
- The file provider for example has a option to open the file location in the explorer or open the file in an external editor
- Recent providers can now be removed from the list in the welcome screen by right clicking them and selecting "Remove". Thanks to @iTrooz
- Added support for changing the hex editor page size
- Opened projects are now being saved to the recent entries
- Added a native error message when the GLFW fails to be created. Thanks to @iTrooz
- Added a replace feature to the find view
- Added advanced provider information when hovering over its tab and holding down SHIFT
- Updated ImGui and its extension libraries to the newest versions. Thanks a lot to @iTrooz
- Added filter option to the pattern data view
- Added support for marking specific patterns in the pattern data view as favorite
- The pattern editor console can now be resized and text in it can be selected and copied
- Pattern language console log is now always printed immediately
- The Offset column in the pattern data view has been split into a Start and End column
Improvements
- The files in the file chooser popup now appear in alphabetical order
- Themes can now make use of Windows's acrylic blur window background
- Drastically improved crash backup and restore logic
- Additional title bar buttons are now being displayed when not running in borderless window mode. Thanks to @iTrooz
- Drastically improved loading times for custom encoding files
- Projects that fail to load now display a detailed error message. Thanks to @iTrooz
- Drastically improve usefulnes of stacktraces, especially on Windows.
Bug Fixes
- Fixed rendering issues with custom encodings. Thanks a lot to @shenlebantongying
- Entropy and byte type distribution graph now always fill out the entire diagram width
- Fixed issue where view-sepecific shortcuts would get applied globally
- Fixed issue where ranges found by find view were not being highlighted
- Fixed invalid key code error being spammed in the console
- Fixed a crash when sorting the value column in the pattern data view
- Fixed issues where the intel hex provider didn't display any data
- Fixed an issue where projects couldn't be saved if the current provider wasn't writable
- Fixed commit hash and branch not being displayed correctly in various places
Pattern Language
- Added
#pragma magic
to automatically load patterns based on a sequence of bytes at a specific location in the data instead of using MIME types - Added a new
hex_viewer
visualizer - Added the
[[export]]
attribute to display pattern local variable in the pattern data view - Massively improved handling of local variables
- Variables used in functions, function parameters and pattern local variables should now behave a lot more like you'd expect
- Fixed issues with the pattern 3D visualizer calculating normal vectors incorrectly. Thanks to @paxcut
- Fixed issue where loops and conditionals increased the parent stack
- Fixed a crash when pragmas didn't end with a new line
- Fixed static arrays displaying the same value for all entries
- Fixed handling of return statements in global scope
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Custom layouts, Spanish translation, try-catch statements
Additions
- Added support for saving / loading your own Layouts!
- Added spanish translation. Thanks a lot to @XorTroll
- Added a network control interface
- When enabled, external tools can now send commands to ImHex over a TCP Socket
- Added non-ranged and aligned value search to find view
- Added a Documentation helper AI window where you can ask questions about ImHex and the Pattern Language
- Added selection range radio button to various views to allow specifying of exact start/end addresses
- Added a button to restore default layout when no views are open
- Opening .hexproj files through the File -> Open menu now opens them as Projects instead of as Files
- Names and Values in the pattern data view now display tooltips when hovering over them if they're too long
- Added bit and byte reversal nodes to the data processor. Thanks to @Nowilltolife
- Drastically improve the usefulness of the IEEE754 tool. Massive thanks to @paxcut
Improvements
- ImHex now tries its best to not keep any file handles around
- This should allow opening files in other tools while they're already open inside of ImHex.
- For this to work, the other tool needs to support sharing the file though.
- Some things that didn't really fit in the
Help
menu have been moved to the newExtras
menu - Many things that accessed file data are now significantly faster
- Files in the file chooser popup can now be opened by double clicking them
- Greatly improved how popups are being handled
- Pins in the data processor are more visible now
- Buttons in the bookmarks view now have tooltips
- ImHex's FPS limit now better follows the setting
- ImHex now shows an error message when it can't open files. Thanks to @iTrooz
- Pattern highlighting is now being generated much more quickly
- About page is now resizable
- Diff table is now being cleared properly when providers are closed
- MacOS should now be able to use the Open With dialog to open a file with ImHex
- Patterns that are empty can no longer be saved
- Patterns are now being automatically re-evaluated when code sync is on and the provider is being changed
- Fixed issue where the cursor icon sometimes got stuck on Windows
Bug Fixes
- Fixed crash when trying to place patterns through the Edit menu
- Fixed issue where Disassembler names didn't correspond to the correct architecture
- Fixed occasional crashes when opening project files
- Fixed a bug where the last line of patterns went missing when saving / reloading them
- Multi-window support is now disabled by default on Linux as it doesn't work well. It can still be enabled in the settings.
- Fixed issue where some shortcuts triggered twice
- Fixed commit link in about page not working correctly
- Fixed provider undo stack not working correctly
- Fixed crash when patterns are being evaluated to quickly in succession
- Fixed project files failing to save when custom encodings are loaded
- Fixed issue where ImHex sometimes dumped a bunch of compiled magic files into the user's current directory
- Fixed a crash when closing providers too quickly
- Fixed Copy-As options not being disabled correctly in some cases
- Fixed issue where editing a hex cell sometimes had the wrong value in it
Pattern Language
- Added try-catch statements
- Added
std::math::exp()
- The
std::file
functions can now write entire patterns to a file instead of just strings - Ternary operators now correctly short-circuit
- Fixed use of templates in pointer sizes
- Fixed tons and tons of bugs
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
`match` statements, `bitfield` improvements, custom themes
New projects
-
The documentation that has been finally written from scratch for most of the important features of ImHex and the Pattern Language. You can find it at https://imhex.werwolv.net/docs
-
The Pattern Language is now compatible with Emscripten so it can running in a browser! A proof of concept of this is available on https://pl.werwolv.net. It can do the same thing as the
plcli
'sformat
option can do, it takes a pattern and a binary file and converts it to a JSON, YAML or HTML file.
New Plugins
Two new plugins have been developed for ImHex as well!
- Malcore Plugin - Allows you to upload binary data to the Malcore service for analysis
- Hashes Plugin - Adds tons of new hashes to the hashes view
Additions
- Rewrote the entire Diffing view to make it actually usable
- Added support for custom themes
- These themes can either be downloaded through the Content Store or created and shared yourself through the Theme Manager
- Custom nodes can now be downloaded from the Content Store
- Added rotation and scale sliders to the 3D visualizer
- Added support for loading custom CA certs
- Added binary hex cell visualizer
- ImHex now once again loads the entire unicode character plain if possible
- Added option to disable saving of recently loaded files
- File -> Save As can now be used in all providers correctly
- Most string search options can now also be applied to the regex search
- Custom data inspector rows can now be edited
- Most main menu commands can now be found in the Command Palette (CTRL + SHIFT + P)
- Added a new byte swapper tool to the tools view
- Added new CRC hash types. Thanks to @jcreedon
- Added new Fedora 38 build. Thanks to @jonathanspw
Improvements
- Text editor now properly considers underscores as part of words
- Removed x3.0 and x4.0 scaling settings as these caused issues with GPU drivers often
- Files are no longer mapped into memory when opened by ImHex so other programs can keep using them now
- The choose file dialog entries are now correctly sorted and display their full path when hovered
- CTRL + N now properly creates a new memory file provider instead of opening a file picker. Thanks to @qux-bbb
- Chunk size and analysis region can now be specified in the data information view. Thanks to @Fenrisfulsur
- Custom encoding characters are now being rendered correctly when split between two lines
- Recent items are now being limited to 5 files at max
- The Yara match list is now sortable
- Drastically improved Bookmarks view
- Improved filtering speeds of the find view
- The current commit hash and branch now correctly shows up in the About view on release builds
- Providers now display better error messages when they can't load their data. Thanks to @iTrooz
- Search processes from the find view can now be correctly canceled
- A tooltip in the settings now informs the user about selecting custom fonts and scaling them
- Improved the look and feel of the content store
- Config files are now properly stored in the correct XDG directories on Linux
- Selected custom encoding files are now correctly saved to the current project file
- When a custom encoding is loaded and the ASCII column is disabled, there is no longer a huge gap now
- The Character padding setting now properly applies to the custom encoding column
- Improve loading speed of custom encoding files
Bug Fixes
- Fixed the bug where ImHex would keep jumping back up in the hex view when making a selection
- Fixed issues where UI was scaled too large
- Fixed editing of binary values in the data inspector
- Fixed various issues with the GDB provider
- Fixed string search not including strings at the end of the data
- Fixed rendering of UTF-16BE strings in find view
- Fixed find view string search filters filtering wrong characters. Thanks to @qux-bbb
- Fixed an issue where advancing to the next row when editing a byte would load the wrong value
- Fixed Yara view filtering out all but one match
- Fixed a crash when not making a valid selection in a provider load interface
- Fixed moving around the hex editor cursor with the arrow keys
- Fixed the standard magic file not always working correctly
- Saving and loading a pattern will no longer add a new line to it
- Using Save As on the current file no longer truncates it
- Fixed rare freezes when resizing ImHex
- Fixed occasional crashes when using ImHex through the Windows Remote Desktop
- Fixed entering of decimal and float values in the hex editor with the relevant cell visualizer selected
- Fixed filtering of long strings in the find view
Pattern Language
- Added
match
statements. Thanks a lot to @Nowilltolife - Added
std::math::accumulate
. Thanks to @Nowilltolife - Added
std::random
functions - Added
std::core::set_display_name
function. Thanks to @amaksoft - Absolute MASSIVE improvements to bitfields. Huge thanks to @Zaggy1024
- Conditionals now work correctly inside of bitfields
- Added support for unsigned, signed, boolean and enum fields inside of bitfields
- Added support for nested bitfields and bitfield arrays inside of bitfields
- Replaced [[left_to_right]] and [[right_to_left]] with a [[bitfield_order]] attribute that offers more control
- Added support for using regular types inside of bitfields
- Massive improvements to templates. Again huge thanks to @Zaggy1024
- Templates of the same type can now be nested
- Template types can now be inherited from
- Fixed various issues with templates in general
- Added support for using any type as pointer size type
- Added support for compiling the PatternLanguage to WebAssembly
- CRC32 function now correctly calculates their value the same way ImHex does
- Fixed highlighting of patterns placed in custom sections
- Fixed casts changing endianess in big endian mode
- Fixed 128 bit integer sign extension
- Fixed formatting of 128 bit enums
- Fixed placing of arrays in sections from within functions
- Fixed some occurrences of duplicate identifiers not being caught
- Fixed various issues related to doc comments
- Fixed rvalue accesses in custom sections
- Fixed type operators increasing the cursor position
- Fixed modifiying of big endian values. Thanks to @soxfox42
- Fixed issues with heap and pattern-local variables
- Fixed [[hidden]] and [[highlight_hidden]] attributes not working correctly
- Fixed creating of local variables in global scope
- Fixed parsing of nested templates
Absolute massive thanks to everybody that got involved in this Project in the past weeks. You're amazing <3
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Text Editor improvements, bug fixes
Screenshots
Improvements
- Improved word selecting in text editor and added CTRL + Backspace/Delete shortcuts to delete full words
Bug Fixes
- Fixed various build issues on some Linux platforms
- Fixed safety backup restore popup getting hidden by the tip of the day popup
Pattern Language
- Fixed attributes not being applied correctly to bitfield fields
- Fixed issues where turning a type into bytes didn't correctly consider Proxy types with a zero size
- Fixed offsets of static array members getting messed up by highlighting process
- Fixed crash when returning invalid values from format/transform functions
Previous Release
Additions
- Added support for selecting OTF font files as custom fonts
- Added a new Division by Invariant Multiplication calculator tool
- Added support for specifying multiple Yara rules to be executed in order
- Added support for custom Nodes in the data processor
- These nodes can be created directly in the editor and then exported and shared
- We have a new section in the WerWolv/ImHex-Patterns repo for sharing these nodes!
- Added support for specifying input values for integer and float inputs on nodes directly on the node itself
- Added new builds for Fedora Rawhide, RHEL and AlmaLinux. Thanks to @jonathanspw
- Resources such as patterns, includes and scripts can now be loaded from folders relative to the current project file
- Task progress is now being displayed in the Taskbar on Windows
- Added basic stack trace output on crash
- Added support for macOS keyboard shortcut layouts. Thanks to @Kuruyia
- Added support for saving more things to project files
- Added a Base64 file exporter
- Added option to copy the selected custom encoding string
- Added a wait popup when Tasks are still running when ImHex is being closed
- Added option to import patches from a modified version of the same file
Improvements
- Project is now correctly closed when all providers have been closed. Thanks to @iTrooz
- Improved handling of Projects in general
- Improved native scaling handler on macOS
- Added a short description to the IEEE754 decoder tool
- Reordered File menu to make more logical sense
- Allow .yar and .yara files to be loaded
- Added better error messages for importing/exporting IPS patches
- The process memory provider's process and module list can now be searched case-insensitively
- The find view string finder can now be searched case-insensitively
- Updated Japanese translation. Thanks to @Berylskid
- Updated the German translation
Bug Fixes
- Fixed IEEE 754 tool typo. Thanks to @ivq
- Fixed the editing cursor not advancing automatically after the first page of data
- Fixed Intel Hex and Motorola SREC files not being openable on macOS
- Fixed issues with Yara rules not being able to include other rules
- Fixed exceptions not displaying their error messages correctly
- Fixed logs always being saved to user folders, even on portable releases
- Fixed ImHex not being able to load properly in portable mode from a folder without permissions
- Fixed rare crash when loading providers
- Fixed importing of IPS and IPS32 patches being broken
- Fixed find view not correctly accepting hexadecimal values
- Fixed copying bytes from non-zero pages not working correctly
- Fixed rendering of custom encodings on non-zero pages
- Fixed CRC8 hashing algorithm displaying 16 bits instead of 8
- Fixed loading of Hex and SREC files with new lines in them
- Fixed last row in diff view always being displayed as zeros
Pattern Language
- Added various Visualizers to graphically visualize patterns and binary data
- Currently available Visualizers are
line_plot
,scatter_plot
,image
,bitmap
,disassembler
,3d
,sound
- Currently available Visualizers are
- Added option to automatically expand or flatten the pattern data tree
- Added support for specifying local variables inside of structs
- Added ability to query various informations from the currently loaded provider
- Added
const
variables application/octet-stream
is no longer considered a valid MIME type as it matches any unknown format- Bitfield field bit addresses now always specify the offset from the start of the bitfield instead of from the start of the current byte
- Fixed editing of static array values
- Fixed various issues with recursion
- Fixed character patterns not always being formatted correctly
- Fixed crash when removing out variables
- Fixed string conversions not properly trimming values
- Added better array out of bounds checks for arrays
- Custom patterns are now always being passed as references implicitly
- Fixed only the last pragma of a specific type to be executed
- Added support for attributes with more than one parameter
- Allow
this
to be used in variable attributes to refer to the current variable - Fixed printing of strings with null bytes in them
- Fixed pointer values being evaluated twice
- Added
null
keyword - Fixed
#endif
directives requiring a space behind it to work - Added
format_read_entries
,format_write_entries
andtransform_entries
attributes - Added
highlight_hidden
attribute to disable highlighting of the current pattern
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Pattern Visualizers, better data processor
Screenshots
Additions
- Added support for selecting OTF font files as custom fonts
- Added a new Division by Invariant Multiplication calculator tool
- Added support for specifying multiple Yara rules to be executed in order
- Added support for custom Nodes in the data processor
- These nodes can be created directly in the editor and then exported and shared
- We have a new section in the WerWolv/ImHex-Patterns repo for sharing these nodes!
- Added support for specifying input values for integer and float inputs on nodes directly on the node itself
- Added new builds for Fedora Rawhide, RHEL and AlmaLinux. Thanks to @jonathanspw
- Resources such as patterns, includes and scripts can now be loaded from folders relative to the current project file
- Task progress is now being displayed in the Taskbar on Windows
- Added basic stack trace output on crash
- Added support for macOS keyboard shortcut layouts. Thanks to @Kuruyia
- Added support for saving more things to project files
- Added a Base64 file exporter
- Added option to copy the selected custom encoding string
- Added a wait popup when Tasks are still running when ImHex is being closed
- Added option to import patches from a modified version of the same file
Improvements
- Project is now correctly closed when all providers have been closed. Thanks to @iTrooz
- Improved handling of Projects in general
- Improved native scaling handler on macOS
- Added a short description to the IEEE754 decoder tool
- Reordered File menu to make more logical sense
- Allow .yar and .yara files to be loaded
- Added better error messages for importing/exporting IPS patches
- The process memory provider's process and module list can now be searched case-insensitively
- The find view string finder can now be searched case-insensitively
- Updated Japanese translation. Thanks to @Berylskid
- Updated the German translation
Bug Fixes
- Fixed IEEE 754 tool typo. Thanks to @ivq
- Fixed the editing cursor not advancing automatically after the first page of data
- Fixed Intel Hex and Motorola SREC files not being openable on macOS
- Fixed issues with Yara rules not being able to include other rules
- Fixed exceptions not displaying their error messages correctly
- Fixed logs always being saved to user folders, even on portable releases
- Fixed ImHex not being able to load properly in portable mode from a folder without permissions
- Fixed rare crash when loading providers
- Fixed importing of IPS and IPS32 patches being broken
- Fixed find view not correctly accepting hexadecimal values
- Fixed copying bytes from non-zero pages not working correctly
- Fixed rendering of custom encodings on non-zero pages
- Fixed CRC8 hashing algorithm displaying 16 bits instead of 8
- Fixed loading of Hex and SREC files with new lines in them
- Fixed last row in diff view always being displayed as zeros
Pattern Language
- Added various Visualizers to graphically visualize patterns and binary data
- Currently available Visualizers are
line_plot
,scatter_plot
,image
,bitmap
,disassembler
,3d
,sound
- Currently available Visualizers are
- Added option to automatically expand or flatten the pattern data tree
- Added support for specifying local variables inside of structs
- Added ability to query various informations from the currently loaded provider
- Added
const
variables application/octet-stream
is no longer considered a valid MIME type as it matches any unknown format- Bitfield field bit addresses now always specify the offset from the start of the bitfield instead of from the start of the current byte
- Fixed editing of static array values
- Fixed various issues with recursion
- Fixed character patterns not always being formatted correctly
- Fixed crash when removing out variables
- Fixed string conversions not properly trimming values
- Added better array out of bounds checks for arrays
- Custom patterns are now always being passed as references implicitly
- Fixed only the last pragma of a specific type to be executed
- Added support for attributes with more than one parameter
- Allow
this
to be used in variable attributes to refer to the current variable - Fixed printing of strings with null bytes in them
- Fixed pointer values being evaluated twice
- Added
null
keyword - Fixed
#endif
directives requiring a space behind it to work - Added
format_read_entries
,format_write_entries
andtransform_entries
attributes - Added
highlight_hidden
attribute to disable highlighting of the current pattern
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Actually fix startup issues
Improvements
- Made content store window resizable
Bug Fixes
- Actually fixed the last releases not starting at all anymore on macOS and Linux
Previous Changelog
Additions
- Added a "Save Project" menu entry to quickly save the current project without specifying a path
- Added byte Type distribution, digram and layered distribution plots to information view
- Added support for pasting byte strings with
0x
prefixes or commas inbetween in the hex editor view. Thanks to @Diadlo for their initial implementation of this - Added native theming support
- New themes can now simply be placed in the
%IMHEX%/themes
folder for them to be loaded
- New themes can now simply be placed in the
- Added a Process Memory Provider on Windows
- This provider can attach to any process and read its entire address space
- It can also list all available sections and modules, and inject new DLLs
Improvements
- ImHex now automatically disables unicode support if the used GPU doesn't have enough VRAM to load all glyphs
- Debug builds now completely ignore plugins that are not in the
plugins
folder next to the executable- This is useful for debugging issues especially on Linux systems where ImHex has been installed using a package manager
- The localization system has been completely revamped and now uses simple json files
- If you plan on adding support for a new language, there's a simple tool to help you with that now. Check out the HACKING.md file for more information
- Improved speed of entropy graph calculation
- Improved German translation. Thanks to @123456abcdef
- Improved Chinese (Simplified) translation. Thanks to @xtexChooser
- ImHex is now compiled using
-Wpedantic
to make sure we're using valid ISO C++
Bug Fixes
- Fixed building with LTO enabled
- Fixed patterns not appearing if pattern editor is not visible
- Fixed a crash when closing a section view while bytes were selected
- Fixed file provider adding additional zero bytes at the end of the file when saving
- Fixed issues where the hex editor view would sometimes jump back to the start of the file after searching
- Fixed searching for negative floating point values
- Fixed a crash when printing NULL bytes to the pattern console
- Fixed bookmarks displaying too many bytes in some cases
- Fixed saving of projects to paths containing non-ASCII characters
- Fixed various issues where iterators and containers got accessed incorrectly which could lead to issues and crashes
- Fixed template types being placable through the hex editor right click menu
Pattern Language
- Added the ability to modify values in the pattern data view
- To go into editing mode, double click the value field of a pattern in the pattern data view
- This works for all built-in types as well as enums by default
- If you want to make your own types modifyable, use the
[[format_write]]
attribute
- Arrays are now displayed without extra indentation if there's less than 512 entries in it
- Added visualizers
- Currently available are a basic line plot and an image visualizer
- They can be used through the
[[hex::visualizer]]
attribute
- Added support for anonymous patterns
- Allow sections to be initialized using strings
- Added new
std::mem::find_string_in_range
function str
variables can now be used in global scope- Patterns views can now be placed from functions using the placement syntax
- This doesn't add a new pattern to the pattern list but can be used to read/write bytes
- Added
$[123]
syntax to read a single byte from the main memory - Added support for doc comments
- These can be parsed and turned into markdown files using the plcli tool
- Allow attributes to directly use rvalues instead of being limited to string literals only
- This allows you to for example have pattern names, colors and many other things depend on values in the type they are applied to
- Fixed passing local variables to functions
- Fixed array out of bounds checks applying to heap arrays
- File handles are now cleaned up completely after evaluaton finishes
- Fixed reading from bitfield fields that have been placed in a different section
- Fixed
[[sealed]]
attribute not working correctly with static arrays - Improved pattern memory usage
- Fixed various issues with reference parameters
- Fixed bitfield fields not respecting endianess settings
- The
[[format]]
attribute has been deprecated in favour of the new[[format_read]]
and[[format_write]]
attributes - Fixed some patterns having no name or a black color
- Fixed broken sign extension of 64 and 128 bit signed variables
- Fixed dynamic arrays always overriding colors
- Fixed indexing of strings and wide strings
- Prevented indexing of non-indexable types
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!