ImHex Changelog

What's new in ImHex 1.33.2

Apr 19, 2024
  • Improvements:
  • ImHex properly enters low power mode on Linux again now
  • Unifont characters are now being loaded at their native size to make them crisp like the Western characters
  • The splash screen is not being scaled weirdly anymore now
  • Added a hint when the advanced data information section didn't yield any result
  • Bug Fixes:
  • Fixed linking to libyara. This should resolve issues with e.g the AUR version not starting anymore
  • Fixed issues with the auto updater on Windows
  • Fixed view providers not being saved to project files correctly
  • Fixed highlighting not updating correctly when changing Bookmark regions
  • Fixed crash upload setting not being disabled correctly when choosing "Deny" in the initial popup
  • Fixed custom base address issues with the data inspector and copy as array options
  • Fixed advanced data information not showing up correctly
  • Fixed selection being removed sometimes when right clicking it
  • Fixed infinite loop when exporting a selection to a file
  • Fixed control characters ending up in log files
  • Fixed a crash when opening an unopenable file
  • Pattern Language:
  • Fixed various issues with the virtual file system
  • Fixed data decompression functions not extracting the entire data

New in ImHex 1.33.0 (Mar 2, 2024)

  • Additions:
  • All main menu entries now have pretty icons
  • Added Myers' diffing algorithm to the diff view
  • This algorithm can display insertions and removals as well as modifications
  • Huge thanks to the maintainer of Malcat!
  • Added option to customize toolbar icons
  • Added a much improved Out of the Box experience when first starting up ImHex
  • Added many new hash algorithms
  • This includes basic sum checksums, Snefru, Haval, various SHA versions, Keccak, RIPEMD, many CRC presets and many more
  • Greatly improved the data information view
  • Sections can now be switched on and off
  • Magic information now includes more than one entry if there's multiple concatenated files
  • The Digram and Layered distribution graphs now perform a lot better
  • There's now built-in yara rules that are being run on files to detect compilers, programming languages and more for executables
  • Greatly improved the pattern editor
  • Thanks a lot to @paxcut
  • This adds support for find and replace, better highlighting and many other smaller things
  • Added Mini Map to the Hex Editor
  • This can be enabled by clicking on the map icon in the hex editor footer
  • There's also config options when right clicking that icon
  • Added Edit -> Jump to -> Pattern option to jump directly from hex editor highlights to patterns
  • Clicking on patterns in the pattern data view also jumps to their definition in the pattern editor now
  • Added a font picker to the settings
  • Added option to highlight parent pattern regions in the hex editor when hovering over them
  • Added support for searching for other string encodings and endianess. Thanks a lot to @PerikiyoXD
  • Added a pretty drag-n-drop overlay when dragging files onto ImHex
  • Added support for virtual file systems through the pattern language
  • Added option to keep ImHex always on top of other windows
  • Added option to use ImHex in fullscreen mode
  • Added support for switching to other providers through the command palette
  • Added a setting to always show all provider tabs, even if there's only one
  • Added option to export a selection to a file
  • Added a comments column to the pattern data view. It can be enabled by right clicking on the table header and selecting it there
  • Added option to turn off borderless window mode
  • Added option to export the results of the find view to a file
  • Added option to disable command palette button in header
  • Added a search bar to the file chooser popup
  • Added support for opening multiple files at once
  • Added support for macOS's Right click -> Open with option
  • Improvements:
  • ImHex now uses Atomic File I/O instead of mapping files into memory
  • This solves various issues where certain files couldn't be opened, files on network drives not working well and more
  • macOS M1 build now only requires macOS 12.1 instead of 14.0 to run
  • Bookmark moving now uses ImGui's native drag n drop feature
  • Syncing pattern language source code between providers should work better now
  • Custom encodings that don't have multi-byte values now display immediately when selected
  • The macOS build now uses a custom titlebar
  • ImHex windows are now being unfocused properly if the main window loses focus
  • No more blinking cursors when ImHex is in the background!
  • Overwriting individual characters in the edit mode of the hex editor now works much better
  • Copy-Paste now works correctly in the Web version of ImHex. Thanks a lot to @exsilium
  • The find popup now remembers its content
  • The crash restore popup doesn't show anymore now if there's nothing to restore
  • Opening the same file multiple times is no longer possible now
  • Bug Fixes:
  • Fixed signing issues with macOS builds
  • Fixed CTRL + S not removing red highlights of bytes
  • Fixed address bound checks in Edit -> Jump to option
  • Fixed menu bar collapsing into hamburger menu even if there's enough space
  • Fixed RGBA8 data processor node not setting output buffer correctly
  • Fixed provider information in information view always showing infos about the current provider instead of about the analyzed provider
  • Fixed issues when using certain window management tools on Windows
  • Fixed crashes when launching ImHex with file arguments
  • Fixed crash when trying to use too many hex editor rows
  • Fixed native theme detection of Linux. Thanks to @iTrooz
  • Fixed issues where workspaces are not correctly saved sometimes
  • Fixed issues where default magic database wasn't being bundled correctly
  • Fixed crashes when loading very old settings files
  • Fixed data inspector not updating correctly when the underlying data changed
  • Fixed a crash when specifying invalid hash parameters in the hashing view
  • Fixed additional folder paths not being loaded from the config file correctly
  • Fixed data inspector showing two negative signs sometimes
  • Fixed various issues with non-zero base addresses
  • Pattern Language:
  • Huge refactor of the Preprocessor, Lexer and Parser
  • Massive thanks to @jumanji144
  • Compile errors are a lot more helpful now and include more context information
  • Added support for import statements
  • Massive thanks to @jumanji144
  • Added stacktrace to runtime errors
  • Patterns can now be placed inside of custom sections from within other types
  • Pattern formatters now properly respect a patterns visibility
  • This means hidden patterns don't end up in exported json, yaml or html files anymore
  • Fixed writing to big endian bitfield entries
  • Changing pattern setting now re-evaluates the code if auto evaluation is enabled

New in ImHex 1.32.2 (Jan 5, 2024)

  • Additions:
  • Fixed the M1 build completely
  • I went out and bought a MacBook Air just for this, I hope you're happy
  • Completely overhauled the external plugin system
  • ImHex now ships with an SDK and a template that can be used to create plugins
  • When you make Plugins now, they should just work on other people's computers now without weird missing symbols errors
  • Num Keys can now be used as arrow, home, end, page up and down keys when numlock is off
  • Added very simple HTTP Tool
  • Basically a stripped down version of Postman / a frontend for curl
  • Improvements:
  • Added prettier progress bar animation for tasks that don't have any progress
  • Removed window name from the title bar on macOS
  • Moved the documentation search directly into the Help menu
  • Enabled antialiasing by default on custom fonts
  • Bug Fixes:
  • Logs in log view not being filtered correctly
  • Update All button in store not working correctly
  • Fixed Yara Rules Add button not doing anything
  • Custom highlighting didn't apply properly to the ASCII column
  • Fixed Ubuntu builds missing commit informations
  • Fixed issue where ImHex wouldn't go into low power mode properly

New in ImHex 1.32.1 (Dec 29, 2023)

  • 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

New in ImHex 1.32.0 (Dec 28, 2023)

  • 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 of myStruct with a value greater than 5
  • 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 or 0xAABBCC 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
  • 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

New in ImHex 1.31.0 (Sep 25, 2023)

  • Additions:
  • Added a command line interface to ImHex. Huge thanks to @iTrooz
  • Get started by typing imhex --help
  • 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

New in ImHex 1.30.1 (Jun 24, 2023)

  • 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
  • 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

New in ImHex 1.29.0 (May 21, 2023)

  • 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 new Extras 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

New in ImHex 1.28.0 (Apr 5, 2023)

  • 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's format 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

New in ImHex 1.27.1 (Feb 15, 2023)

  • 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

New in ImHex 1.26.2 (Jan 5, 2023)

  • Improvements:
  • Made content store window resizable
  • Bug Fixes:
  • Actually fixed the last releases not starting at all anymore on macOS and Linux

New in ImHex 1.26.1 (Jan 5, 2023)

  • Additions:
  • Added search bars to the process memory provider's process and module list
  • Bug Fixes:
  • Fixed the last release not starting at all anymore on macOS and Linux

New in ImHex 1.26.0 (Jan 4, 2023)

  • 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

New in ImHex 1.25.0 (Nov 16, 2022)

  • Additions:
  • All tool windows can now be detached
  • Added a RGBA8 image visualizer node to the data processor
  • Added a uninstall target to the build script. Thanks to @iTrooz
  • Added CTRL + SHIFT + Z as a Undo shortcut. Thanks to @iTrooz
  • Added a menu to the Edit menu to automatically place a pattern type at the current selection
  • New files are now created in memory and only turned into actual files when saved
  • Added Paste all option to paste all bytes and resize the provider accordingly if it's too small
  • Added Display Buffer, Display String, Arithmetic Average, Arithmetic Median and Buffer Patch data processor nodes
  • Added a setting to disable loading of unicode characters. Thanks to @iTrooz
  • ImHex now no longer makes any web requests unless specifically instructed to do so by the user. Thanks to @iTrooz
  • Added a new View provider to open a view of section of another provider in a new tab
  • Improvements:
  • Non-existing folders are now displayed in red in the paths list. Thanks to @iTrooz
  • Visualizer data processor nodes now only show a bigger view of their content if SHIFT is held down
  • Greatly improved various error messages. Thanks to @iTrooz
  • Improved precision of data passed between nodes in the data processor
  • Integers now use a i128 internally instead of a i64 and floats use a long double instead of a float
  • Various pattern editor settings are now unique per provider
  • Yara rule matching can now be interrupted
  • Multiple Yara rules can now be applied at the same time
  • Limited the maximum window name length to 32 characters
  • Improved window scaling on macOS
  • The pattern editor now always inserts spaces instead of tabs
  • Bug Fixes:
  • Fixed a crash when loading a new provider after evaluating pattern source code
  • Fixed issues when modifying bytes on any pages but the first one
  • Fixed editing not working on some Linux systems
  • Fixed a crash when scrolling to the end of a file that's a multiple of 8 bytes long
  • Fixed an issue that prevented pattern auto loading to work correctly on Windows. Thanks to @Asvel
  • Fixed opening multiple files by dragging them onto the window
  • Pattern Language:
  • Added custom sections support
  • This feature allows you to dynamically create new memory regions, write data to them and then place patterns in them
  • This is useful for encrypted, compressed or otherwise transformed data
  • Allow casting of strings to integers for magic numbers. For example u32("ABCD") turns into 0x44434241
  • Fixed template types not being correctly cleared on reset
  • Fixed creating global arrays of certain types
  • Fixed a crash when validating infinitely recursive types
  • Fixed issues when returning custom types from inside of a conditional
  • Fixed printing of zero sized arrays
  • Fixed [[hidden]] attributes not applying to top level patterns
  • Evaluation time is now being displayed in the console once execution finished
  • Removed some unneeded overhead
  • Fixed format function memory leak
  • Fixed sizeof(this) yielding incorrect results
  • Fixed some statements not being executed at all in global scope
  • Greatly improved the speed of std::hash::crc32
  • Added std::core::is_valid_enum function to check if a enum has a valid representation

New in ImHex 1.24.3 (Oct 12, 2022)

  • Additions:
  • Added support for editing the ASCII characters in the hex editor view
  • Added new Float <-> Buffer conversion nodes to the data processor
  • Added new Pattern Language Out variable access node to the pattern processor
  • Bug Fixes:
  • Fixed a occasional crash when opening providers
  • Fixed 64 bit hex data visualizer only displaying 32 bit values
  • Fixed some gaps in the hex editor cell background highlighting
  • Fixed data inspector still displaying entries despite no bytes being selected
  • Fixed invalid axis labels of the plots in the data analyzer view
  • Pattern Language:
  • Fixed an issue that caused attributes to not work correctly
  • Fixed non-type template parameters in using declarations
  • Fixed error in formatting function always causing a recursion error after a while

New in ImHex 1.24.2 (Oct 10, 2022)

  • Improvements:
  • Many CI improvements once again. Thanks a lot to @iTrooz
  • Bug Fixes:
  • Fixed rendering of selection in Hex Editor view
  • Pattern Language:
  • Fixed an incorrect error message with addressof and sizeof operators
  • Additions:
  • Patterns that overlap with the selected bytes in the hex editor view are now highlighted in blue in the pattern data view
  • It's now possible to add custom Data Inspector entries using the Pattern Language
  • To do this, create a new file in the %IMHEX_PATH%/scripts/inspectors folder with the .pat extension and enter you pattern code there
  • Each value that has been placed in memory using the @ operator will be added to the list
  • To get the current selected offset, use the $ operator
  • Added numeric value searching to Find View
  • Added unique selection and scrolling position support for each provider
  • This means when you scroll somewhere and select some data in a file, then switch to a different one and select some bytes there, the selection and scroll position in the original file will still remain where they were
  • Added icons next to all textfields
  • These display what kind of input this textfield supports. For example: Text, Numbers, Mathematical expressions, Regex, Binary Pattern, etc.
  • Modified bytes are now being highlighted in red in the hex editor view until they are saved
  • Added Wide Strings (UTF-16) to the Data Inspector
  • Added Half Floats to the Data Inspector
  • Bookmarks can now be reordered by dragging them around
  • The color picker in Bookmarks now has a bunch of predefined colors that can be selected by clicking on them
  • Added a Jump to option to the Edit menu that allows scrolling directly to the currently selected region
  • Added option to the settings menu to explicitly disable multi window support
  • This is useful for systems that either don't properly support Multi Window support or for people using Tiled Window Managers which get very confused by these extra windows.
  • If you can't open ImHex properly because of this, you can also manually set the hex.builtin.setting.interface.multi_windows setting in the config file to 0
  • Added new options to the settings menu to adjust the padding between individual bytes and the padding between ASCII characters in the hex editor view
  • Improvements;
  • Reduced File / Provider loading time to basically zero
  • Completely removed all lag that happened when typing in the pattern editor
  • This extends out to other things that were doing work asynchronously (Disassembler, Yara, Analyzer, etc.)
  • Improved startup time of ImHex by about 50%
  • Huge pattern arrays will now be split up into chunks of 512 entries in the Pattern Data View to make them easier to navigate.
  • Properly display an error message when a Project failed to load
  • Display an error message with potential fixes if the file dialog couldn't be opened on Linux. Thanks to @iTrooz
  • The File Provider no longer keeps files open when it doesn't need to
  • This means other applications that support it, can now open files that are already open in ImHex
  • Improved selection and drag scrolling in the Hex Editor View
  • ASCII Table background colors are no longer hardcoded so it looks correct in Light Mode
  • Limited the maximum number of characters that can be displayed in the tooltip that shows up when hovering over a pattern in the Hex editor view to prevent the tooltip from growing indefinitely
  • Properly center current selection when jumping to it
  • Bug Fixes:
  • Fixed Copy-As Python Array putting a semicolon at the end of the data
  • Fixed issues when multiple web requests are running simultaneously
  • Fixed issue where file inspector failed to read over page boundaries
  • Fixed crash when the hex editor view data visualizer cell byte size was not evenly divisible by the column count
  • Fixed many issues and crashes with the Calculator Tool
  • Fixed various UTF-8 path bugs that prevented ImHex to work correctly on systems that have non-ASCII characters in their paths
  • Fixed issue where the data processor nodes did not remember their position correctly when switching to a different provider
  • Fixed potential crashes when trying to paste clipboard data when it's empty
  • Fixed flickering of the Pattern Data View when executing a pattern
  • Fixed opening files with unicode names through the command line
  • Fixed a crash when closing ImHex after launching it through the terminal
  • Fixed scrolling issues and improved the whole scrolling system overall
  • Fixed pattern evaluator not exiting evaluating state correctly in some cases
  • Fixed new lines in wide strings messing up the data inspector view layout
  • Fixed highlighting of separator column in the hex editor view
  • Pattern Language:
  • Added Templates for structs, unions and using declarations
  • Break and Continue can now be used outside of arrays to terminate stop evaluating the current type
  • Return can now be used anywhere outside of functions to terminate execution of the entire pattern
  • Added function to get current hex editor selection as an ImHex Extension
  • Added function to demangle a string as an ImHex Extension
  • Added support for global arrays
  • Added non-type template parameters
  • Allow custom types to be used inside of sizeof operators
  • This might yield incorrect results if the type's size is not static
  • Added better error messages when parsing invalid struct, bitfield and if statements. Thanks to @Calcoph
  • Fixed many many issues with templates
  • Fixed using control flow statements inside of conditionals
  • Fixed padding fields being displayed in bitfields
  • Allow use of compound statements in global scope
  • The ternary operator no longer enforces exactly the same types for the second and third operand
  • Fixed highlighting of arrays of arrays
  • Fixed bitfield order not resetting correctly
  • Fixed indexing of strings
  • Prevent the user from indexing other non-array types
  • Fixed a crash when using break in an unsized array
  • Fixed std::mem::read_signed yielding invalid values
  • Fixed formatting of signed hex values
  • Fixed accessing of local arrays
  • Fixed string pattern not correctly reading all bytes
  • Fixed a few out of bounds indexing errors in the Preprocessor
  • Fixed reading from local float variables
  • Fixed a crash when passing invalid values to the std::time library
  • Fixed issue where while-sized static arrays could expand indefinitely beyond the end of the data
  • Fixed crash with empty dynamic arrays

New in ImHex 1.24.0 (Oct 8, 2022)

  • Additions:
  • It's now possible to add custom Data Inspector entries using the Pattern Language
  • To do this, create a new file in the %IMHEX_PATH%/scripts/inspectors folder with the .pat extension and enter you pattern code there
  • Each value that has been placed in memory using the @ operator will be added to the list
  • To get the current selected offset, use the $ operator
  • Added numeric value searching to Find View
  • Added unique selection and scrolling position support for each provider
  • This means when you scroll somewhere and select some data in a file, then switch to a different one and select some bytes there, the selection and scroll position in the original file will still remain where they were
  • Added icons next to all textfields
  • These display what kind of input this textfield supports. For example: Text, Numbers, Mathematical expressions, Regex, Binary Pattern, etc.
  • Modified bytes are now being highlighted in red in the hex editor view until they are saved
  • Added Wide Strings (UTF-16) to the Data Inspector
  • Added Half Floats to the Data Inspector
  • Bookmarks can now be reordered by dragging them around
  • The color picker in Bookmarks now has a bunch of predefined colors that can be selected by clicking on them
  • Added a Jump to option to the Edit menu that allows scrolling directly to the currently selected region
  • Added option to the settings menu to explicitly disable multi window support
  • This is useful for systems that either don't properly support Multi Window support or for people using Tiled Window Managers which get very confused by these extra windows.
  • If you can't open ImHex properly because of this, you can also manually set the hex.builtin.setting.interface.multi_windows setting in the config file to 0
  • Added new options to the settings menu to adjust the padding between individual bytes and the padding between ASCII characters in the hex editor view
  • Improvements:
  • Reduced File / Provider loading time to basically zero
  • Completely removed all lag that happened when typing in the pattern editor
  • This extends out to other things that were doing work asynchronously (Disassembler, Yara, Analyzer, etc.)
  • Improved startup time of ImHex by about 50%
  • Huge pattern arrays will now be split up into chunks of 512 entries in the Pattern Data View to make them easier to navigate.
  • Properly display an error message when a Project failed to load
  • Display an error message with potential fixes if the file dialog couldn't be opened on Linux. Thanks to @iTrooz
  • The File Provider no longer keeps files open when it doesn't need to
  • This means other applications that support it, can now open files that are already open in ImHex
  • Improved selection and drag scrolling in the Hex Editor View
  • ASCII Table background colors are no longer hardcoded so it looks correct in Light Mode
  • Limited the maximum number of characters that can be displayed in the tooltip that shows up when hovering over a pattern in the Hex editor view to prevent the tooltip from growing indefinitely
  • Bug Fixes:
  • Fixed Copy-As Python Array putting a semicolon at the end of the data
  • Fixed issues when multiple web requests are running simultaneously
  • Fixed issue where file inspector failed to read over page boundaries
  • Fixed crash when the hex editor view data visualizer cell byte size was not evenly divisible by the column count
  • Fixed many issues and crashes with the Calculator Tool
  • Fixed various UTF-8 path bugs that prevented ImHex to work correctly on systems that have non-ASCII characters in their paths
  • Fixed issue where the data processor nodes did not remember their position correctly when switching to a different provider
  • Fixed potential crashes when trying to paste clipboard data when it's empty
  • Fixed flickering of the Pattern Data View when executing a pattern
  • Fixed opening files with unicode names through the command line
  • Fixed a crash when closing ImHex after launching it through the terminal
  • Pattern Language:
  • Added Templates for structs, unions and using declarations
  • Break and Continue can now be used outside of arrays to terminate stop evaluating the current type
  • Return can now be used anywhere outside of functions to terminate execution of the entire pattern
  • Added function to get current hex editor selection as an ImHex Extension
  • Added function to demangle a string as an ImHex Extension
  • Added support for global arrays
  • Allow use of compound statements in global scope
  • The ternary operator no longer enforces exactly the same types for the second and third operand
  • Fixed highlighting of arrays of arrays
  • Fixed bitfield order not resetting correctly
  • Fixed indexing of strings
  • Prevent the user from indexing other non-array types
  • Fixed a crash when using break in an unsized array
  • Fixed std::mem::read_signed yielding invalid values
  • Fixed formatting of signed hex values
  • Fixed accessing of local arrays
  • Fixed string pattern not correctly reading all bytes
  • Fixed a few out of bounds indexing errors in the Preprocessor
  • Fixed reading from local float variables
  • Fixed a crash when passing invalid values to the std::time library
  • Fixed issue where while-sized static arrays could expand indefinitely beyond the end of the data
  • Fixed crash with empty dynamic arrays

New in ImHex 1.23.2 (Sep 20, 2022)

  • Bug Fixes:
  • Actually fixed ImHex crashing on some Linux systems when trying to open a file

New in ImHex 1.23.0 (Sep 15, 2022)

  • 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.
  • 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.
  • 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
  • Allow using declarations to change the name of builtin types
  • Added optional endian parameter to std::mem::read_unsigned and std::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) }
  • 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

New in ImHex 1.22.0 (Sep 4, 2022)

  • 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
  • [[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

New in ImHex 1.21.2 (Aug 18, 2022)

  • 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

New in ImHex 1.21.1 (Aug 15, 2022)

  • 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

New in ImHex 1.21.0 (Aug 15, 2022)

  • 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

New in ImHex 1.20.0 (Aug 5, 2022)

  • 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

New in ImHex 1.19.3 (Jul 27, 2022)

  • 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

New in ImHex 1.19.2 (Jul 17, 2022)

  • 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

New in ImHex 1.19.1 (Jul 7, 2022)

  • 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.g struct Test { 12, 34, 56 } for a Struct named Test with 3 variables
  • Fixed a crash when using provider operators

New in ImHex 1.19.0 (Jul 5, 2022)

  • 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 of O(N)
  • 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

New in ImHex 1.18.2 (Jun 3, 2022)

  • 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

New in ImHex 1.17.0 (Apr 18, 2022)

  • Additions:
  • Added support for the new Yara console module
  • Pattern Language:
  • The Pattern Language has been separated from ImHex and was moved to its own repository
  • This was in part made possible by @Diadlo's separation of the pattern rendering code from the rest of the runtime
  • A separate repository also now allows other people to include the Pattern Language in their own applications
  • Types can now be forward declared
  • Functions can now have default parameters
  • Bitfield fields are now selectable
  • Comments behind preprocessor defines are now correctly handled
  • Fixed recursive types not working correctly
  • Fixed caching for static array values
  • Fixed indentation for inlined variables
  • Fixed highlight colors of arrays not matching color shown in pattern data view
  • Fixed struct members that overlap with [[no_unique_address]] members not being highlighted
  • Fixed pointer patterns causing crashes when they are rendered
  • Improvements:
  • Make ImHex build with -Wall -Wextra -Werror on all platforms
  • Fixed tons of clang-tidy warnings
  • Improved / fixed the AppImage build
  • Recently opened file entries are now being removed if the file doesn't exist anymore
  • Disabled various menu items when no provider is loaded
  • Multi-viewport support has been enabled on Linux again, providing ImHex is running on a X11 system
  • Multi-viewport support is still very buggy on Wayland
  • Improved the about page
  • Pattern values are now being cached. Thanks to @Diadlo
  • Mathematical expressions can now be used in the hex editor goto function
  • Improved look and feel of many hexadecimal input fields
  • Improved string search filtering
  • Moved bookmark delete button to their header
  • Information view plots now don't capture scroll anymore and fit better into the rest of the interface
  • Undo and Redo buttons are only available now if that action is actually available
  • Data inspector endian and format radio boxes are now sliders
  • Bug Fixes:
  • Fixed crash when setting a custom font and that file can't be found
  • Fixed various bugs and crashes related to filesystem operations
  • Fixed various bugs with the Math Evaluator engine
  • Fixed highlighting not properly being cleared when switching to a different provider
  • Prevent imgui.ini from being created
  • Deferred calls are now handled in a thread-safe manner
  • Fixed interface layout not being saved properly in some cases
  • Fixed theme not changing properly on startup. Thanks to @PredatorCZ
  • Fixed issues where bookmarks not always created highlights correctly
  • Fixed displaying of file stat times in information view
  • Fixed crash on linux when opened file is being modified. Thanks to @PredatorCZ

New in ImHex 1.16.2 (Mar 3, 2022)

  • Improvements:
  • Yara rules are no longer bundled with ImHex directly anymore; Having them bundled made a bunch of different anti virus tools very sad so they once again need to be downloaded manually from the content store
  • Patterns that use types which have been defined through a using statement now properly display their new type name in the pattern data view
  • Bug Fixes:
  • Fixed searching not working at all
  • Fixed many text boxes not being writable at all
  • Pattern Language:
  • Fixed crash when using control flow statements without a value
  • Fixed control flow statements not working correctly inside of custom types
  • Fixed crash when using attributes
  • Fixed major memory leak when using the [[format]] attribute
  • Fixed crash when passing a value as a auto parameter to a function

New in ImHex 1.16.1 (Mar 1, 2022)

  • AdditionAdded alpha preview to the color picker tool:
  • Improvements:
  • Improved display of the base address setter popup
  • Make std::mem::find_sequence_in_range return -1 when the value couldn't be found
  • Bug Fixes:
  • Fixed bug where the current offset in the pattern runtime was getting messed up when calling a function
  • Fixed a crash when entering too much text in various input text boxes
  • Fixed a crash when searching for empty strings or bytes

New in ImHex 1.16.0 (Mar 1, 2022)

  • Addition:
  • Added basic editing support to the data inspector
  • Simply double click the type you want to edit and then enter your new value there
  • Not all types can currently be edited but the majority of it can
  • Added custom font and font size setting
  • Added long doubles to the data inspector
  • Added setting where the user can add additional search paths which will be considered throughout ImHex. Thanks a lot to @PredatorCZ
  • Added help text to data processor to tell the user how to start using it
  • Pattern Language:
  • Massive refactor of the pattern language
  • The entire pattern language now switched to using smart pointers instead of doing manual memory management. This should prevent the majority of memory leaks that were present before.
  • Allow all variable attributes to be applied to types directly so all their instances will have those attributes applied
  • Added #pragma bitfield_order which applies the [[left_to_right]] or [[right_to_left]] attribute to all bitfields by default
  • Added [[single_color]] attribute which forces all children of a pattern to have the same color. Thanks to @PredatorCZ
  • Fixed a crash with using #include. Thanks to @Diadlo
  • Arrays and custom types are now properly getting treated as references so they can be passed to functions without getting weird behaviour
  • Added std::mem::find_sequence_in_range. Thanks a lot to @PredatorCZ
  • This function works the same as std::mem::find_sequence but takes two additional parameters to specify the start and end address of the search performed
  • Fixed off-by-one error when calculating unsized array sizes. Thanks to @Dyddye
  • Improvements:
  • Automatically disable borderless window mode then an Intel HD GPU is being detected.
  • This prevents the black boarder / offset rendering from appearing which is caused by a bug in the Intel OpenGL driver
  • This detection can be overwritten by manually setting the hex.builtin.setting.interface.force_borderless_window_mode setting to 1 in your settings.json
  • Disable buffering on log files so their full content is always being written to disk
  • Improved error handling of the content store
  • The content store now only tries to list files in folders that are actually writable
  • ImHex will no longer try to download (and fail) to download files into folders without permissions
  • Increased store load timeout to 30 seconds
  • This should allow you to use the content store even if you're behind tons of proxies
  • Improved ImHex restarting user experience
  • Instead of just immediately closing ImHex when a setting was changed that needed a restart, ImHex now correctly prompts if you want to restart it.
  • Content from the ImHex-Patterns repository is now getting shipped by default
  • Bug Fixes:
  • Fixed opening files with unicode characters in their path
  • Fixed ImHex not loading plugins correctly on first launch
  • Fixed undo points not being created correctly
  • Fixed pasting bytes into ImHex in certain cases
  • Fixed log files being formatted incorrectly
  • Fixed a crash when scrolling through the hex editor too quickly
  • Fixed a bug where editing a byte and then scrolling down would cause all content of the hex editor view to disappear
  • Fixed banner and logo images being corrupted in certain cases. Thanks a lot to @PredatorCZ
  • Fixed circular dependency when building ImHex which caused issues on certain Linux distros
  • Fixed imgui.ini file sometimes being created in the current working directory
  • Fixed crash when trying to read from an empty file
  • Fixed crash when saving projects

New in ImHex 1.15.0 (Feb 15, 2022)

  • Addition:
  • Added better help messages for when Plugins are missing or outdated
  • Added German translation to the Windows plugin
  • Added Japanese translation. Thanks a lot to @gnuhead-chieb
  • Added highlighting to matched yara rules
  • Data processor:
  • Added Digram, Layered Distribution, Byte Distribution and Image visualizer nodes to the data processor
  • Added selected region node
  • Pattern Language:
  • Improved integer literal parsing, added hex-representation of floats
  • Allow assigning to global variables inside of structs
  • Allow variable placements inside of structs. This is especially useful for calculated pointers
  • Fixed issues with #pragma once and #include
  • Added [[left_to_right]] and [[right_to_left]] attribute for bitfields
  • Added [[format_entries]] attribute to add a formatting function to all array entries
  • Fixed precedence of comparison operators
  • Allow patterns with nested children (structs, bitfields, arrays and unions) to be selected by clicking on them in the pattern data view
  • Correctly disallow usage of negative values for array and padding sizes
  • Fixed control flow statements (return, continue and break) not being applied correctly
  • Fixed scopes not always being popped correctly. Thanks to @Diadlo
  • Improvements:
  • Massively refactored ImHex.
  • The main application is now completely free of any ImHex-related code and purely acts as a loader
  • The built-in plugin and libimhex now contain all functionality
  • Improved integer parsing in the pattern language
  • Drastically improved highlighting performance
  • Only show file chooser popup if there's actually files to list
  • Disable bookmark toolbar icon if no bytes are selected
  • Added a dedicated hex input text box
  • Bug Fixes:
  • Fixed strings still being displayed incorrectly in the pattern data view
  • Fixed pattern source code being deleted wrongly when switching to a different data provider
  • Fixed docking to main window not always working
  • Fixed icon being broken on macOS
  • Fixed incorrect capstone include path
  • Fixed a crash when opening files from the recent files list. Thanks to @Diadlo
  • Fixed crash when opening a read only file on Linux. Thanks to @bigfoot547
  • Fixed hex editor search popup buttons not working correctly. Thanks to @Diadlo
  • Fixed columns in diff view being misaligned. Thanks to @twevs

New in ImHex 1.14.0 (Jan 30, 2022)

  • Addition:
  • Added function for inserting bytes in the middle of files
  • Added custom encoding files to content store
  • ImHex now automatically writes all log output to a file
  • Added menu items to save and load data processors
  • Added support for copying values from the pattern language console
  • Added RISC-V, M68K, M680X, WebAssembly, MOS65XX and BPF architectures to disassembler
  • Improvements:
  • Fixed interface being scaled horribly on MacOS
  • Updated Italian translation. Thanks a lot to @CrustySean
  • Updated Chinese translation. Thanks a lot to @xtexChooser
  • Improved how integer values are displayed in the data inspector
  • Improved loading of custom encoding files
  • Splash screen no longer gets drawn on top of all other windows
  • GoTo and Find text boxes are now automatically focused when the window is opened. Execute GoTo or Find function when pressing enter
  • Patches that have the same value as the original value are now getting removed
  • Bug Fixes:
  • Fixed pasting bytes
  • Fixed Flatpak release not working correctly
  • Fixed ImHex crashing when exiting
  • Fixed many format warnings and security issues
  • Fixed jumping to addresses moving hex editor window to wrong offset
  • Fixed curl SSL verification on MacOS and Linux
  • Pattern Language:
  • Added parameter packs
  • This allows passing an unlimited amount of parameters to a function
  • All built-in functions have now been to the builtin namespace.
  • This means, to use built-in functions you now need to download and use libstd from the content store and include the correct include file
  • Added [[no_unique_address]] attribute
  • Applying this attribute to a variable makes it not increasing the cursor when placing it ​
  • Added ability to assign a value to the dollar operator to change the current cursor
  • Added assignment operators (+=, -=, *=, etc)
  • Added #pragma once directive
  • Added extra math functions (floor, ceil, round, sin, cos, and more)
  • Fixed local variables not respecting their type's size
  • Fixed color overriding for arrays and structs
  • Fixed [[static]] attribute not correctly optimizing the type
  • Fixed continue and break statements not working correctly in structs
  • Fixed highlighting of arrays
  • Fixed endian setting applied to structs not applying it to their members correctly
  • Fixed strings being displayed wrongly
  • Fixed lexing of sizeof and addressof operator

New in ImHex 1.13.2 (Jan 12, 2022)

  • Improvements:
  • Undocked windows now appear in the task bar and the window switching interface
  • Improved the look and feel of the hex editor footer bar
  • Bug Fixes:
  • Fixed default directories not being created correctly when ImHex launches
  • Fixed a crash when closing certain popups such as the about page
  • Pattern Language:
  • Improve the memory usage of patterns a bunch. This is not the end yet though
  • Fixed various crashes related to passing values and variables to functions
  • The [[format]] attribute can now be used correctly on custom types such as structs or enums
  • Limited Pattern Data UI to only display 50 array entries by default; if you want to see more, double click on the last entry
  • Fixed local variables being able to hold larger values than they should be able to

New in ImHex 1.13.1 (Jan 11, 2022)

  • Bug Fixes:
  • Fixed passing structs and arrays to custom functions causing their address to be invalid
  • Fixed [[pointer_base]] attribute placing value at invalid addresses
  • Fixed settings screen being way too big
  • Fixed occasional crash when disassembling files

New in ImHex 1.13.0 (Jan 10, 2022)

  • Additions:
  • Added global progress bar to show currently running tasks:
  • This shows all currently running background tasks in one places
  • With this, also a bunch of things that previously were running synchronously have now been made asynchronous.
  • Added link to Discord server to Welcome screen:
  • If another ImHex instance is already open on Windows, new files are now automatically opened in that current instance.
  • It's still possible to have multiple instances running. Just open a new instance without opening a file through it.
  • Added ability to clear the recent files list. Thanks to @draftshade
  • Pattern Language:
  • Added a Environment Variables tab to pattern editor view:
  • Environment variables let you specify a value (string, boolean, integer or float). These values can then be accessed again through the use of std::env.
  • Added in/out variables:
  • in variables work similar to properties found in e.g Unity. They automatically add an entry with their name to the UI and can be set to some value through the UI. The value will be applied before running the pattern.
  • out variables work the same but simply display whatever value has been assigned to them once the pattern is done running.
  • Dangerous functions such as file IO or HTTP request functions are now gated behind a user confirmation dialog:
  • The first time such a function gets called in the current session, a popup will show up asking the user to confirm or deny running the pattern. The user can then either allow all dangerous function for this session or deny it in which case the popup will show up again the next time the function is called. When denying, execution of the current pattern is aborted.
  • Added break and continue statements:
  • These can be used inside of for and while loops but also inside of structs. When an array is created and a break statement is hit, the array will stop growing and keep its current size. When a continue statement is hit, the current entry will be skipped but the array continues to grow until it reaches the end.
  • Improvements:
  • Added better timeouts for all curl code; If you don't have an internet connection, ImHex will no longer try to check for updates for ages
  • The diff view line spacing is now is the same as the one in the main hex editor view
  • Improved how shortcuts are handled within ImHex
  • Bug Fixes:
  • Fixed opening files as read-only if user doesn't have write permissions
  • Fixed Windows TTY COM Port view
  • Fixed restarting of ImHex on Linux Thanks to @qxxxb
  • Fixed saving files
  • Fixed reading data from huge files
  • Fixed pattern language [[color]] attribute not working for arrays and structs
  • Fixed IPS patches import and export

New in ImHex 1.12.1 (Dec 16, 2021)

  • Improvements:
  • Capstone is now bundled with ImHex directly to work around issues with Ubuntu
  • Bug Fixes:
  • Fixed AppImages
  • Fixed opening zero-sized files
  • Fixed crashes when having yara installed on Linux
  • Fixed yara rule matching yielding invalid addresses
  • Fixed loading a project file crashes ImHex

New in ImHex 1.12.0 (Dec 14, 2021)

  • Additions:
  • Added GDB Server data provider
  • This allows accessing memory data from running processes, microcontrollers and many other things. ImHex can attach to any running GDB Server over the network
  • Added Raw Disk data provider
  • This allows accessing raw disk images or partitions of devices connected to your computer
  • Pattern Language: Added std::env function and a configuration menu for it
  • This lets you query strings, integers, bools and floats from a list and use them within the script making configuring patterns much easier.
  • Added "File -> Save Pattern..." option to save the current pattern language code
  • Improvements:
  • Added selection size in hexadecimal to hex editor view
  • Redid data provider reading and writing. This should fix many issues with non-zero base addresses or large files with multiple pages
  • ImHex now uses the native API to open websites so the command line window doesn't pop up every time you're clicking on a link
  • Improved about and settings page
  • Added icon to footer when ImHex is being run with Administrator or root permissions
  • Bug Fixes:
  • Pattern Language: Fixed variable access inside of pointer pattern yielding invalid results
  • Pattern Language: Fixed indexing of static arrays
  • Fixed bookmark colors not being saved into projects
  • Fixed flickering of the window on Windows if it was full screen
  • Fixed window border and shadow rendering on Windows more consistent with other windows
  • Fixed cursor not changing to the right resize arrow in the window corners

New in ImHex 1.11.12 (Dec 5, 2021)

  • Additions:
  • Added new .deb packages
  • Added new AppImage packages. Thanks to @wardwouts
  • Added number of found strings to string finder view. Thanks to @qdlmcfresh
  • Improvements:
  • Improved scaling and font rendering on MacOS. Thanks to @DavidBuchanan314
  • ImHex now automatically compiles all magic source files when analyzing a file
  • Bug Fixes:
  • Fixed libimhex not being included in any Linux builds
  • Fixed diffing view not correctly scrolling all the way down
  • Fixed pattern language variable casting incrementing cursor
  • Fixed crash when ImHex takes longer than 200ms to draw a frame. Thanks to @wardwouts

New in ImHex 1.11.1 (Nov 29, 2021)

  • Bug Fixes:
  • Fixed window being undecorated on all platforms while it should only be undecorated on Windows.
  • This caused the window to be unmovable and unresizable on platforms other than Windows
  • Fixed crash on Windows when launching ImHex without a terminal window on Windows

New in ImHex 1.11.0 (Nov 28, 2021)

  • Additions:
  • Added back MacOS support! Huge thanks to @Kuruyia for taking the time to fix it!
  • Added basic support to create plugins using Rust instead of C++! Huge thanks to @jam1garner
  • Added border around byte selection to make it more visible with other things highlighted
  • Put maximum FPS limit to 200, added "Unlocked" option
  • Variable names are now displayed when matching yara rules
  • Added regex searching to string finder view. Thanks to @qdlmcfresh
  • Pattern Language:
  • Added button to stop evaluation prematurely
  • Added main function support. If a function called main exists, it will automatically be called after all other things have been evaluated.
  • Added global variables
  • Allow functions to be called inside structs
  • Added for loops
  • Variables declared in global scope can now be accessed inside custom types.
  • Added padding expressions in bitfields
  • Limited maximum number of patterns that can be created. Can be overridden using the pattern_limit pragma.
  • Allow str types to be used inside function bodies
  • Allow pointer endianess to be changed
  • Standard Library:
  • Added basic file io built-in functions
  • Improvements:
  • Improved the command palette
  • Limited numbers of characters being displayed in parsed strings
  • [[name]] attribute no longer changes the variable name but only the name displayed in the pattern data view
  • The pattern code editor now automatically closes (, {, [, " and '
  • Bug fixes:
  • Fixed titlebar and cursor being misaligned on some computers
  • Fixed nothing being printed to console in release mode, even when console is open
  • Fixed multi variable declarations sometimes causing crashes
  • Fixed endian pragma not working
  • Fixed issue where signed integers weren't correctly sign extended
  • Fixed null bytes being included in read strings
  • Fixed Project file load and save not working correctly
  • Fixed incorrect offsets being accessed when passing custom types to functions
  • Fixed color attribute taking a color value in BGR instead in RGB format
  • Fixed not all include paths being searched correctly
  • Fixed CRC and hash calculations not working properly in all cases. Thanks to @raron for fixing them and writing many unit tests to prevent issues like this in the future
  • Fixed bookmarks closing when changing their name
  • Fixed ImHex crashing after splash screen if no plugins have been loaded
  • Fixed syntax error in code generated "Copy as Rust array" option. Thanks to @paoda
  • Fixed string pattern causing crashes when they are empty

New in ImHex 1.10.1 (Sep 30, 2021)

  • Added File Utils
  • File Shredder: Safely deletes files
  • File splitter: Splits a file into multiple smaller files of a given size
  • File combiner: Combines multiple smaller files into a single one
  • Added custom font size setting
  • As this only works for custom fonts, the option is available only by manually editing the hex.builtin.setting.interface.font_size setting in the config file
  • Added support for include files in Yara Rules
  • Pattern Files dropped onto ImHex are now automatically opened in the pattern editor
  • Yara rules and magic databases dropped onto ImHex are now copied to their respective folder
  • Pattern Language:
  • Added the auto datatype for functions to accept any variable type
  • Added inheritance for structs
  • Moved all std::str functions to std::string since they were not accessible anymore
  • Comments (//, /* */) and preprocessor directives are now ignored inside strings
  • Added [[inline]] attribute to allow struct, union and array members to be displayed without adding deeper nesting
  • Added [[transform]] attribute to allow modifying the a value before it's being accessed through the dot syntax
  • Added [[pointer_base]] attribute to allow making pointers relative from different regions of the file or to calculate a custom offset
  • Fixed unary expressions behaving wrong in parenthesis
  • Fixed boolean mathematical expressions and cast syntax
  • Fixed std::string::substr
  • Fixed enum entry scope resolution
  • Fixed accessing strings as rvalues
  • Fixed pointer offset calculation
  • Fixed recursive types
  • Respect endianess when accessing rvalues
  • Fixed member access inside of an if body
  • Standard Library:
  • The pattern language now has a proper standard library
  • Information about all available functions can be found in the documentation
  • To use it, please download it from the store or from ImHex's Pattern Repo
  • Added std::http allowing HTTP GET requests from the pattern language
  • Added std::bit for common bit operatons
  • Added C Types files containing C/C++ type definitions (uint32_t, float64_t, etc)
  • Added Rust Types files containing Rust type definitions (i32, f64, etc)
  • Added std::ctype to inspect ASCII character traits
  • Added std::fxpt with fixed point number conversion and arithmetic
  • Added std::limits with minimal and maximal values for different data types
  • Added std::math with common math functions
  • Added std::ptr with helper functions for the [[pointer_base]] attribute
  • Added additional std::string functions. (std::string::parse_int, std::string::to_string, std::string::contains and more)
  • Improvements:
  • Improved automatic pattern loading based on the MIME type of the currently loaded data
  • This can be turned off in the settings
  • Improved Hex editor Find and Goto popup
  • Bug fixes:
  • Fixed a major memory leak with Yara Rules
  • Fixed new update available popup appearing, even on latest version
  • Fixed "File -> Close" option crashing
  • Fixed "Open File" shortcut not working

New in ImHex 1.10.0 (Sep 22, 2021)

  • Additions:
  • Added support for loading multiple files/data sources simultaneously
  • Added Binary Diffing view
  • Added Quit ImHex option to File menu
  • Added Follow system theme option
  • Added Chinese (Simplified) Localization. Many thanks to @xtexChooser
  • Pattern Language:
  • Rewrote entire evaluation engine
  • Made Evaluator a lot simpler and faster
  • Function parameters now require a type definition
  • Strings may now be passed to functions using the str type
  • Added check to prevent huge arrays from being generated (can be overridden with a pragma)
  • Added cast expression
  • Added std::format
  • It and std::print now use libfmt / C++'s std::format syntax
  • Allow passing variables of custom types to functions
  • Added multi-variable declaration for functions
  • Many more under-the-hood changess
  • [[format]] attribute to override the way values are displayed
  • Added Unit tests
  • This will hopefully help with things breaking in the pattern language randomly
  • Unnecessary semicolons are now ignored
  • Added std::mem::read_string built-in function
  • Improvements:
  • On Windows, resources are now placed in the AppData folder in addition to next to the executable``
  • Fixed format-security warnings. Thanks to @russkel
  • Moved all Hex Editor settings to the settings menu
  • Restructured the settings menu into multiple tabs
  • Fixed footer items jumping around a lot when updating
  • Removed View suffix from all View names in the Views menu. Thanks to @xtexChooser
  • Fixed pattern language evaluator "lagging" behind when Automatic evaluation is active
  • Bug fixes:
  • Fixed settings not being initialized correctly sometimes and causing crashes
  • No more crashes when settings have been set to invalid values
  • Fixed recent files not updating properly
  • Fixed Resize File option crashing
  • Fixed crash when creating arrays with negative size.
  • Fixed parent keyword not working correctly
  • Fixed constants store page not getting cleared correctly on reload
  • Fixed feedback button URL
  • Fixed padding not working correctly
  • Fixed enums not counting properly
  • Fixed bitfields not respecting endian setting
  • Fixed language selection combo box crashing in some circumstances
  • Fixed settings menu closing when changing language
  • Fixed Regex replacer tool
  • Fixed TTY console crashing if no COM ports are available. Thanks to @xtexChooser

New in ImHex 1.9.0 (Sep 10, 2021)

  • Windows releases are now distributed as an installer and a portable version
  • Linux releases are now distributed as a flatpak file and a portable version:
  • Thanks to @Calinou for the initial work on this
  • MacOS support has been dropped because it's impossible for me currently to get it working correctly:
  • The reason for this is that I have no access to a Mac and development is just frustrating for me
  • The previous release was already horribly broken because of that
  • If anybody would like to help fix ImHex on MacOS, PRs are highly appreciated.
  • Additions:
  • Added a TTY console view (Windows only)
  • CTRL + A now selects all bytes in the hex view
  • Added default polynomials to CRC16 and CRC32 initially
  • Added CPU usage to footer (Windows only)
  • Added a new view for looking up common constants
  • Added Create new File option
  • Added Resize file option
  • Added a UNIX permissions calculator tool
  • Added a minimap to the data processor nodes editor
  • Added crash detection and emergency backups:
  • If ImHex crashes now, an automatic backup will be created and you will be asked if you want to restore it the next time you open ImHex.
  • Got rid of the window border and title bar on Windows and instead use a custom one
  • Added a toolbar with buttons
  • Added proper interface scaling settings
  • Added tips of the day popup at launch:
  • This can be disabled from the popup or in the settings
  • Added a tool to quickly upload files to https://anonfiles.com
  • Added a tool to get short definitions of terms from Wikipedia
  • Added half floats (16 bit floating point numbers) to data inspector
  • Added UTF-8 strings to data inspector
  • Added a built-in download "store" for patterns, libraries, magics and constant databases:
  • The store directly accesses https://github.com/WerWolv/ImHex-Patterns so if you'd like to add more items to the store, please make a PR there
  • Pattern Language:
  • Added while statements for array definitions
  • Added [[hidden]] attribute to hide a variable from the pattern data view
  • Fixed the parent keyword not working properly
  • Added ability to declare custom functions
  • Allow fields in bitfields to be accessed like struct members
  • Added support for namespaces
  • Added support for declaring multiple variables on the same line:
  • e.g u32 x, y, z;
  • Moved all built-in functions to the std namespace:
  • Most functions also got renamed to use snake_case instead
  • Fixed endianess setting not applying to char16s
  • Added full unicode support by default:
  • ImHex now loads unifont on launch
  • Optimize arrays of built-in types:
  • This causes e.g huge byte arrays to not take up nearly as much memory anymore
  • The same optimization can be applied to custom structs by marking them with the new [[static]] attribute, however this only works correctly if the layout of the struct is actually static.
  • Improvements:
  • ImHex now reduces its framerate if there's no events to be processed and doesn't render at all anymore when minimized.
  • Allow ImHex to redraw the screen when resizing for a much smoother experience
  • Added a nice banner to the welcome screen
  • Splash screen, banner and certificates are now embedded into the executable instead of needing to be in the right folder
  • ImHex now makes sure that saved project files always have the .hexproj extension. Thanks to @jam1garner
  • Added a bunch of icons to the welcome screen
  • The splash screen is now DPI aware
  • ImHex now more reliably detects when a file has been modified
  • Floats in the data inspector are now displayed in decimal form if they are reasonably close to 0.0 and in scientific notation otherwise. Thanks to @jam1garner
  • Drastically improved how bookmarks are displaying bytes
  • Added buttons to calculator tool
  • Reduced build times of ImHex quite a bit
  • Massively improved string search memory usage
  • ImHex now searches in the exeutable folder for plugins and resources again on Linux as well as in the system directories
  • Bug fixes:
  • Fixed advanced decoding separator in the hex view not respecting horizontal scrolling
  • Fixed various issues related to plugin loading
  • Fixed keyboard shortcuts not working
  • ImHex no longer crashes on every exit

New in ImHex 1.8.1 (May 25, 2021)

  • Additions:
  • Added a list of all paths used by ImHex to the about page to allow locating them easily on platforms with non-default settings
  • Improvements:
  • Improve confusing "Quit application" popup text
  • Allow using of system libraries during build instead of the bundled ones. Thanks a lot to @Mailaender
  • Selecting the "Match Selection" checkbox now correctly updates the current region in the Hash and Disassembler view
  • Display correct offsets in hex editor header when base address is not aligned to the number of columns
  • The disassembler now always disassembles all selected bytes and inserts .byte "instructions" when a opcode couldn't be decoded.
  • Bug fixes:
  • Fix crashes when ImHex is installed in a privileged location (e.g C:/Program Files) and is not launched as Administrator
  • Fix git commit hash and branch not being displayed properly in Release builds
  • Fix broken header text in About popup
  • Fix published name of ImHex to show as "Humanity" in Window's Program and Features window