1
0
mirror of synced 2024-11-15 03:27:40 +01:00
🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
Go to file
iTrooz_ ceb07b7425
build: Added AUR/ArchLinux support (#566)
* store version in file

* use version file in release workflow

* use new version file in build workflow

* ArchLinux build

* setup cache for ArchLinux

* add version check in release CI

* edit step description

* update pkgbuild to install correctly

* AUR deploy

* rename version file to VERSION

* install all default plugins in PKGBUILD

* Added emojis to build workflow

* Added emojis to release workflow

* separate update packages and install dependencies in two steps

* fix Release CI

* add md5Sums to PKGBUILD

* make PKGBUILD point to the official repo + set v in tag
2022-07-04 21:40:22 +02:00
.github build: Added AUR/ArchLinux support (#566) 2022-07-04 21:40:22 +02:00
.idea ui/ux: Rewrite of the entire hex editor view to make it more flexible (#512) 2022-05-27 20:42:07 +02:00
cmake build: Added AUR/ArchLinux support (#566) 2022-07-04 21:40:22 +02:00
dist build: Added AUR/ArchLinux support (#566) 2022-07-04 21:40:22 +02:00
lib build: Use Portal instead of GTK file dialogs on Linux 2022-07-02 20:11:43 +02:00
main sys: Remove remaining references to hex.builtin from libimhex 2022-07-02 17:53:13 +02:00
plugins fix: Command Palette focus not working 2022-07-02 21:38:58 +02:00
resources ui: Updated About page icon 2022-06-25 12:29:16 +02:00
tests tests: Added UTF-8 file operation tests 2022-07-02 10:05:25 +02:00
.clang-format sys: Reformat all 2022-02-01 22:09:44 +01:00
.gitattributes git: Updated .gitattributes to new repo structure 2022-01-29 18:36:10 +01:00
.gitignore patterns: Huge refactor of Pattern Language runtime to use smart pointers (#458) 2022-02-27 23:25:39 +01:00
.gitmodules patterns: Use standalone pattern language library instead of built-in one 2022-04-17 16:57:30 +02:00
CMakeLists.txt build: Added AUR/ArchLinux support (#566) 2022-07-04 21:40:22 +02:00
LICENSE Create LICENSE 2020-12-03 15:34:58 +01:00
README.md git: Moved build instructions from the readme to individual files 2022-06-27 21:11:35 +02:00
VERSION build: Added AUR/ArchLinux support (#566) 2022-07-04 21:40:22 +02:00

🔍 ImHex

A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.

'Build' workflow Status Discord Server Total Downloads

Supporting

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

GitHub donate button Patreon donate button PayPal donate button

Screenshots

Hex editor, patterns and data information Bookmarks, disassembler and data processor

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, namespaces, little and big endian support, conditionals and much more!
    • Useful error messages, syntax highlighting and error marking
  • Data importing
    • Base64 files
    • IPS and IPS32 patches
  • Data exporting
    • 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
  • String 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 architectures (frontend for Capstone)
    • 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
    • IBM SystemZ
    • xCORE
    • M68K
    • TMS320C64X
    • M680X
    • Ethereum
    • RISC-V
    • WebAssembly
    • MOS565XX
    • Berkeley Packet Filter
  • Bookmarks
    • Region highlighting
    • Comments
  • Data Analyzer
    • File magic-based file parser and MIME type database
    • Byte distribution graph
    • Entropy graph
    • Highest and average entropy
    • Encrypted / Compressed file detection
  • Built-in Content Store
    • Download all files found in the database directly from within ImHex
  • Yara Rules support
    • Quickly scan a file for vulnerabilities with official yara rules
  • Helpful tools
    • Itanium and MSVC demangler
    • ASCII table
    • Regex replacer
    • Mathematical expression evaluator (Calculator)
    • Hexadecimal Color picker
    • Base converter
    • UNIX Permissions calculator
    • Anonfiles File upload tool
    • Wikipedia term definition finder
    • File utilities
      • File splitter
      • File combiner
      • File shredder
  • Built-in cheat sheet for pattern language and Math evaluator
  • Doesn't burn out your retinas when used in late-night sessions

Pattern Language

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.

Database

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

Plugin development

To develop plugins for ImHex, use one of the following two templates projects to get started. 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.

Nightly builds

Nightlies are available via GitHub Actions here.

Compiling

To compile ImHex, a C++20 compiler is required. Releases are all mainly built using GCC, however on macOS, clang is also required to compile some ObjC code.

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.

Credits

Contributors

  • Mary for her immense help porting ImHex to MacOS and help during development
  • Roblabla for adding MSI Installer support to ImHex
  • jam1garner and raytwo for their help with adding Rust support to plugins
  • Mailaender for getting ImHex onto Flathub
  • iTrooz for many improvements related to release packaging and the GitHub Action runners.
  • Everybody else who has reported issues on Discord or GitHub that I had great conversations with :)

Libraries

  • Thanks a lot to ocornut for their amazing Dear ImGui which is used for building the entire interface
    • Thanks to ocornut 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 nlohmann for their json library used for project files
  • Thanks to aquynh for capstone which is the base of the disassembly window
  • Thanks to vitaut for their libfmt library which makes formatting and logging so much better
  • Thanks to rxi for microtar used for extracting downloaded store assets