2022-01-11 00:43:08 +01:00
< a href = "https://imhex.werwolv.net" > < h1 align = "center" > :mag: ImHex< / h1 > < / a >
2020-11-10 15:29:22 +01:00
2021-08-18 22:36:46 +02:00
< p align = "center" > A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.< / p >
2020-12-01 20:47:57 +01:00
2020-12-19 15:14:45 +01:00
< p align = "center" >
< a title = "'Build' workflow Status" href = "https://github.com/WerWolv/ImHex/actions?query=workflow%3ABuild" > < img alt = "'Build' workflow Status" src = "https://img.shields.io/github/workflow/status/WerWolv/ImHex/Build?longCache=true&style=for-the-badge&label=Build&logoColor=fff&logo=GitHub%20Actions" > < / a >
2021-10-31 17:15:14 +01:00
< a title = "Discord Server" href = "https://discord.gg/X63jZ36xBY" > < img alt = "Discord Server" src = "https://img.shields.io/discord/789833418631675954?label=Discord&logo=Discord&style=for-the-badge" > < / a >
< a title = "Total Downloads" href = "https://github.com/WerWolv/ImHex/releases/latest" > < img alt = "Total Downloads" src = "https://img.shields.io/github/downloads/WerWolv/ImHex/total?longCache=true&style=for-the-badge&label=Downloads&logoColor=fff&logo=GitHub" > < / a >
2020-12-19 15:14:45 +01:00
< / p >
2020-12-05 15:10:57 +01:00
## Supporting
2020-12-19 15:14:45 +01:00
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
2020-12-05 15:10:57 +01:00
2020-12-09 19:49:56 +01:00
< p align = "center" >
2020-12-05 15:10:57 +01:00
< a href = "https://github.com/sponsors/WerWolv" > < img src = "https://werwolv.net/assets/github_banner.png" alt = "GitHub donate button" / > < / a >
< a href = "https://www.patreon.com/werwolv" > < img src = "https://c5.patreon.com/external/logo/become_a_patron_button.png" alt = "Patreon donate button" / > < / a >
< a href = "https://werwolv.net/donate" > < img src = "https://werwolv.net/assets/paypal_banner.png" alt = "PayPal donate button" / > < / a >
2020-12-09 19:49:56 +01:00
< / p >
2020-12-05 15:10:57 +01:00
2021-10-31 17:15:14 +01:00
## Screenshots
2021-11-01 18:55:25 +01:00
![Hex editor, patterns and data information ](https://user-images.githubusercontent.com/10835354/139717326-8044769d-527b-4d88-8adf-2d4ecafdca1f.png )
![Bookmarks, disassembler and data processor ](https://user-images.githubusercontent.com/10835354/139717323-1f8c9d52-f7eb-4f43-9f11-097ac728ed6c.png )
2021-10-31 17:15:14 +01:00
2020-12-01 20:47:57 +01:00
## Features
- Featureful hex view
- Byte patching
- Patch management
- Copy bytes as feature
- Bytes
- Hex string
- C, C++, C#, Rust, Python, Java & JavaScript array
- ASCII-Art hex view
- HTML self contained div
- String and hex search
- Colorful highlighting
- Goto from start, end and current cursor position
- Custom C++-like pattern language for parsing highlighting a file's content
- Automatic loading based on MIME type
2021-10-31 17:15:14 +01:00
- arrays, pointers, structs, unions, enums, bitfields, namespaces, little and big endian support, conditionals and much more!
2020-12-01 20:47:57 +01:00
- Useful error messages, syntax highlighting and error marking
- Data importing
- Base64 files
- IPS and IPS32 patches
2020-12-06 22:15:00 +01:00
- Data exporting
2020-12-01 20:47:57 +01:00
- IPS and IPS32 patches
- Data inspector allowing interpretation of data as many different types (little and big endian)
- Huge file support with fast and efficient loading
2020-12-17 08:55:40 +01:00
- String search
2020-12-01 20:47:57 +01:00
- Copying of strings
- Copying of demangled strings
- File hashing support
- CRC16 and CRC32 with custom initial values and polynomials
- MD4, MD5
- SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
2022-01-25 00:03:03 +01:00
- Disassembler supporting many architectures (frontend for Capstone)
2020-12-17 08:55:40 +01:00
- ARM32 (ARM, Thumb, Cortex-M, AArch32)
2020-12-01 20:47:57 +01:00
- ARM64
- MIPS (MIPS32, MIPS64, MIPS32R6, Micro)
2020-12-17 08:55:40 +01:00
- x86 (16-bit, 32-bit, 64-bit)
- PowerPC (32-bit, 64-bit)
- SPARC
- IBM SystemZ
- xCORE
2020-12-03 20:56:02 +01:00
- M68K
- TMS320C64X
- M680X
2020-12-06 22:15:00 +01:00
- Ethereum
2022-01-25 00:03:03 +01:00
- RISC-V
- WebAssembly
- MOS565XX
- Berkeley Packet Filter
2020-12-01 20:47:57 +01:00
- Bookmarks
- Region highlighting
- Comments
- Data Analyzer
2020-12-17 08:55:40 +01:00
- File magic-based file parser and MIME type database
2020-12-01 20:47:57 +01:00
- Byte distribution graph
- Entropy graph
2021-02-26 13:35:48 +01:00
- Highest and average entropy
2020-12-01 20:47:57 +01:00
- Encrypted / Compressed file detection
2021-10-31 17:15:14 +01:00
- Built-in Content Store
- Download all files found in the database directly from within ImHex
- Yara Rules support
- Quickly scan a file for vulnearabilities with official yara rules
2020-12-01 20:47:57 +01:00
- Helpful tools
- Itanium and MSVC demangler
- ASCII table
- Regex replacer
- Mathematical expression evaluator (Calculator)
- Hexadecimal Color picker
2021-10-31 17:15:14 +01:00
- Base converter
- UNIX Permissions calculator
- Anonfiles File upload tool
- Wikipedia term definition finder
- File utilities
- File splitter
- File combiner
- File shredderer
2020-12-01 20:47:57 +01:00
- Built-in cheat sheet for pattern language and Math evaluator
- Doesn't burn out your retinas when used in late-night sessions
2020-11-10 15:29:22 +01:00
2021-01-08 01:36:17 +01:00
## Pattern Language
2021-12-03 09:28:40 +01:00
The custom C-like Pattern Language developed and used by ImHex is easy to read, understand and learn. A guide with all features of the language can be found [on the docs page ](http://imhex.werwolv.net/docs ).
## Plugin development
To develop plugins for ImHex, use one of the following two templates projects to get startet. You then have access to the entirety of libimhex as well as the ImHex API and the Content Registry to interact with ImHex or to add new content.
- [C++ Plugin Template ](https://github.com/WerWolv/ImHex-Cpp-Plugin-Template )
- [Rust Plugin Template ](https://github.com/WerWolv/ImHex-Rust-Plugin-Template )
2021-01-08 01:36:17 +01:00
2020-12-04 09:26:19 +01:00
## Additional Files
2020-12-17 08:55:40 +01:00
For format patterns, includable libraries and magic files, check out the [ImHex-Patterns ](https://github.com/WerWolv/ImHex-Patterns ) repository. Feel free to PR your own files there as well!
2020-12-04 09:26:19 +01:00
2020-12-30 18:56:25 +01:00
## Nightly builds
2021-01-25 15:49:20 +01:00
Nightlies are available via GitHub Actions [here ](https://github.com/WerWolv/ImHex/actions?query=workflow%3ABuild ).
- Windows • __x86_64__
2021-11-12 18:21:03 +01:00
- [MSI ](https://nightly.link/WerWolv/ImHex/workflows/build/master/Windows%20Installer.zip )
- [EXE ](https://nightly.link/WerWolv/ImHex/workflows/build/master/Windows%20Portable%20ZIP.zip )
2021-01-25 15:49:20 +01:00
- MacOS • __x86_64__
- [DMG ](https://nightly.link/WerWolv/ImHex/workflows/build/master/macOS%20DMG.zip )
- Linux • __x86_64__
- [ELF ](https://nightly.link/WerWolv/ImHex/workflows/build/master/Linux%20ELF.zip )
2022-01-11 00:48:31 +01:00
- [DEB ](https://nightly.link/WerWolv/ImHex/workflows/build/master/Linux%20DEB.zip )
2021-11-12 18:21:03 +01:00
- [Flatpak ](https://nightly.link/WerWolv/ImHex/workflows/build/master/Linux%20Flatpak.zip )
2022-01-11 00:48:31 +01:00
- [AppImage ](https://nightly.link/WerWolv/ImHex/workflows/build/master/Linux%20AppImage.zip )
2020-12-30 18:56:25 +01:00
2020-12-01 20:47:57 +01:00
## Compiling
2021-10-31 17:15:14 +01:00
You need a C++20 compatible compiler such as GCC 10.2.0 to compile ImHex.
Many dependencies are bundled into the repository using submodules so make sure to clone it using the `--recurse-submodules` option.
All dependencies that aren't bundled, can be installed using the dependency installer scripts found in the `/dist` folder.
2020-12-01 20:47:57 +01:00
2021-10-31 17:15:14 +01:00
For working examples
2020-12-18 21:44:13 +01:00
2021-03-01 08:56:49 +01:00
### Windows
2020-12-07 04:16:55 +01:00
2021-12-22 13:38:21 +01:00
On Windows, ImHex is built through msys2 / mingw. To install all dependencies, open a mys2 window and run the PKGCONFIG script in the [dist/msys2 ](dist/msys2 ) folder.
2020-12-07 04:16:55 +01:00
After all the dependencies are installed, run the following commands to build ImHex:
```sh
2020-12-01 20:47:57 +01:00
mkdir build
cd build
2020-12-28 18:52:22 +01:00
cmake -DCMAKE_BUILD_TYPE=Release ..
2020-12-01 20:47:57 +01:00
make -j
```
2020-12-07 04:16:55 +01:00
---
To create a standalone zipfile on Windows, get the Python standard library (e.g. from https://github.com/python/cpython/tree/master/Lib) and place the files and folders in `lib/python3.8` next to your built executable. Don't forget to also copy the `libpython3.8.dll` and `libwinpthread-1.dll` from your mingw setup next to the executable.
2020-12-01 20:47:57 +01:00
2022-01-16 14:20:52 +01:00
- Copy the files inside the `/resources/lib/python` folder into the `lib` folder next to your built executable.
2020-12-07 04:16:55 +01:00
- Place your magic databases in the `magic` folder next to your built executable
- Place your patterns in the `pattern` folder next to your built executable
- Place your include pattern files in the `include` folder next to your built executable
2020-12-03 09:17:55 +01:00
2020-12-18 21:44:13 +01:00
### macOS
To build ImHex on macOS, run the following commands:
```sh
brew bundle --no-lock --file dist/Brewfile
mkdir build
cd build
2020-12-28 18:52:22 +01:00
CC=$(brew --prefix llvm)/bin/clang CXX=$(brew --prefix llvm)/bin/clang++ PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" cmake -DCMAKE_BUILD_TYPE=Release ..
2020-12-18 21:44:13 +01:00
make -j
```
2021-03-01 08:56:49 +01:00
Install the ImHex executable as well as libimhex.dylib to wherever ImHex should be installed.
All other files belong in `~/Library/Application Support/imhex` :
```
Patterns: ~/Library/Application Support/imhex/patterns
Pattern Includes: ~/Library/Application Support/imhex/includes
Magic files: ~/Library/Application Support/imhex/magic
Python: ~/Library/Application Support/imhex/lib/pythonX.X
Plugins: ~/Library/Application Support/imhex/plugins
Configuration: ~/Library/Application Support/imhex/config
Resources: ~/Library/Application Support/imhex/resources
```
2022-01-22 00:11:59 +01:00
If the build fails while trying to find the macOS libraries, make sure you have
XCode installed with `xcode-select --install` . Homebrew will also help get the
most recent SDK installed and configured with `brew doctor` .
2021-03-01 08:56:49 +01:00
### Linux
2021-12-22 13:38:21 +01:00
Dependency installation scripts are available for many common Linux distributions in the [/dist ](dist ) folder.
2021-03-01 08:56:49 +01:00
After all the dependencies are installed, run the following commands to build ImHex:
```sh
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j
```
---
Put the ImHex executable into the `/usr/bin` folder.
Put libimhex.so into the `/usr/lib` folder.
2021-03-01 10:40:05 +01:00
Configuration files go to `/etc/xdg/imhex` or `~/.config/imhex` .
All other files belong in `/usr/share/imhex` or `~/.local/share/imhex` :
2021-03-01 08:56:49 +01:00
```
Patterns: /usr/share/imhex/patterns
Pattern Includes: /usr/share/imhex/includes
Magic files: /usr/share/imhex/magic
Python: /usr/share/imhex/lib/pythonX.X
2021-03-08 16:09:33 +01:00
Plugins: /usr/share/imhex/plugins
2021-03-01 10:40:05 +01:00
Configuration: /etc/xdg/imhex/config
2021-03-01 08:56:49 +01:00
Resources: /usr/share/imhex/resources
```
2021-03-01 10:40:05 +01:00
All paths follow the XDG Base Directories standard, and can thus be modified
with the environment variables `XDG_CONFIG_HOME` , `XDG_CONFIG_DIRS` ,
`XDG_DATA_HOME` and `XDG_DATA_DIRS` .
2021-03-01 08:56:49 +01:00
2020-12-03 09:17:55 +01:00
## Credits
2021-11-29 08:33:15 +01:00
### Contributors
- [Mary ](https://github.com/Thog ) for her immense help porting ImHex to MacOS and help during development
- [Roblabla ](https://github.com/Roblabla ) for adding MSI Installer support to ImHex
- [jam1garner ](https://github.com/jam1garner ) and [raytwo ](https://github.com/raytwo ) for their help with adding Rust support to plugins
- All other people that have been reporting issues on Discord or GitHub that I had great conversations with :)
### Libraries
2020-12-03 09:18:55 +01:00
- Thanks a lot to ocornut for their amazing [Dear ImGui ](https://github.com/ocornut/imgui ) which is used for building the entire interface
2021-10-31 17:15:14 +01:00
- Thanks to ocornut as well for their hex editor view used as base for this project.
2020-12-03 09:18:55 +01:00
- Thanks to BalazsJako for their incredible [ImGuiColorTextEdit ](https://github.com/BalazsJako/ImGuiColorTextEdit ) used for the pattern language syntax highlighting
- Thanks to nlohmann for their [json ](https://github.com/nlohmann/json ) library used for project files
- Thanks to aquynh for [capstone ](https://github.com/aquynh/capstone ) which is the base of the disassembly window
2021-10-31 17:15:14 +01:00
- Thanks to vitaut for their [libfmt ](https://github.com/fmtlib/fmt ) library which makes formatting and logging so much better
2021-11-12 18:21:03 +01:00
- Thanks to rxi for [microtar ](https://github.com/rxi/microtar ) used for extracting downloaded store assets