Skip to content

Releases: WerWolv/ImHex

NoGPU releases, Korean translation and better pattern sorting

03 Sep 22:29
Compare
Choose a tag to compare

Changelog

Additions

  • Added NoGPU releases for Windows and MacOS! Thanks a lot to @iTrooz
    • This allows ImHex to run on Windows and MacOS machines that do not have any GPU available (as well as Virtual Machines without GPU forwarding)
    • Keep in mind that the entire UI will be Software rendered in these versions so your CPU usage will be a lot higher than with the regular versions
  • Added Korean Translation! Thanks a lot to @mirusu400
  • Added New File... menu item and shortcut
  • Added an error popup when an exception is being thrown in a Task

Improvements

  • Patterns in the pattern data view are now automatically being sorted by their address instead of by their name
  • Make sure all recent providers show up correctly

Bug Fixes

  • Fixed providers not being closed correctly
  • Fixed CTRL + F searching not working correctly in many cases
  • Fixed filtering in the Find view when multiple files are loaded
  • Fixed pattern source code not being loaded correctly from project files
  • Fixed data analyzer displaying invalid data for files that are smaller than 16MiB
  • Fixed AppImage not being able to make any web requests
  • Fixed signed data inspector rows displaying invalid values
  • Fixed pattern include paths not being respected correctly
  • Fixed race condition when the evaluate pattern button is being spam clicked
  • Fixed ImHex sometimes crashing when exiting
  • Fixed json parse exceptions being thrown when web requests ran into timeouts
  • Fixed window header always displaying (Read Only) even if the file isn't being opened as read only
  • Fixed crash when closing a provider that's currently getting Diffd
  • Fixed a crash when trying to resize a Read Only file

Pattern Language

  • Added std::core library
    • This library contains various "magic" functions to query information or change settings about patterns and the runtime
    • To find out more about this library, check out its source code
  • Rewrote entire Stack/Heap management
    • This now finally allows you to properly pass types with dynamic sizes and layouts to functions
    • This also fixes various issues with passing custom types to functions
  • Added Debug mode to evaluator
    • This mode can be enabled using the #pragma debug pragma
    • When enabled, various information is being logged to the console and the pattern list will not get cleared if an error occurres
  • [[format]] attribute functions can now return non-string types which will automatically be stringifyed when being displayed
  • Fixed a crash when creating infinitely recursive types
  • Fixed comments messing up error line information
  • Fixed variables being placeable from inside of functions
  • Fixed accessing global variables from within [[format]] functions
  • Fixed a crash when using arrays in functions
  • Fixed base address not being set properly in the pattern language
  • Fixed unions placing patterns at incorrect offsets
  • Fixed incorrect "Array expanded past end of the data" errors

If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button

Task canceling, better window scaling

17 Aug 21:39
9c4e314
Compare
Choose a tag to compare

Changelog

Additions

  • Added the ability to cancel many long running tasks
    • To do this, click on the Stop button next to the task progress bar in the footer

Improvements

  • Window sizes now also use the current font size to calculate their scale
  • Moved the "Close welcome screen" button a bit further to the left so it won't be cut off

Bug Fixes

  • Fixed multiple undefined behavior issues
  • Fixed the "Learn the Pattern Language" welcome screen button pointing to the wrong URL
  • Fixed automatic restarting of ImHex not always working
  • Fixed Import/Export bookmarks options requiring a selection to be available
  • Fixed hex editor displaying ?? for all bytes when a base address has been set

Pattern Language

  • Added more array size checks
  • Fixed crash when referencing a invalid type member
  • Fixed error reporting in math expressions not working correctly
  • Fixed issues when parsing Unions
  • Fixed return statements acting like breaks when used inside of loops

Previous Changelog

Thank you so much for the ridiculous amount of 20'000 ⭐ on this project!

Additions

  • Replaced terrible existing project file system with a much more flexible one
    • This is a breaking change. If you have existing project files, they will no longer be loadable in ImHex starting from this version
    • To still use your old projects, you can use this Python Script here to extract the different parts of the old project file as stand-alone files that can then be imported again in newer versions of ImHex
  • The recents list now contain all providers, not just opened files
  • Added Intel Hex and Motorola SREC provider
  • Added hexadecimal size of file and selection to hex editor footer
  • Added select region command
  • Added close button to the welcome screen so various tools can be accessed without opening any data
  • Added Bookmark Import and Export option

Improvements

  • Added better support for Windows 7
    • You're still much better of by using Windows 10 or 11 instead since a bunch of things simply aren't possible on Windows 7
  • Removed dependency on macOS 11 only Framework so ImHex can now run on macOS Yosemite and higher
  • Switched .deb compression to gzip so it can be used on older Debian versions
  • Various find view improvements. Overlapping occurrences and occurrences at the very end of the file can now be found
  • Updated the LLVM demangler dependency
    • All demanglers in ImHex now support the latest C++ features as well as D and Rust mangled names
  • ImHex now properly allows opening of all files on macOS when dragging a file onto its executable

Bug Fixes

  • Fixed crash when trying to edit a hex cell
  • Fixed various issues with the multi-byte visualizers
  • Fixed pattern language runtime not being reset properly after checking for MIME types
  • Fixed config files being placed in wrong locations on Linux
  • Fixed Windows native theme detection not always working correctly
  • Fixed a crash when the auto-load pattern setting is disabled

Pattern Language

  • Restructured entire library and cleaned up a bunch of legacy stuff
  • Updated Error messages and error display
    • All errors that are being thrown now show line/column information of the error as well as helpful error messages and hints on how to fix it (inspired by Rust errors)
  • Fixed for-loop parsing
  • Fixed display issues with static array entries
  • Fixed reading strings that were passed to functions
  • Fixed a namespace resolution crash
  • Fixed array out of bounds checks

If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button

Provider and project file bug fixes

15 Aug 15:48
Compare
Choose a tag to compare

Changelog

Bug Fixes

  • Fixed crash when closing provider tabs
  • Fixed recent providers not always being selectable
  • Fixed pattern in-variables resetting when patterns are being executed
  • Fixed restoring of safety backups after a crash not working correctly
  • Fixed displaying of unavailable addresses in Intel Hex and Motorola SREC providers
  • Fixed a crash when returning patterns or global variables from [[format]] functions

Previous Changelog

Thank you so much for the ridiculous amount of 20'000 ⭐ on this project!

Additions

  • Replaced terrible existing project file system with a much more flexible one
    • This is a breaking change. If you have existing project files, they will no longer be loadable in ImHex starting from this version
    • To still use your old projects, you can use this Python Script here to extract the different parts of the old project file as stand-alone files that can then be imported again in newer versions of ImHex
  • The recents list now contain all providers, not just opened files
  • Added Intel Hex and Motorola SREC provider
  • Added hexadecimal size of file and selection to hex editor footer
  • Added select region command
  • Added close button to the welcome screen so various tools can be accessed without opening any data
  • Added Bookmark Import and Export option

Improvements

  • Added better support for Windows 7
    • You're still much better of by using Windows 10 or 11 instead since a bunch of things simply aren't possible on Windows 7
  • Removed dependency on macOS 11 only Framework so ImHex can now run on macOS Yosemite and higher
  • Switched .deb compression to gzip so it can be used on older Debian versions
  • Various find view improvements. Overlapping occurrences and occurrences at the very end of the file can now be found
  • Updated the LLVM demangler dependency
    • All demanglers in ImHex now support the latest C++ features as well as D and Rust mangled names
  • ImHex now properly allows opening of all files on macOS when dragging a file onto its executable

Bug Fixes

  • Fixed crash when trying to edit a hex cell
  • Fixed various issues with the multi-byte visualizers
  • Fixed pattern language runtime not being reset properly after checking for MIME types
  • Fixed config files being placed in wrong locations on Linux
  • Fixed Windows native theme detection not always working correctly
  • Fixed a crash when the auto-load pattern setting is disabled

Pattern Language

  • Restructured entire library and cleaned up a bunch of legacy stuff
  • Updated Error messages and error display
    • All errors that are being thrown now show line/column information of the error as well as helpful error messages and hints on how to fix it (inspired by Rust errors)
  • Fixed for-loop parsing
  • Fixed display issues with static array entries
  • Fixed reading strings that were passed to functions
  • Fixed a namespace resolution crash
  • Fixed array out of bounds checks

If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button

Project file rewrite, Intel Hex & Motorola SREC provider and macOS Yosemite support

14 Aug 13:23
Compare
Choose a tag to compare

Changelog

Thank you so much for the ridiculous amount of 20'000 ⭐ on this project!

Additions

  • Replaced terrible existing project file system with a much more flexible one
    • This is a breaking change. If you have existing project files, they will no longer be loadable in ImHex starting from this version
    • To still use your old projects, you can use this Python Script here to extract the different parts of the old project file as stand-alone files that can then be imported again in newer versions of ImHex
  • The recents list now contain all providers, not just opened files
  • Added Intel Hex and Motorola SREC provider
  • Added hexadecimal size of file and selection to hex editor footer
  • Added select region command
  • Added close button to the welcome screen so various tools can be accessed without opening any data
  • Added Bookmark Import and Export option

Improvements

  • Added better support for Windows 7
    • You're still much better of by using Windows 10 or 11 instead since a bunch of things simply aren't possible on Windows 7
  • Removed dependency on macOS 11 only Framework so ImHex can now run on macOS Yosemite and higher
  • Switched .deb compression to gzip so it can be used on older Debian versions
  • Various find view improvements. Overlapping occurrences and occurrences at the very end of the file can now be found
  • Updated the LLVM demangler dependency
    • All demanglers in ImHex now support the latest C++ features as well as D and Rust mangled names
  • ImHex now properly allows opening of all files on macOS when dragging a file onto its executable

Bug Fixes

  • Fixed crash when trying to edit a hex cell
  • Fixed various issues with the multi-byte visualizers
  • Fixed pattern language runtime not being reset properly after checking for MIME types
  • Fixed config files being placed in wrong locations on Linux
  • Fixed Windows native theme detection not always working correctly
  • Fixed a crash when the auto-load pattern setting is disabled

Pattern Language

  • Restructured entire library and cleaned up a bunch of legacy stuff
  • Updated Error messages and error display
    • All errors that are being thrown now show line/column information of the error as well as helpful error messages and hints on how to fix it (inspired by Rust errors)
  • Fixed for-loop parsing
  • Fixed display issues with static array entries
  • Fixed reading strings that were passed to functions
  • Fixed a namespace resolution crash
  • Fixed array out of bounds checks

If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button

Traditional chinese translation, Find view, HiDPI fixes

05 Aug 11:24
Compare
Choose a tag to compare

Changelog

Additions

  • Added Chinese (Traditional) translation. Thanks a lot to @5idereal
  • Replaced String finder view with a more generic Find view
    • String find supports ASCII, UTF16-LE and UTF16BE string extraction with various settings for allowed characters and null termination
    • New string sequence finder
    • New Regex string finder
    • New Binary Pattern finder
  • Added support for Fedora .rpm releases. Massive thanks to @jonathanspw for the help and implementation and @iTrooz for various improvements
  • Added ULEB128 and SLEB128 rows to the data inspector. Thanks to @gudzpoz
  • Added u24, s24, u48 and s48 rows to the data inspector
  • Added RGB565 row to the data inspector
  • Added new 3.0x and 4.0x window scaling option
  • Added a new error message for when a provider failed to open its source
  • Added setting to automatically synchronize pattern source code between providers
  • Added support for +Infinity, -Infinity, Signaling NaN and Quiet NaN in the IEEE 754 tester tool

Improvements

  • ImHex should now properly scale up on HiDPI screens
  • Modernized look and feel of the ancient data information view
  • Portable Windows release now no longer uses the AppData folder
  • Updated ImGui, ImPlot and ImNodes to the latest version available
  • ImHex now resets its settings if it fails to parse them to avoid crashes on startup
  • Hex editor cell editing now correctly exits when clicking outside of the cell
  • When opening a new provider, the current pattern source code will now automatically be copied over
  • Lowered OpenGL requirements to 3.0 on Windows and Linux to hopefully support some older systems
  • Numpad enter can now be used in the pattern editor
  • Made many float displays easier to read

Bug Fixes

  • Fixed Intel GPU detection not working correctly
  • Fixed global shortcuts not always working
  • Fixed various out of bounds memory reads and issues with multi-byte visualizers in the hex editor view
  • Fixed duplicate provider tabs not being selectable
  • Fixed crash when trying to search for an empty string
  • Fixed various issues and crashes with the search tool
  • Fixed crash when selecting a folder as custom font path
  • Fixed displaying of truncated strings in data inspector
  • Fixed resize cursor not showing up correctly in non-borderless window mode
  • Fixed auto-evaluation of pattern language code not working correctly
  • Fixed pattern tooltips of static array entries

Pattern Language

  • Added the [[sealed]] attibute to make visualizers treat a type as a fundamental type
  • Massively improved search speed of Patterns using interval trees
  • Increased pattern and array limit.
    • You should now no longer run into these limits as quickly anymore
  • Fixed passing enums to functions
  • Added the std::time library for working with time constants and getting the local time
  • Added the type library with support for many additional type decodings
  • Fixed evaluation of in/out variables
  • Fixed decoding issues with signed out variables
  • Fixed issues with the namespace scope resolution
  • Fixed returning heap types from functions

If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button

Bug fixes

26 Jul 14:35
Compare
Choose a tag to compare

Changelog

Additions

  • Added filter option to bookmarks view

Improvements

  • Downloaded content store items no longer get placed in the /tmp directory when using the AppImage or Flatpak release. Thanks to @catsout
  • Improved rendering of bitfield entries in the pattern data view. Thanks to @Diadlo

Bug Fixes

  • Fixed various hex editor highlighting, tooltips and selection issues
  • Fixed duplicate pattern data view entries when sorting the list
  • Fixed various issues with multi-byte visualizers in the hex editor view
  • Fixed various base address related issues
  • Fixed Edit -> Create Bookmark menu item not working correctly
  • Fixed search not working as expected

Pattern Language

  • Bitwise operators no longer act like boolean operators
  • Fixed passing dynamically sized types to functions

If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button

New builtin types, pointers to arrays and many bug fixes

16 Jul 11:56
Compare
Choose a tag to compare

Changelog

Improvements

  • Upgraded codebase to C++23
  • Possibly added support for Windows 7 (untested)

Bug Fixes

  • Fixed advanced decoding hex editor row not being rendered correctly
  • Fixed editing floats, doubles and strings in the data inspector
  • Fixed opening files with spaces in their name on Linux not working correctly
  • Fixed crash when closing the file picker without choosing a file
  • Fixed duplicate file chooser popup entries not being selectable
  • Fixed CTRL + O only working when the hex editor view is selected
  • Fixed user folders not loading correctly on startup
  • Fixed crash when searching for an empty string
  • Fixed crash on exit

Pattern Language

  • Added u24, u48. u96, s24, s48 and s96 builtin types
  • Added support for pointers to arrays. Thanks a lot to @PredatorCZ
  • Added support for pointers with signed values. Thanks a lot to @PredatorCZ
  • Greatly improved token creation and consuming. Refactored Lexer and Parser
  • Fixed invalid placement syntax parsing
  • Improved error message when a invalid token was encountered
  • Improved querying patterns by address
  • Fixed name of returned static array entry patterns
  • Fixed crash when querying value of a zero-length string
  • Fixed namespace resolution issues
  • Fixed overriding the color of static arrays. Thanks to @PredatorCZ
  • Fixed passing placed variables to functions
  • Fixed In/Out variables not working correctly. Thanks to @PredatorCZ
  • Removed empty string patterns from the pattern data view

If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button

More unicode fixes

07 Jul 07:01
Compare
Choose a tag to compare

Changelog

Heyo @shutingrz :)

Additions

  • Added a backdrop image when no views are open

Improvements

  • Automatically restore default layout when a file is opened but no views are open
  • Improved stuttering when resizing or minimizing/maximizing the window
  • Improved the Full Sources tar size. Thanks to @iTrooz
  • Updated various dependencies

Bug Fixes

  • Fixed opening files with spaces in their name on Linux
  • Fixed various more Unicode issues

Pattern Language

  • Custom type formatting
    • Passing custom types to e.g std::print now prints e.g struct Test { 12, 34, 56 } for a Struct named Test with 3 variables
  • Fixed a crash when using provider operators

If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button

Unicode systems support, custom local variables and http proxies

04 Jul 20:24
716d6ae
Compare
Choose a tag to compare

Changelog

Additions

  • Added ability to remove bytes from a file. Thanks to @Diadlo
  • Added a macOS styled icon to the macOS build and updated the icon on other platforms Huge thanks to @zaafonin
  • Added back missing hex editor selection byte count value to the hex editor view footer
  • Added support for HTTP and SOCKS5 Proxies. Thanks a lot to @shirok1

Improvements

  • Fixed many issues with the macOS .dmg file, and the Linux AppImage and Flatpak. Massive thanks to @iTrooz
  • Massive CI Improvements Huge thanks to @iTrooz
    • This includes much improved build times, ArchLinux support, automatic release uploading and many other improvements
  • Switched over to GCC on macOS
    • This allows for more cutting edge C++ features to be used in the future
  • Lots of Unicode related crashes and fixes
    • Paths are now consistently handled correctly on all platforms
    • ImHex now works correctly when launched from a location with non-ASCII characters in its path or on systems with a user account name with unicode characters in it
  • Massively improved pattern highlighting performance
    • Search algorithm is now O(log2(N)) instead 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

If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button

Reworked hash view, Brazilian Portuguese translation

03 Jun 12:04
Compare
Choose a tag to compare

Changelog

Additions

  • Added Brazilian Portuguese translation. Huge thanks to @dgsmiley18
  • Added IEEE 754 floating point number experimenting tool
  • Complete rewrote the Hash view
    • It now supports displaying multiple different Hash types at the same time
    • Configured hashes now also appear in the hex editor when selecting a region, hovering the cursor over it and holding down SHIFT
  • Added tooltip to all Visualizer data processor nodes that display the visualization a lot bigger

Improvements

  • Improved contrast of the pattern language error popup text color in light mode

Bug Fixes

  • Fixed editing values in the hex editor
  • Fixed another scroll issue in the hex editor
  • Fixed pasting bytes in the hex editor view
  • Fixed bookmarks automatically collapsing when editing their name
  • Fixed a crash when the OS didn't configure monitors correctly
    • This mainly happens when using Windows Remote Desktop

Previous Changelog

Additions

  • Rewrite the entire Hex Editor View
    • The Editor now supports displaying data in various different ways. For example it can combine 4 bytes into one cell and display it as floating point number, or 2 bytes into a signed integer
    • Added setting to change color and transparency of selection
    • Added much better tooltips for Patterns and Bookmarks
      • Hold SHIFT for more information
    • Improved popups for find, goto, base address setting and byte insertion
    • Greatly improved search speed and efficiency
    • Fixed hex view not scrolling when moving the cursor off screen
    • Fixed many inconsistencies
  • Added support for custom languages for the Wikipedia terms searcher. Thanks to @xtexChooser
  • Added bit invert option to data inspector
  • Added bool, DOS Date and DOS Time decoder to data inspector

Pattern Language

  • Added addressof($) to get the data base address and sizeof($) to get the data size
  • Make bitfields be more on-par with structs and allow conditionals to be used in there
  • Added support for while-sized paddings
  • Fixed pattern language errors not being displayed in the console correctly
  • Fixed MIME pragma not working correctly
  • Fixed including files that include other files themselves

Improvements

  • Added ImHex to FlatHub. Thanks a lot to @Mailaender
  • Fixed various issues with the AppImage. Thanks a lot to @iTrooz
    • Opening the file browser still crashes the AppImage, drag-n-drop your files onto ImHex to open them

Floating point decoding
RGBA8 decoding


If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button