https://github.com/strobejb/q22
Catch22 Hex Editor
https://github.com/strobejb/q22
binary-file-editor disassembler elf-parser hex-editor pe-parser reverse-engineering reverse-engineering-tools structured-data
Last synced: 8 days ago
JSON representation
Catch22 Hex Editor
- Host: GitHub
- URL: https://github.com/strobejb/q22
- Owner: strobejb
- License: gpl-3.0
- Created: 2026-03-20T21:53:38.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-07-22T21:22:53.000Z (18 days ago)
- Last Synced: 2026-07-22T23:15:28.585Z (18 days ago)
- Topics: binary-file-editor, disassembler, elf-parser, hex-editor, pe-parser, reverse-engineering, reverse-engineering-tools, structured-data
- Language: C++
- Homepage: https://www.catch22.net
- Size: 4.86 MB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
- awesome-hex-editors - Q22 - inspector` `structs` `executable-aware` | 🪟🐧 | GUI | GPL-3.0 | 🇬🇧 | Jul 2026 | 🚀 | (Hex Editors)
README
# Q22
[](https://github.com/strobejb/q22/actions/workflows/build.yml)
[](https://github.com/strobejb/q22/actions/workflows/release.yml)
Q22 is a cross-platform binary file editor - the successor to the original Catch22 HexEdit application for Windows.
The core file editing and hex-view capabilities are carried forward from the original HexEdit, while the application UX has been largely rewritten in Qt6. The goal was to keep the direct, capable binary-editing model of the original HexEdit while modernising the UI, settings, theming, packaging, and cross-platform foundations.
## Features
Editing:
- Open and edit binary files directly, including large file support.
- Cut, copy, paste, insert, delete, undo, redo.
- View data in hex, decimal, octal, binary, and text forms.
- Group bytes as 8-bit, 16-bit, 32-bit, or 64-bit values.
- Search and jump to offsets without leaving the editor.
Structure View:
- Inspect files through C-style structures.
- Built-in support for PE and ELF files.
- Expand headers, sections, imports, exports, symbols, and related tables.
- Automatically choose known formats from file type or magic bytes.
- Add custom `.strata` definitions using the Strata language; legacy `.struct`
files are still supported.
Disassembly:
- Disassemble code!
- Supports x86 64-bit, x86 32-bit, ARM, ARM Thumb, and AArch64.
- Detects PE and ELF entrypoints automatically.
- Browse discovered functions and jump between disassembly and bytes.
Bookmarks and annotations:
- Bookmarks and highlights within the hex display.
- Fast access to saved bookmarked positions through the bookmark viewer.
- Bookmark state is persisted for future use.
Clipboard, import, and export formats:
- Copy-as and paste-special workflows for moving data between text and binary forms.
- Import and export files or clipboard data using multiple formats.
- Hex, ASCII/text, and raw data.
- Base64 and UUEncode.
- Intel HEX and Motorola S-records.
- HTML.
- C++, C, and assembler-style data.
UX:
- File properties, checksum calculation, and string extraction panels.
- Recent files and configurable preferences.
- Light, dark, and system theme modes.
- Built-in palettes plus custom palette creation and editing.
- Custom titlebar, docked panels, and platform-specific window chrome for
Windows, KDE/KWin, and GNOME/Mutter.
- Windows and Linux build/release workflows.
## Build
### Pre-requisites
1. Qt framework 6.10+
2. QtCreator
run the following command to install the desktop icon in Gnome
```
/scripts/install-dev-desktop.sh
```
### Steps to build:
1. Open QtCreator (6.10 or above).
2. Open the ~/qq/CMakeList.txt project
3. Select the Projects tab, and then `Configure Project` at the bottom-right
4. Select Build -> Build All Projects
From the commandline:
```sh
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
ctest --test-dir build --output-on-failure
```
## Supported Platforms
* Linux (Fedora currently)
* Windows
more to come!
## License
Copyright (C) 2001-2026 James Brown.
Q22 is licensed under GPL-3.0-or-later. The full license text is included in
[LICENSE](LICENSE).
Releases are created manually from the GitHub Actions **Release** workflow using a `MAJOR.MINOR.PATCH` version.