Как всё связано
- 01Провайдер
- 02Дерево кусков
- 03Снимок
- 04Видимые страницы
- 05Canvas-сетка
Любой размер, мгновенно
Hexa никогда не читает файл целиком. Интерфейс просит у Rust видимое окно сырым ArrayBuffer и держит небольшой кеш страниц, поэтому файл на 100 ГБ открывается так же быстро, как на 100 байт, и листается на 60 fps.
- Правки живут в персистентном B+-дереве кусков
{source, offset, length}с копированием пути: каждая правка стоит O(log n) памяти. - Скопировать гигабайт значит сослаться на него. Заливки и случайные данные никогда не материализуются.
- Поиск, хеши, сравнение и анализ идут по снимку, без блокировок, пока ты продолжаешь править.
Сохранению можно верить
Отмена устроена деревом: ветки и откат одной правки из середины истории. Журнал записи сохраняет отмену даже после сохранения.
- Атомарное сохранение сохраняет права и xattrs.
- Запись на месте упорядочена графом зависимостей, не требует свободного места и откатывается после сбоя.
Структуры и реверс
- Язык шаблонов в стиле ImHex с LSP и отладчиком, импорт из Kaitai, 010 Editor, C-заголовков, DWARF и PDB и 28 встроенных форматов.
- PE, ELF и Mach-O, дизассемблер для всех архитектур Capstone, ассемблерные патчи на месте с добивкой NOP, перекрёстные ссылки.
- Сравнение со сдвигами, N-стороннее и трёхстороннее слияние, патчи IPS, UPS, BPS, VCDIFF и bsdiff.
- Карты энтропии, кривые Гильберта, строки, вложенные файлы, правила YARA и 100+ хешей, включая ssdeep и TLSH.
Не только файлы
Диски, разделы и файловые системы (FAT, exFAT, ext, NTFS, ISO), образы дисков от VHDX до E01, память запущенного процесса со сканером и поиском указателей, файлы по HTTP, S3 и SFTP.
Скрипты, но в песочнице
Lua-консоль с лимитами памяти, инструкций и времени, WASM-плагины с ограничением по fuel, локальный HTTP API на 127.0.0.1 под токеном и hexa-cli: тот же движок без интерфейса, с кодами выхода для CI.
hexa-cli diff old.bin new.bin --stats -f json
hexa-cli search dump.bin --hex "DE AD ?? EF" --countСтек
Двенадцать крейтов на Rust без интерфейса, от hexa-core до hexa-wasm, оболочка на Tauri 2 и React 19, который рисует сетку на canvas. Ядро также выходит как npm-пакет на WebAssembly. Русский и английский, раскладки Vim и Emacs, режим для скринридера.