Pattern language standard library, file tools and improvements
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
- As this only works for custom fonts, the option is available only by manually editing the
- 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 tostd::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
- Information about all available functions can be found in the documentation
- To use it, please download it from the store or from ImHex's Pattern Repo
- 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!