r/programming • u/WerWolv • 2d ago
Reverse Engineering Unknown File Formats with ImHex
https://werwolv.net/posts/file_format_reverse_engineering/7
u/Ytrog 2d ago
How does ImHex compare to GNU Poke?
14
u/WerWolv 2d ago
ImHex is the whole hex editor around it while GNU Poke is just a cli tool for decoding binaries. The Pattern Language that is part of ImHex solves the same purpose as GNU Poke but compared to it, it behaves more like a normal, high level programming language. You can take a look at the blog post or pattern files for existing file formats at https://github.com/WerWolv/ImHex-Patterns to get a feel for what it can do
5
u/nelson-f 1d ago
Oh hey it's cool that you're the dev behind ImHex. I remember stumbling across ImHex via GitHub but I have yet to use it because a lot of this goes over my head. I still enjoyed the read though. I also like the overall look/design of your site.
-5
u/RandNho 2d ago
I would not call this reverse engineering. Mostly because I saw Lina doing things to live2d format without ever seeing source code at all.
32
u/WerWolv 2d ago
Keep in mind, this is directed to people that don't know anything about file formats or using ImHex yet. I deliberately chose a game that was pretty easy to decompile and read to keep the focus on learning how to write Patterns in ImHex instead of on understanding bad decompiler output
6
u/Iggyhopper 2d ago
This is great if the game is written in C#. If the game was written in unmanaged C or C++, it's a mess, and you'd most likely start by running
stringson the .exe, looking for references to the in-game message ("saving game...", etc.).Luckily the save file was unencrypted. If that was not the case, most beginners would give up and lose interest.
-5
u/fxfighter 1d ago
I was hoping this was going to be from an unmanaged app of some sort that'd require more specific tooling and reverse engineering know how.
If the file was generated by a managed language or scripting language piece of software, these are obvously easy to figure out how stuff works with standard knowledge of the language in question.
I'm not even sure ImHex hasn't anything particulaly noteworthy to do with this article.
1
u/RandNho 1d ago
https://youtube.com/playlist?list=PL8S0yfRexZULmW9fhF2gcMsuPBi6jeVhZ&si=LQH3DVE_8e_4iwfn. Try this long series? Of live black box reverse engineering.
24
u/Somepotato 2d ago
I need to give imhex another go. 010 always felt like a better experience, the language being similar to C being more familiar and friendly feeling than imhex's dsl, but I'm sure there's been improvements since then