Releases: WerWolv/ImHex
Releases · WerWolv/ImHex
Splash screen, parent keyword, undo, redo and paste
Changelog
After many months I can finally release a new version. I'm really sorry for the delay but I'm currently working full time on my bachelor's thesis so I don't have much free time to work on ImHex right now. Hopefully in a few weeks again though :)
Additions
- Added a new and super fancy splash screen!
- All resource loading will now be done while this screen is shown
- Added German localization. Thanks a lot to @tumGER for proof reading!
- Added Italian localization. Thanks a lot to @CrustySean!
- Updated ImHex icon with a new one
- Added FPS limiting
- ImHex is now less power hungry and lowers its FPS to 5 when the window loses focus
- Added Paste, Undo and Redo function!
- This has LONG been overdue
- Added saving and loading of data processor setups
- Added data size node to the data processor
- Added ability to copy values from the data inspector
- Data overlays now work everywhere
- This means if the data processor changed the displayed data, this data will also show up in the pattern data view, inspector, analyzer, disassembler and every where else
- Added
parent
keyword to the pattern language- This allows you to access variables that are found in the parent of the current structure
- Added array index syntax to r-values in the pattern language
- This also turned the
addressof
andsizeof
built-in function into operators now so they no longer require ""
- This also turned the
- Added UTF-16 character type and strings to the pattern language
- Allow nested use of types in the pattern language
- Added
dataSize()
function to the pattern language to get the currently loaded data size - Added
base_address
pragma to the pattern language to automatically set the file's base address - Loaded plugins are now displayed on the welcome screen
- Added slider to entropy graph to quickly skip through the file
- Added Recent Files to File menu
- Added ability to lock bookmarks so they can't be edited anymore until unlocked
- Added Font Awesome icons in a few places
- Use correct folder paths on Mac and Linux instead of looking for everything next to the executable
- Check the README to know where things are supposed to go now!
- Added memory usage footer item on Windows
- Added buffer combine, slice and repeat nodes to the data processor
- Added currently loaded file name to the window title
- Added
Close File
option to the File Menu - Added hex editor color highlighting opacity setting
Improvements
- Pattern language execution, disassembling, searching and many other things that may take a long time to complete are now run asynchronously
- Properly open some default views on first launch
- Greatly improved the Data Analyzer interface with ImPlot
- ImHex now uses the system file dialog instead of a custom one to open files
- Improved colors used on the welcome screen
- Variables placed out of bounds are now discarded instead of causing a error
- Improved goto command to now respect base addresses
Bug fixes
- Fixed multiple severe memory leaks in the pattern language
- Fixed bookmark names and comments refusing to be changed
- Fixed color attribute requiring a
0x
prefix to understand the value - Fixed region selection event only selecting first byte
- Fixed eval_depth default value being way too low
- Fixed ternary expressions in the pattern language not working everywhere
- Fixed bookmark name and comment not being loaded properly from a project file
- Fixed binary value in base converter being shifted by one
- Fixed pointers in the pattern language easily crashing ImHex
- Fixed MIME-based pattern loading popup being almost unusable. Thanks to @ThisALV for making me aware of this
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Light mode, Node data processor, custom encodings and more
Changelog
Additions
- Pattern language additions
- Added new built-in functions
addressof
: Gets the address of a variablenextAfter
: Gets the address directly after a variablealignTo
: Aligns a value to the provided boundaries
- Added modulus operator
%
- Added dollar operator
$
. It acts as a value placeholder and returns the current address within the file - Added support for printing 128 bit values
- Added attributes
- The attribute syntax is similar to the one found in C++
[[attr("value")]]
and allows configuring extra parameters for variables. Currently available are the following: name
: Overrides the name displayed in the pattern data viewcolor
: Overrides the color displayed in the pattern data viewcomment
: Adds a comment to the variable in the pattern data view
- The attribute syntax is similar to the one found in C++
- Added new built-in functions
- Added Light and Classic color mode, changeable in the new settings interface
- Added data processor
- This is a huge feature that allows preprocessing of data before it is shown in the hex view through a node system.
- Currently following features are supported
- Bitwise operations
- Boolean operations
- Control flow (if and co)
- Base64 and hexadecimal decoding
- AES decryption (all commonly used modes)
- Besides this there's also a Nodes API that allows plugin devs to implement their own nodes
- Added full localization support
- Through custom plugins, ImHex can now be fully translated to other languages
- Language selection is done through the settings menu
- Added custom file encoding features
- This allows for example ROM hackers to provide so called
Thingy
files that map byte sequences to UTF-8 characters. These decodings will be displayed to the right of the ASCII pane in the hex view
- This allows for example ROM hackers to provide so called
- Added set base address option to hex editor
- Added settings interface
- Added color picker for Bookmark header and selection color
- Also added a tooltip window for bookmarks when hovering over their region in the hex view
- Added keyboard navigation. Thanks to @csinkers
- Improved suggested pattern popup to now list all available patterns instead of just the first one
- Added a nice welcome screen
- Added support for Home, End, PageUp and PageDown keys in hex view
- Added base converter tool
- Added footer and an API to add information to it
Improvements
- Most popup windows can now be closed with the ESC key
- All built-in features of ImHex are now refactored into a "builtin" plugin
- Improved about page to contain actual links and better information
- Improved error displaying for when files failed to open
- Switched to mbedtls instead of openssl for crypto operations
Bug fixes
- Fixed issues with plugins
- Fixed signed integer display in data inspector
- Fixed many crashes especially on Linux
- Disabled multi-viewport support on Linux as it's just not ready yet to be used there
- Once ImGui updates and adds better support for Linux, this will be reverted
- Fixed multiple memory leaks
- Fixed search feature in hex view
- Fixed hex view shortcuts
- Fixed multiple instances of popups only appearing when certain views are open
- Fixed bookmarks being created and displayed in wrong positions in huge files
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Windows Installer and bug fixes
Changelog
Additions
- Added a MSI installer for Windows
- Thanks a lot to @roblabla for his work on this!
- Added a console to the pattern window to show evaluator infos, warnings and errors
- Added
assert
,warnAssert
andprint
builtin functions - Added a right click context menu to the Hex editor window
- Added engineering display mode to Calculator
- Various UI improvements
Bug fixes
- Fixed
findSequence
builtin function not working correctly- Thanks to @kaero
- Fixed issues with bitfields, enums and unions
- Fixed a bunch of crashes when using the pattern language
- Fixed invalid display of 64 bit values in the pattern data window
- Fixed bitfield entries displaying an invalid type
- Fixed empty structs displaying a wrong offset
- Fixed a off-by-one error that prevented arrays from going to the end of the data
- Fixed boolean OR operator not working at all
- Fixed applying of defines
- Improved UTF-8 display in data inspector
- Various cmake improvements
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
Pattern Language rewrite, better file IO performance and macOS support
Changelog
Additions
- Added official support for MacOS
- Made possible by @Thog's amazing contributions to the build system
- Added Plugin support
- Allows creation of custom windows, custom entries to the Tools window and custom data providers
- An example can be found under
/plugins/example
- Rewrote the entire pattern language parser and evaluator
- The language is now faster, more robust and has much less issues
- A in-depth guide for all the features in the Pattern Language can now be found in the Wiki
- Many new features have been added to the pattern language
- Added mathematical expressions with many operators, bit operators and value access
- Added a much more featureful way of using values of other variables everywhere where a number is required
- Added conditional statements for structs and unions (
if
,else
andelse if
) - Added back zero sized array. These will simply be ignored
- Added scope resolution operator for using enum values in expressions
- Added built-in functions to find sequences and read values at addresses
- Added boolean patterns
- Added unsized character arrays for null-terminated strings
- Use file memory mapping instead of using standard file IO
- This greatly increases performance on older computers and brings down background file IO to a minimum.
- Added Decimal, Hexadecimal and Octal number format options to data inspector
- Added nightlies for all platforms
- Added full DPI scaling
- Added custom font support
- To use this, place your font named
font.ttf
next to the executable
- To use this, place your font named
- Added version info to about page
- Version info, current commit hash and branch are shown
- Added selected region information to hex editor footer
- Various UI/UX improvements
Bug fixes
- Greatly improved byte highlighting performance
- Previously, when scrolling down with a big pattern running, huge slowdowns started happening. The algorithm used for highlighting has been greatly improved to fix this.
- Fixed opening of files with a non-ASCII file path
- Fixed crashes with zero-sized arrays
- Fixed byte selection in read-only files
- Fixed ImHex refusing to be closed in some circumstances
- Fixed data inspector not updating in all cases
- Fixed ASCII characters drawing above the hex editor footer
- Fixed floating point displaying in pattern data view
- Fixed pattern data not updating when a new file is loaded
Python loader scripts, individual variable endianess and math evaluator
Changelog
Additions
- Added math evaluator / calculator to tool window
- Added overriding of endianess of individual variables instead of the entire file
- Added Python loader scripts. Right now you need to have some version of Python 3.8.X installed, otherwise rename the
lib/python3.8
folder tolib/python3.9
(or whatever your version is)- This is very bare-bones right now but more will come in the future. Features so far are:
- Applying patches
- Creating Struct and union definitions
- Getting of currently loaded file path
- Added cursor movement with arrow keys in hex editor
- Added patches list window
- Added feature to apply IPS and IPS32 patches
- Added simple project files
- Added opening files by dropping them on the executable (this also means opening files from the command line)
Bug fixes
- Fixed opening files not working when hex editor view isn't open
- Fixed shortcuts from applying to closed windows
- Fixed help view appearing in View menu
- Fixed crash when array size variable read the value zero
- Fixed data inspector failing to read values at the end of the file
- Changed cheat sheets from modal window to actual window to allow keeping it open
- Prevented console from opening on Windows
- Fixed possible crash when loading files
- Fixed user not being asked if a pattern file should be automatically loaded, even if there was one available
Thanks a lot to @Thog for her incredible work fixing up the dependency mess and implementing CI for both windows and Ubuntu :)
IPS patches, error messages and UI cleanup
Changelog
Additions
- Added IPS and IPS32 exporting of patches
- Added proper error messages and error highlighting to the pattern language window
- Added import from Base64 option
- Added copy from string and copy demangled string to strings window
- Added support for demangling both Itanium and MSVC symbols
- Added Save and Save As button to save modifications to disk
- Added character literals to pattern language
- Added simple bookmark and comment feature. No way to save them yet though
- Make types and disassembly mnemonics be colored
- Clicking on pattern variables, strings and disassembly table rows now highlights the relevant bytes
- Massively improved look and feel of many different windows
- Enabled ImGui's Viewport support. This means you can now detach windows and move them to a different screen
- Improved ASCII and Wide character display in inspector
Bug fixes
- Fixed windows being tiny at first start
- Removed collapse button from all windows since it doesn't make sense
- Fixed string search yielding invalid results in the last searched block
- In the pattern data view, the variable's name is now indented instead of the color
- Shrink color picker in the tools window a bit since it was really huge
Bug fixes
Changelog
Bug fixes
- Fixed a crash when no patterns folder exists
- Fixed a crash when scrolling the disassembler options child off screen
- Fixed time_t decoding crash on Linux
- Truncate file size to show only two decimal places
- Fixed format function crash when providing an invalid pattern
Huge file loading, disassembler and pattern language additions
Changelog
Additions
- Allow loading of huge files efficiently
- Added a capstone based disassembler window for ARM32, ARM64, x86, PowerPC, MIPS, Sparc, SystemZ, XCore, 68K, TMS320C64x, 680X and Ethereum. All modes are supported.
- Added pragmas to pattern language
#pragma MIME
for specifying type of file this pattern is useful for#pragma endian
for setting the data endianess globally for this pattern file
- Added automatic loading of pattern files based on the loaded file's MIME type
- Added array sizes based on other variables in the same struct to pattern language
- Added pointers to pattern language
- Added big/little endian toggle to data inspector
Bug fixes
- Fixed enums always failing to validate
- Fixed data inspector showing unsigned values instead of signed values
- Fixed table colors looking weird sometimes
More language and UI additions
Changelog
Additions
- Added bitfields to pattern language
- Added unions to pattern language
- Added padding data type to pattern language
- Added data inspector view
- Added loading of file when dropping it onto ImHex
- Better file picker by gallickgunner (with some improvments)
- Completely rewrote highlighting and pattern evaluator
- Made structs and arrays collapsible
- Added highlighting of byte regions with the cursor
- Added more Goto modes
- Offset from start of the data
- Offset from the current cursor position
- Offset from the end of the data
- Added more "Copy as..." functions
- Copy as programming language array
- C
- C++
- C#
- Rust
- Java
- JavaScript
- Python
- Copy as text
- ASCII formatted hex view
- HTML formatted hex view (in a self contained
<div>
)
- Copy as programming language array
- Added a offset header row in hex editor
- Replaced pattern editor with properly syntax highlighted version by BalazsJako
Bug fixes
- Fixed about and cheat sheet window not opening
- Fixed crash when loading huge files. Hex editor doesn't support them yet though because of an ImGui limitation
- Fixed syntax errors at the end of the file to not be caught
- Fixed ImHex icon to not show in window
Huge feature update
Changelog
Additions
- Added enums
- Added // and /* */ style comments
- Added language verifier to catch many logic errors
- Added libmagic database for Nintendo Switch files
- Added full variable name displaying in pattern data view
- Added a about and a pattern language cheat sheet window
- Massively improved the pattern data view with ImGui's new Tables API
- Added sorting
- Added color coding
- Added per-type value displaying
- Added tools window featuring
- Itanium demangler
- ASCII table
- Regex replacer
- Color picker
- Added strings finder
- Added hexadecimal search in hex editor
- Added multi-byte selection with byte and string copying
- Added many key shortcuts for commonly used functions
- Improved byte highlight palette
- Improved entropy chart by always calculating the entropy using 2048 blocks per file
- Added more information to data information window
Bug fixes
- Fixed color flickering after loading pattern file
- Disabled pattern editor when no file is loaded