Skip to content

Releases: WerWolv/ImHex

Selected pattern highlighting, non-type template parameters,

10 Oct 18:08
Compare
Choose a tag to compare

Additions

  • Patterns that overlap with the selected bytes in the hex editor view are now highlighted in blue in the pattern data view

Improvements

  • Properly center current selection when jumping to it

Bug Fixes

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

Previous Changelog

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

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

Custom data inspector entries, numeric value searching, Templates

08 Oct 08:42
Compare
Choose a tag to compare

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

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

Linux crash fixes

17 Sep 14:06
Compare
Choose a tag to compare

Changelog

Bug Fixes

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

Previous Changelog

Additions

  • Added many new Copy As... options
    • Current Address
    • Base64
    • Lua array
    • Go array
    • Crystal array
    • Swift arrary
    • Pascal array
  • Added zsync file to releases. Thanks a lot to @iTrooz
    • This file can be used to auto-update the AppImage
  • Added "Require full match" toggle to Regex finder
  • Added reset button to Find view to clear the currently found items
  • Pattern Database files are now included by default in the Flatpak build. Thanks to @ColinKinloch
  • Added support to open multiple files at once through the command line

Improvements

  • Improved formatting of ASCII Text area and HTML Copy as... output
  • Disabled FPS displaying in release builds
  • Improved rendering of patterns in the pattern data view
  • Removed unused space in hex editor footer
  • Improved load times of ImHex on some systems
  • Pattern evaluation can now be aborted with the task stop button

Bug Fixes

  • Fixed crash when resizing a file
  • Fixed graphical artifacts on welcome screen footer
  • Fixed welcome screen settings button only working sometimes
  • Fixed rendering of pattern array entries
  • Fixed searching for invalid sequences in the Find view to yield way too many results
  • Fixed sequence escape codes being parsed incorrectly
  • Fixed opening files in an existing instance of ImHex not always working correctly
  • Fixed the dangerous function popup reappearing constantly

Pattern Language

  • Added support for enum ranges
    • If values in a range have the same meaning, you can now use MY_ENUM_VALUE = 0x10 ... 0x20 to have the formatter display all values in that range as such.
  • 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

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

Pattern language speed improvements and bug fixes

17 Sep 07:28
Compare
Choose a tag to compare

Changelog

Improvements

  • Pre-fill the size field of the "Remove bytes" popup with the current selection size

Bug Fixes

  • Fixed ImHex crashing on some Linux systems when trying to open a file
  • Fixed "Copy As..." function (but also others) having their second-to-last byte wrong

Pattern Language

  • TONS of speed improvements
    • Prevent debug mode string formatting from occurring on non-debug mode
    • Improved stringification of pattern performance
    • Improved function calling performance
    • Improved flattening performance of static arrays
    • Prevent accessing values through the dot syntax unnecessarily copying data

Previous Changelog

Additions

  • Added many new Copy As... options
    • Current Address
    • Base64
    • Lua array
    • Go array
    • Crystal array
    • Swift arrary
    • Pascal array
  • Added zsync file to releases. Thanks a lot to @iTrooz
    • This file can be used to auto-update the AppImage
  • Added "Require full match" toggle to Regex finder
  • Added reset button to Find view to clear the currently found items
  • Pattern Database files are now included by default in the Flatpak build. Thanks to @ColinKinloch
  • Added support to open multiple files at once through the command line

Improvements

  • Improved formatting of ASCII Text area and HTML Copy as... output
  • Disabled FPS displaying in release builds
  • Improved rendering of patterns in the pattern data view
  • Removed unused space in hex editor footer
  • Improved load times of ImHex on some systems
  • Pattern evaluation can now be aborted with the task stop button

Bug Fixes

  • Fixed crash when resizing a file
  • Fixed graphical artifacts on welcome screen footer
  • Fixed welcome screen settings button only working sometimes
  • Fixed rendering of pattern array entries
  • Fixed searching for invalid sequences in the Find view to yield way too many results
  • Fixed sequence escape codes being parsed incorrectly
  • Fixed opening files in an existing instance of ImHex not always working correctly
  • Fixed the dangerous function popup reappearing constantly

Pattern Language

  • Added support for enum ranges
    • If values in a range have the same meaning, you can now use MY_ENUM_VALUE = 0x10 ... 0x20 to have the formatter display all values in that range as such.
  • 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

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 'Copy As...' options, Enum ranges and references

15 Sep 13:05
Compare
Choose a tag to compare

Changelog

Additions

  • Added many new Copy As... options
    • Current Address
    • Base64
    • Lua array
    • Go array
    • Crystal array
    • Swift arrary
    • Pascal array
  • Added zsync file to releases. Thanks a lot to @iTrooz
    • This file can be used to auto-update the AppImage
  • Added "Require full match" toggle to Regex finder
  • Added reset button to Find view to clear the currently found items
  • Pattern Database files are now included by default in the Flatpak build. Thanks to @ColinKinloch
  • Added support to open multiple files at once through the command line

Improvements

  • Improved formatting of ASCII Text area and HTML Copy as... output
  • Disabled FPS displaying in release builds
  • Improved rendering of patterns in the pattern data view
  • Removed unused space in hex editor footer
  • Improved load times of ImHex on some systems
  • Pattern evaluation can now be aborted with the task stop button

Bug Fixes

  • Fixed crash when resizing a file
  • Fixed graphical artifacts on welcome screen footer
  • Fixed welcome screen settings button only working sometimes
  • Fixed rendering of pattern array entries
  • Fixed searching for invalid sequences in the Find view to yield way too many results
  • Fixed sequence escape codes being parsed incorrectly
  • Fixed opening files in an existing instance of ImHex not always working correctly
  • Fixed the dangerous function popup reappearing constantly

Pattern Language

  • Added support for enum ranges
    • If values in a range have the same meaning, you can now use MY_ENUM_VALUE = 0x10 ... 0x20 to have the formatter display all values in that range as such.
  • 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

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

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