Skip to content

Releases: WerWolv/ImHex

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

Parameter packs, assignment operators and byte inserting

30 Jan 21:30
Compare
Choose a tag to compare

Changelog

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

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

`[[format]]` and function argument fixes

12 Jan 08:54
Compare
Choose a tag to compare

Changelog

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

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 fixes

10 Jan 21:51
Compare
Choose a tag to compare

Changelog

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

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