$ show WerWolv/ImHex
ImHex is a cross-platform hex editor and binary analysis tool designed for reverse engineers, programmers, and digital forensics. It provides a rich GUI built on Dear ImGui and GLFW, with a modular plugin architecture that allows extending functionality through dynamically loaded plugins. The core library (libimhex) implements a provider abstraction for various data sources (files, disks, process memory, GDB, SSH, UDP, etc.), an event-driven communication system, a content registry for registering views, tools, settings, and data inspectors, and a pattern language engine for declarative binary parsing. The application includes built-in plugins for hex editing, data inspection, disassembly (Capstone), diffing, YARA rule matching, hashing, decompression, visualizations (3D, plots, images), scripting (C and .NET), and a Model Context Protocol (MCP) server for AI-assisted analysis. It supports undo/redo, bookmarks, patches, projects, themes, layouts, achievements, tutorials, and a command palette. The codebase is well-structured with clear separation between core library, plugins, and platform-specific code, though some components are tightly coupled to ImGui internals and the custom pattern language.
The LLM identified 5 files worth highlighting for reuse:
A standalone, header-only SemanticVersion class that parses and compares version strings with support for nightly builds, build types, and pre-release suffixes. It is fully self-contained and can be extracted into any C++ project requiring robust version comparison.
A BinaryPattern class that parses hex patterns with wildcards (??) and matches them against byte sequences. It is self-contained, uses no internal ImHex dependencies, and can be reused in any application needing hex pattern matching.
An EncodingFile class that parses Thingy-format encoding table files, supporting directives like -include, -alias, -name, and -description. It provides bidirectional encoding/decoding and is independent of the rest of ImHex, making it reusable for any project that needs custom character encoding tables.
A self-contained ImGui-based Markdown renderer that supports GitHub-flavored Markdown including tables, code blocks, images (data URI, HTTP, romfs), and special quote types. It depends only on ImGui and can be extracted as a reusable widget for any ImGui application.
A generic undo/redo stack implementation with support for operation grouping, transaction-like batching, and a clean Operation base class. It is decoupled from the provider system and can be reused in any application requiring undo/redo functionality.