Skip to content

Releases: WerWolv/ImHex

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

Bug fixes

28 May 18:35
Compare
Choose a tag to compare

Changelog

Bug fixes

  • Fixed bookmark menu entry causing wrong region to be marked
  • Fixed Hex Editor selection scrolling being broken
  • Fixed parsing of hex escaped character literals in the pattern language
  • Fixed crash on exit
  • Fixed error again that broke building on GCC 12.1.0 (as used on Arch Linux)

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

Hex editor view rewrite, flathub release

28 May 10:23
857aadf
Compare
Choose a tag to compare

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

Yara console module, type forward declarations, default parameters and tons of bug fixes

18 Apr 00:18
Compare
Choose a tag to compare

Changelog

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

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

Windows defender issues and bug fixes

03 Mar 14:19
Compare
Choose a tag to compare

Changelog

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

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 offset and other crash fixes

01 Mar 18:29
Compare
Choose a tag to compare

Changelog

Addition

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

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 refactor and editable data inspector

01 Mar 08:25
Compare
Choose a tag to compare

Changelog

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

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

Data processor improvements, variable placements inside of structs, Japanese translation

15 Feb 13:43
Compare
Choose a tag to compare

Changelog

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

unknown


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