🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
Go to file
WerWolv 4d87eefbe9
Merge pull request #69 from brianredbeard/issue-48-fix-fedora-error
dist/fedora: Include file magic headers
2020-12-08 18:45:44 +01:00
.github CI: Add a GitHub Action to build on Ubuntu 20.04 LTS 2020-12-05 20:03:22 +01:00
.idea Added possible support for MacOS. Completely untested. 2020-12-06 13:48:56 +01:00
dist dist/fedora: Include file magic headers 2020-12-08 09:31:17 -08:00
include Fixed additional issues with padding and zero sized arrays 2020-12-06 23:15:51 +01:00
libs Fixed bytes not being selectable when a read-only file was loaded 2020-12-06 23:21:31 +01:00
magic_dbs Added magic database for Nintendo console files 2020-11-13 13:06:45 +01:00
python_libs/lib Added Python API function to create structs and unions 2020-12-01 18:21:29 +01:00
source Improved language parsing and validation. This fixes #58 2020-12-07 23:49:19 +01:00
.gitignore Only statically link on Windows 2020-11-15 15:48:30 +01:00
CMakeLists.txt CI: Add a GitHub Action to build on Ubuntu 20.04 LTS 2020-12-05 20:03:22 +01:00
LICENSE Create LICENSE 2020-12-03 15:34:58 +01:00
README.md create subdir 'dist', update compiling guidelines 2020-12-07 04:17:17 +01:00
icon.ico Add icon 2020-11-10 17:34:16 +01:00
resource.rc Change icon id for GLFW to load it 2020-11-20 16:50:21 +01:00

README.md

ImHex

A Hex Editor for Reverse Engineers, Programmers and people that value their eye sight when working at 3 AM.

Supporting

If you like my work, consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button

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
    • arrays, pointers, structs, unions, enums, bitfields, using declarations, litte and big endian support
    • Useful error messages, syntax highlighting and error marking
  • Data importing
    • Base64 files
    • IPS and IPS32 patches
  • Data exporting
    • IPS and IPS32 patches
  • Data Exporting
  • Data inspector allowing interpretation of data as many different types (little and big endian)
  • Huge file support with fast and efficient loading
  • Strings search
    • 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
  • Disassembler supporting many different architectures
    • ARM32 (ARM, Thumb, Cortex-M, aarch32)
    • ARM64
    • MIPS (MIPS32, MIPS64, MIPS32R6, Micro)
    • x86 (16 bit, 32 bit, 64 bit)
    • PowerPC (32 bit, 64 bit)
    • Sparc
    • SystemZ
    • XCore
    • M68K
    • TMS320C64X
    • M680X
    • Ethereum
  • Bookmarks
    • Region highlighting
    • Comments
  • Data Analyzer
    • File magic based file parser and MIME type database
    • Byte distribution graph
    • Entropy graph
    • Highest and avarage entropy
    • Encrypted / Compressed file detection
  • Helpful tools
    • Itanium and MSVC demangler
    • ASCII table
    • Regex replacer
    • Mathematical expression evaluator (Calculator)
    • Hexadecimal Color picker
  • Built-in cheat sheet for pattern language and Math evaluator
  • Doesn't burn out your retinas when used in late-night sessions

Screenshots

Additional Files

For format patterns, includable libraries and magic files, check of the ImHex-Patterns repository here. Feel free to PR your own files there as well!

Compiling

You need a C++20 compatible compiler such as GCC 10.2.0 to compile ImHex. Moreover, The following dependencies are needed for compiling ImHex:

  • GLFW3
  • libmagic, libgnurx, libtre, libintl, libiconv
  • libcrypto
  • capstone
  • libLLVMDemangle
  • nlohmann json
  • Python3

Find all in one dependency installation scripts for Arch Linux, Fedora and/or MSYS2 in dist.

After all the dependencies are installed, run the following commands to build ImHex:

mkdir build
cd build
cmake ..
make -j

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.

On both Windows and Linux:

  • Copy the files from python_libs in the lib folder next to your built executable.
  • 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

Credits

  • Thanks a lot to ocornut for their amazing Dear ImGui which is used for building the entire interface
    • Thanks to orconut as well for their hex editor view used as base for this project.
    • Thanks to BalazsJako for their incredible ImGuiColorTextEdit used for the pattern language syntax highlighting
    • Thanks to AirGuanZ for their amazing imgui-filebrowser used for loading and saving files
  • Thanks to nlohmann for their json library used for project files
  • Thanks to aquynh for capstone which is the base of the disassembly window