1
0
mirror of synced 2024-11-25 08:10:24 +01:00
ImHex/README.md

198 lines
9.2 KiB
Markdown
Raw Normal View History

<a href="https://imhex.werwolv.net">
<h1 align="center">
2023-01-30 11:36:34 +01:00
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./resources/projects/logo_text_light.svg">
<img height="100px" src="./resources/projects/logo_text_dark.svg">
</picture>
</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
<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/actions/workflow/status/WerWolv/ImHex/build.yml?longCache=true&style=for-the-badge&label=Build&logoColor=fff&logo=GitHub%20Actions&branch=master">
</a>
<a title="Discord Server" href="https://discord.gg/X63jZ36xBY">
<img alt="Discord Server" src="https://img.shields.io/discord/789833418631675954?label=Discord&logo=Discord&logoColor=fff&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>
<a title="Code Quality" href="https://www.codefactor.io/repository/github/werwolv/imhex">
<img alt="Code Quality" src="https://img.shields.io/codefactor/grade/github/WerWolv/ImHex?longCache=true&style=for-the-badge&label=Code%20Quality&logoColor=fff&logo=CodeFactor&branch=master">
</a>
<a title="Translation" href="https://weblate.werwolv.net/projects/imhex/">
<img alt="Translation" src="https://img.shields.io/weblate/progress/imhex?logo=weblate&logoColor=%23FFFFFF&server=https%3A%2F%2Fweblate.werwolv.net&style=for-the-badge">
</a>
<a title="Documentation" href="https://imhex.werwolv.net/docs">
2023-03-18 16:10:39 +01:00
<img alt="Documentation" src="https://img.shields.io/badge/Docs-Available-green?logo=gitbook&logoColor=%23FFFFFF&style=for-the-badge">
</a>
</p>
## Supporting
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
2020-12-09 19:49:56 +01:00
<p align="center">
<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>
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
2020-12-01 20:47:57 +01:00
- 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
2022-07-30 11:43:25 +02:00
- Doesn't burn out your retinas when used in late-night sessions
- Dark mode by default, but a light mode is available as well
2020-12-01 20:47:57 +01:00
- Data importing
- Base64 files
- IPS and IPS32 patches
- 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
- Ethereum
2022-01-25 00:03:03 +01:00
- RISC-V
- WebAssembly
2022-08-03 11:56:18 +02:00
- MOS65XX
2022-01-25 00:03:03 +01:00
- 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 vulnerabilities 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 shredder
2020-11-10 15:29:22 +01:00
## Pattern Language
The Pattern Language is the completely custom programming language developed for ImHex.
It allows you to define structures and data types in a C-like syntax and then use them to parse and highlight a file's content.
- Source Code: [Link](https://github.com/WerWolv/PatternLanguage/)
- Documentation: [Link](https://imhex.werwolv.net/docs/)
## Database
2022-08-02 14:45:48 +02:00
For format patterns, libraries, magic and constant files, check out the [ImHex-Patterns](https://github.com/WerWolv/ImHex-Patterns) repository.
**Feel free to PR your own files there as well!**
## Requirements
To use ImHex, the following minimal system requirements need to be met:
- **OS**: Windows 7 or higher, macOS 10.15 (Catalina) or higher, "Modern" Linux (Ubuntu 22.04, Fedora 36/37, RHEL/AlmaLinux 9, and Arch Linux have official packages, other and older distributions can use the AppImage)
- **CPU**: x86_64 (64 Bit)
- **GPU**: OpenGL 3.0 or higher
- Intel HD drivers are really buggy and often cause graphic artifacts
- In case you don't have a GPU available, there are software rendered releases available for Windows and macOS
- **RAM**: 256MB, more may be required for more complicated analysis
- **Storage**: 100MB
## Installing
Information on how to install ImHex can be found in the [Install](/INSTALL.md) guide
2020-12-01 20:47:57 +01:00
## Compiling
2022-08-08 21:12:19 +02:00
To compile ImHex on any platform, GCC (or Clang) is required with a version that supports C++23 or higher.
On macOS, Clang is also required to compile some ObjC code.
All releases are being built using latest available GCC.
2021-10-31 17:15:14 +01:00
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
For more information, check out the [Compiling](/dist/compiling) guide.
## 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.
- [C++ Plugin Template](https://github.com/WerWolv/ImHex-Cpp-Plugin-Template)
- [Rust Plugin Template](https://github.com/WerWolv/ImHex-Rust-Plugin-Template)
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
- [Mailaender](https://github.com/Mailaender) for getting ImHex onto Flathub
- [iTrooz](https://github.com/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 :)
2021-11-29 08:33:15 +01:00
2022-08-02 14:45:48 +02:00
### Dependencies
2021-11-29 08:33:15 +01:00
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
- Thanks to rxi for [microtar](https://github.com/rxi/microtar) used for extracting downloaded store assets
2022-08-02 14:45:48 +02:00
- Thanks to btzy for [nativefiledialog-extended](https://github.com/btzy/nativefiledialog-extended)
- Thanks to danyspin97 for [xdgpp](https://sr.ht/~danyspin97/xdgpp)
2022-08-03 11:56:18 +02:00
- Thanks to all other groups and organizations whose libraries are used in ImHex