Skip to content

ASCII row editing, Out variable access node

Compare
Choose a tag to compare
@WerWolv WerWolv released this 12 Oct 11:03
· 2577 commits to master since this release

Additions

  • Added support for editing the ASCII characters in the hex editor view
  • Added new Float <-> Buffer conversion nodes to the data processor
  • Added new Pattern Language Out variable access node to the pattern processor

Bug Fixes

  • Fixed a occasional crash when opening providers
  • Fixed 64 bit hex data visualizer only displaying 32 bit values
  • Fixed some gaps in the hex editor cell background highlighting
  • Fixed data inspector still displaying entries despite no bytes being selected
  • Fixed invalid axis labels of the plots in the data analyzer view

Pattern Language

  • Fixed an issue that caused attributes to not work correctly
  • Fixed non-type template parameters in using declarations
  • Fixed error in formatting function always causing a recursion error after a while

Previous Changelog

Additions

  • Patterns that overlap with the selected bytes in the hex editor view are now highlighted in blue in the pattern data view
  • It's now possible to add custom Data Inspector entries using the Pattern Language
    • To do this, create a new file in the %IMHEX_PATH%/scripts/inspectors folder with the .pat extension and enter you pattern code there
    • Each value that has been placed in memory using the @ operator will be added to the list
    • To get the current selected offset, use the $ operator
  • Added numeric value searching to Find View
  • Added unique selection and scrolling position support for each provider
    • This means when you scroll somewhere and select some data in a file, then switch to a different one and select some bytes there, the selection and scroll position in the original file will still remain where they were
  • Added icons next to all textfields
    • These display what kind of input this textfield supports. For example: Text, Numbers, Mathematical expressions, Regex, Binary Pattern, etc.
  • Modified bytes are now being highlighted in red in the hex editor view until they are saved
  • Added Wide Strings (UTF-16) to the Data Inspector
  • Added Half Floats to the Data Inspector
  • Bookmarks can now be reordered by dragging them around
  • The color picker in Bookmarks now has a bunch of predefined colors that can be selected by clicking on them
  • Added a Jump to option to the Edit menu that allows scrolling directly to the currently selected region
  • Added option to the settings menu to explicitly disable multi window support
    • This is useful for systems that either don't properly support Multi Window support or for people using Tiled Window Managers which get very confused by these extra windows.
    • If you can't open ImHex properly because of this, you can also manually set the hex.builtin.setting.interface.multi_windows setting in the config file to 0
  • Added new options to the settings menu to adjust the padding between individual bytes and the padding between ASCII characters in the hex editor view

Improvements

  • Reduced File / Provider loading time to basically zero
  • Completely removed all lag that happened when typing in the pattern editor
    • This extends out to other things that were doing work asynchronously (Disassembler, Yara, Analyzer, etc.)
  • Improved startup time of ImHex by about 50%
  • Huge pattern arrays will now be split up into chunks of 512 entries in the Pattern Data View to make them easier to navigate.
  • Properly display an error message when a Project failed to load
  • Display an error message with potential fixes if the file dialog couldn't be opened on Linux. Thanks to @iTrooz
  • The File Provider no longer keeps files open when it doesn't need to
    • This means other applications that support it, can now open files that are already open in ImHex
  • Improved selection and drag scrolling in the Hex Editor View
  • ASCII Table background colors are no longer hardcoded so it looks correct in Light Mode
  • Limited the maximum number of characters that can be displayed in the tooltip that shows up when hovering over a pattern in the Hex editor view to prevent the tooltip from growing indefinitely
  • Properly center current selection when jumping to it

Bug Fixes

  • Fixed Copy-As Python Array putting a semicolon at the end of the data
  • Fixed issues when multiple web requests are running simultaneously
  • Fixed issue where file inspector failed to read over page boundaries
  • Fixed crash when the hex editor view data visualizer cell byte size was not evenly divisible by the column count
  • Fixed many issues and crashes with the Calculator Tool
  • Fixed various UTF-8 path bugs that prevented ImHex to work correctly on systems that have non-ASCII characters in their paths
  • Fixed issue where the data processor nodes did not remember their position correctly when switching to a different provider
  • Fixed potential crashes when trying to paste clipboard data when it's empty
  • Fixed flickering of the Pattern Data View when executing a pattern
  • Fixed opening files with unicode names through the command line
  • Fixed a crash when closing ImHex after launching it through the terminal
  • Fixed scrolling issues and improved the whole scrolling system overall
  • Fixed pattern evaluator not exiting evaluating state correctly in some cases
  • Fixed new lines in wide strings messing up the data inspector view layout
  • Fixed highlighting of separator column in the hex editor view

Pattern Language

  • Added Templates for structs, unions and using declarations
  • Break and Continue can now be used outside of arrays to terminate stop evaluating the current type
  • Return can now be used anywhere outside of functions to terminate execution of the entire pattern
  • Added function to get current hex editor selection as an ImHex Extension
  • Added function to demangle a string as an ImHex Extension
  • Added support for global arrays
  • Added non-type template parameters
  • Allow custom types to be used inside of sizeof operators
    • This might yield incorrect results if the type's size is not static
  • Added better error messages when parsing invalid struct, bitfield and if statements. Thanks to @Calcoph
  • Fixed many many issues with templates
  • Fixed using control flow statements inside of conditionals
  • Fixed padding fields being displayed in bitfields
  • Allow use of compound statements in global scope
  • The ternary operator no longer enforces exactly the same types for the second and third operand
  • Fixed highlighting of arrays of arrays
  • Fixed bitfield order not resetting correctly
  • Fixed indexing of strings
  • Prevent the user from indexing other non-array types
  • Fixed a crash when using break in an unsized array
  • Fixed std::mem::read_signed yielding invalid values
  • Fixed formatting of signed hex values
  • Fixed accessing of local arrays
  • Fixed string pattern not correctly reading all bytes
  • Fixed a few out of bounds indexing errors in the Preprocessor
  • Fixed reading from local float variables
  • Fixed a crash when passing invalid values to the std::time library
  • Fixed issue where while-sized static arrays could expand indefinitely beyond the end of the data
  • Fixed crash with empty dynamic arrays

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