For those wondering what hex editing is useful for, here's one case: Many older video games did not checksum or encrypt their savefiles, so you could (hex-)edit them to change your current progress (campaign stage) and attributes (gold, credits, skills).
"Hacking" like this is such an important skill that someone can develop. I've been working a lot with getting older games to run on modern Windows, and a good chunk of my time has been spent in a hex editor.
The other day for example I was trying to figure out why "Lord of the Rings: Battle for Middle-earth II - Rise of the Witch King" (boy what a title) was hard set on pulling out some registry key from HKLM's "App Paths". Between x86dbg and a hex editor I was able to patch the hard coded 0x80000002 DWORD value for HKLM to 0x80000001 to point it towards HKCU. Is this a lot of work to avoid needing admin privileges to install the game? Absolutely, but it can be fun and rewarding.
This is what I primarily use hex editors for; I've made some simple romhacks and occasionally do some reverse engineering. I'm curious what hex editors people would recommend for this purpose though, I've tried a few over the years but have yet to really find one that "clicks".
During my first job out of college, I was assigned to maintain an ancient Windows codebase. A few different groups of people had been assigned to maintain this specific website and the people responsible before me had hardcoded secrets in the compiled executables but had excluded them from the source code. My experience using hex editors from tinkering with old video games (Diablo 2) gave me the skills to extract the secrets for work.
Very interested in the parsing parts for file-format validation. I used to use 010 editor and had written several parsers for various files but I no longer have a license for that but wish I had a way to interpret files to check against a standard like this offers. Thanks for sharing!
FYI seems on Windows this has special installation instructions with a Python dependency. Too bad it's not just an executable binary I can drop in and run.
I tried it, on Windows you need Python only if you want to use the embedded binwalk feature, but you don't have to install binwalk or any other dependencies since it is provided in the zip file. It worked seamlessly.
By the way I don't know any other good solutions to use binwalk on Windows
HexWalk is much simpler than ImHex. It uses Qt so the GUI is more native (ImHex, of course, uses Dear ImGui). HexWalk is much more "fixed function" than ImHex. ImHex is basically a core hex editor view with a canvas you can fill with an endless stream of plugins.
For a comparative newbie, I'd say HexWalk is simpler than ImHex and offers a decent baseline feature set for simple tasks. I prefer the native UI widgets to Dear ImGui ones. It gains features each release and is slowly catching up to HxD (which is IMO the Gold Standard for "fixed function advanced features hex editor," to the point that I run it in Wine even on Linux and OSX). Some elements of the UI feel wasteful/clunky compared to HxD, but a lot about hex editors boils down to personal preference.
Is it possible to search for a specific pattern in this (or any other) hex editor?
E.g., if you have some sort of container format or aggregated file where you want to search for a specific instance of a pattern (starting from any offset). I haven't found support for this in ImHex (but I might have missed it).