github WerWolv/ImHex v1.10.1
Pattern language standard library, file tools and improvements

latest releases: v1.35.4, v1.35.3, v1.35.2...
3 years ago

Documentation

A new documentation for ImHex (mainly the pattern language right now) is in the works and can be found here: https://imhex.werwolv.net/docs. It is a lot more detailed than the one found on the Wiki here and contains information about all the new features as well. Check it out!

Changelog

Additions

  • Added File Utils
    • File Shredder: Safely deletes files
    • File splitter: Splits a file into multiple smaller files of a given size
    • File combiner: Combines multiple smaller files into a single one
  • Added custom font size setting
    • As this only works for custom fonts, the option is available only by manually editing the hex.builtin.setting.interface.font_size setting in the config file
  • Added support for include files in Yara Rules
  • Pattern Files dropped onto ImHex are now automatically opened in the pattern editor
  • Yara rules and magic databases dropped onto ImHex are now copied to their respective folder

Pattern Language

  • Added the auto datatype for functions to accept any variable type
  • Added inheritance for structs
  • Moved all std::str functions to std::string since they were not accessible anymore
  • Comments (//, /* */) and preprocessor directives are now ignored inside strings
  • Added [[inline]] attribute to allow struct, union and array members to be displayed without adding deeper nesting
  • Added [[transform]] attribute to allow modifying the a value before it's being accessed through the dot syntax
  • Added [[pointer_base]] attribute to allow making pointers relative from different regions of the file or to calculate a custom offset
  • Fixed unary expressions behaving wrong in parenthesis
  • Fixed boolean mathematical expressions and cast syntax
  • Fixed std::string::substr
  • Fixed enum entry scope resolution
  • Fixed accessing strings as rvalues
  • Fixed pointer offset calculation
  • Fixed recursive types
  • Respect endianess when accessing rvalues
  • Fixed member access inside of an if body

Standard Library

  • The pattern language now has a proper standard library
  • Added std::http allowing HTTP GET requests from the pattern language
  • Added std::bit for common bit operatons
  • Added C Types files containing C/C++ type definitions (uint32_t, float64_t, etc)
  • Added Rust Types files containing Rust type definitions (i32, f64, etc)
  • Added std::ctype to inspect ASCII character traits
  • Added std::fxpt with fixed point number conversion and arithmetic
  • Added std::limits with minimal and maximal values for different data types
  • Added std::math with common math functions
  • Added std::ptr with helper functions for the [[pointer_base]] attribute
  • Added additional std::string functions. (std::string::parse_int, std::string::to_string, std::string::contains and more)

Improvements

  • Improved automatic pattern loading based on the MIME type of the currently loaded data
    • This can be turned off in the settings
  • Improved Hex editor Find and Goto popup

Bug fixes

  • Fixed a major memory leak with Yara Rules
  • Fixed new update available popup appearing, even on latest version
  • Fixed "File -> Close" option crashing
  • Fixed "Open File" shortcut not working

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

Don't miss a new ImHex release

NewReleases is sending notifications on new releases.