Автор Тема: RTHextion: новый hex-редактор для ромхакинга и переводов  (Прочитано 3705 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Посоны, привет.

Я тут запилил hex-редактор для ромхакинга. Когда-то в начале нулевых я сам использовал Translhextion16c, но где тот траснлхекшн и где нулевые...

Короче, называется он RTHextion (предложения названия получше принимаются) и лежит на гитхабе.

RTHextion доступен на всех основных платформах (под винду на ARM не делал, но если надо – соберем).

Редактор полностью бесплатный и с открытым исходным кодом. Пока выпустил бету версии 2.0.




Скачать можно тут


Буду очень рад предложениям/замечаниям и багрепортам (в идеале сразу в Issues, если есть акк на гитхабе).

З.Ы. Для модеров: надеюсь, что разделом не ошибся, если что – извинитесь  :biggrin:

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
Респект за обесцвеченные нули. Не думал обесцветить их и в левой колонке адресов?
Также, не возникала идея добавить киллерфичу - перенос строки на новую в любом месте при нажатии Enter? Ну и добавление отступов Табом и пробелом. Был бы первым таким уникальным хекс-редактром. Я когда-то хотел сделать такой, но пока занят другим.

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2707
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Я пока не дома, запустить не могу. Как он работает с большими файлами (под несколько гигов)? Не глючит?

Оффлайн cl

  • Пользователь
  • Сообщений: 17
    • Просмотр профиля
для ромхакинга это видно, а что здесь тут: для переводов?

Онлайн Sharpnull

  • Пользователь
  • Сообщений: 5616
    • Просмотр профиля
Как он работает с большими файлами (под несколько гигов)? Не глючит?
Плохо в v2.0-beta1. Файл грузится полностью в ОЗУ. На 600 МБ у меня уже медленное переключение между байтами, при открытии 4 ГБ (было доступно около 10 ГБ ОЗУ) расширился файл подкачки на несколько ГБ, я принудительно закрыл программу, повторный запуск начал снова открывать файл, пришлось удалять настройки из реестра.
UPD: Для сравнения, 010 Editor после открытия 17 ГБ работает быстро как с маленьким файлом, занимает ОЗУ около 45 МБ.

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Респект за обесцвеченные нули. Не думал обесцветить их и в левой колонке адресов?
Цвета практически всего настраиваются, как и ширина адресной области. Реквест отдельной настройки цвета нулей в адресной области записал)

Также, не возникала идея добавить киллерфичу - перенос строки на новую в любом месте при нажатии Enter? Ну и добавление отступов Табом и пробелом. Был бы первым таким уникальным хекс-редактром. Я когда-то хотел сделать такой, но пока занят другим.
Звучит непросто с точки зрения реализации. А профит в чем?

Я пока не дома, запустить не могу. Как он работает с большими файлами (под несколько гигов)? Не глючит?
Попробовал на файле в 21 гиг. Сожрал 300 метров оперативки, но ничего тормозить не начало. Поиск или замены будут, разумеется, медленнее, чем для файла в 2Мб.

для ромхакинга это видно, а что здесь тут: для переводов?
Поиск указателей, поддержка нескольких таблиц перевода (в т.ч. для поиска и замены), импорт/экспорт скриптов (с автоматическим исправлением указателей) и редактирование скриптов на месте.

Выглядит круто :thumbup: правда я еще не попробовал. Интересно, есть ли функции:
-выделять текст в редакторе, а то в translhextion выделяются только байты.
-fill with, то бишь заполнение выделенного любым символом, translhextion умеет
-поддерживает ли таблицы, в которых букве соответствует 2 байта
 0_0, я как раз trinea ковыряю, ты делаешь перевод, или просто ради примера скинул?

– Выделение работает синхронно, можно выделять откуда нравится.
– Fill width добавлю, только нужно придумать, как это делать с точки зрения UX.
– Многобайтовые таблицы RTHextion поддерживает
– Trinea попала в примеры из-за того, что чувак с Romhacking.net пожаловался на некорректную работу предыдущего пункта))

Плохо в v2.0-beta1. Файл грузится полностью в ОЗУ. На 600 МБ у меня уже медленное переключение между байтами, при открытии 4 ГБ (было доступно около 10 ГБ ОЗУ) расширился файл подкачки на несколько ГБ, я принудительно закрыл программу, повторный запуск начал снова открывать файл, пришлось удалять настройки из реестра.
UPD: Для сравнения, 010 Editor после открытия 17 ГБ работает быстро как с маленьким файлом, занимает ОЗУ около 45 МБ.

Тут нужны детали. Какая ОС и сколько ОЗУ. Я сейчас спецом открыл кроме вышеупомянутого файла на 21Гб еще один на 3.7 и оперативки съедено всего 509 метров. Но месседж принял, постараюсь оптимизировать работу с большими файлами.

З.Ы. 010 editor у меня сожрал 200Мб только на этот один файл.

Оффлайн lupus

  • Пользователь
  • Сообщений: 3870
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
Ещё не смотрел, но было бы интересно, как это умеет translhextion mod от чифнета:
1. Scan relative с возможностью составления таблицы кодировки по найденному
2. Поиск/скан с интервалом в указанное количество байт
3. Само собой, работа с таблицами 1-2 байта на символ

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Ещё не смотрел, но было бы интересно, как это умеет translhextion mod от чифнета:
1. Scan relative с возможностью составления таблицы кодировки по найденному
2. Поиск/скан с интервалом в указанное количество байт
3. Само собой, работа с таблицами 1-2 байта на символ
1. Умеет.
2. В планах. Буду благодарен, если опишешь, как это должно, по-твоему, выглядеть.
3. Умеет.
« Последнее редактирование: 01 Апрель 2026, 19:37:58 от road_t »

Оффлайн lupus

  • Пользователь
  • Сообщений: 3870
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
1. Умеет.
2. В планах. Буду благодарен, если опишешь, как это должно, по-твоему, выглядеть.
3. Умеет.
На сайте чифнета есть мод translhextion. Он имеет опцию search interval, где выбирается количество байт, которые могут быть между искомыми символами.
Нужно один раз попробовать, наверное.
В ромах для GB, например, я таким образом некоторые строки находил.

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
На сайте чифнета есть мод translhextion. Он имеет опцию search interval, где выбирается количество байт, которые могут быть между искомыми символами.
Нужно один раз попробовать, наверное.
В ромах для GB, например, я таким образом некоторые строки находил.
Не, смысл я понимаю, но сходу не могу придумать, как это выглядеть должно.

Эх, когда-то я неплохо поработал над Translhextion, исправил почти все баги и добавил пару функций... но был молодой и глупый и исходники никуда не загрузил. Они, соответственно, не сохранились(

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
настройки цвета нулей в адресной области
Наверно понятно, што все нули в ряд слева у адреса, не внутренние.

Звучит непросто с точки зрения реализации. А профит в чем?
Ага, непросто. Зато хекс можно привести в человеческий вид. Вот пример:

А вот он же, но только с переходами на новую строку и пробелами:

Сразу виден паттэрн.

исходники никуда не загрузил. Они, соответственно, не сохранились(
Этот редактр прям проклят - Марат вот тоже потерял исходники со своими наработками прямо во время активной разработки.

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Так, я выложил beta 2 с кое-какими апдейтами, включая:
  • настройку цвета нулей в адресной области
  • Функцию 'Fill with' (только щас понял, что забыл переводы, в т.ч. и на русский)
  • Немного поигрался с механизмом загрузки файлов, вроде большие теперь обрабатываются без тормозов

Ага, непросто. Зато хекс можно привести в человеческий вид.
я собирался сделать разбиение на секции с навигацией и цветной подсветкой... но над твоей идеей я подумаю. Отрисовка, особенно на больших файлах может стать лютым геморроем  :wacko:


Этот редактр прям проклят - Марат вот тоже потерял исходники со своими наработками прямо во время активной разработки.
Блин, я пытался чуваку по имени Брайан Бенневиц написать на линкдине, но там вылетает ошибка  0_0

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
настройку цвета нулей в адресной области
Быстро ты, но я лиш спросил о твоих мыслях-идеях - необязательно реализовывать то, што я спросил ;)
Тем более, если идея тебе не нравитса (цвет у нулей адреса по умолчанию не как у нулей хекса).

При первом запуске - малюсенькое окно, но это ладно. При каждом новом запуске окно не на весь экран (Win11, FullHD), приходитса раскрывать на полную - так и задумано? У меня такое странное поведение из всех програм на ПК только у Макса.

Тот массив значений в спойлере, который кидал тебе до этово - сохранил ево в блокноте, открыл этот текстфайл в твоём редактре, потыкал наугад нули и сохранил. Теперь в блокноте вместо значений - иероглифы. Тоже так должно быть? :)

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
цвет у нулей адреса по умолчанию не как у нулей хекса
Я решил поведение стандартное не менять. Думаешь, лучше по дефолту сразу их делать менее контрастными?

При первом запуске - малюсенькое окно, но это ладно. При каждом новом запуске окно не на весь экран (Win11, FullHD), приходитса раскрывать на полную - так и задумано?
О как. Надо на винде проверить, я там еще ни разу не запускал.

У меня такое странное поведение из всех програм на ПК только у Макса.
а вот щас обидно было  :cry:


Тот массив значений в спойлере, который кидал тебе до этово - сохранил ево в блокноте, открыл этот текстфайл в твоём редактре, потыкал наугад нули и сохранил. Теперь в блокноте вместо значений - иероглифы. Тоже так должно быть?
Тут бы поподробнее. В идеале – оригинальный файл и проект, чтобы видеть изменения. Ну и интересно, в какой кодировке он у тебя открывается при запуске (видно в строке состояния).

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
Думаешь, лучше по дефолту сразу их делать менее контрастными?
Думаю, што единообразие всегда хорошо. А то "тут делаю, а тут не делаю" - это странно ;)

а вот щас обидно было
Извини, по другому никак :biggrin:
Теперь мне понятно, што разрабы Макса не сидят на Винде. Они или как ты на Маках, или на Линуксе, поэтому десктопная версия такая корявая.

Тут бы поподробнее
В блокноте Win11 сохраняю как UTF-8. Твой редактр внизу пишет ASCII. При пересохранении ничево не меняетса, а вот если какой-нибудь байт изменить на ноль, то сохранит как UTF-16 LE.

Оффлайн ndivision

  • Пользователь
  • Сообщений: 231
  • Пол: Мужской
    • Просмотр профиля
road_t, Шикарно! Буду разбираться с таким замечательным инструментом. И благо что под не последними версиями macOS - с виду работает нормально.
Благодарю! И буду обязательно следить за развитием проекта.

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
В блокноте Win11 сохраняю как UTF-8. Твой редактр внизу пишет ASCII.
вот если какой-нибудь байт изменить на ноль, то сохранит как UTF-16 LE.
Ну скинь файлы. А то пока звучит, как будто это проблема блокнота, который пытается определить кодировку и не понимает, что это такое ты сделал.

road_t, Шикарно! Буду разбираться с таким замечательным инструментом. И благо что под не последними версиями macOS - с виду работает нормально.
Благодарю! И буду обязательно следить за развитием проекта.
Спасибо, замечания и предложения приветствуются  :)

На системе до каталины не тестил, на монтерее и секвойе норм. Значит и на тахо будет ок.

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
Вот. Учитывая глючность Win11, проблема действительно может быть в Блокноте.

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Win11 – горе в семье  :debile:
Ну, может 12 будет приемлемой.
Но тут дело не в ней, конечно. Блокнот, скорее всего, со времен XP не менялся особо. Он пытается кодировку определить по разным маркерам (если нет BOM). Собственно, RTHextion тоже пытается и тоже с переменным успехом. Реально дело непростое.

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Беларус учит русский, ты так себе это представляешь?

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
Ну ты даёш :thumbup:
Ты там нейросетью кодиш што ли? Или это только набросок?


Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Да я безработный пока  :lol:
Когда кидал скрин, был набросок, сейчас уже как будто работает чуток.

но ты не ответил. Ты это имел в виду? Единственное, что это только переводы строки. Табы и пробелы – совсем сатанизм, очень сложно будет отрисовку делать корректно. Точнее, отдебажить это.

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
Ты это имел в виду?
Да, это. Удобнее для глаз такое разделение, чем сплошное хекс-полотно, да?
Вот глянул, как выглядит только с одним переводом на новую строку:

311608-0

Два перевода явно лучше.

Табы и пробелы
А они уже подходят больше для разбора всяких данных, массивов, структур и т.д., т.е. уже не совсем перевод.
Тот хекс-кусок, который я кидал, он из UMK3 - там указатели на приёмы, на таблицы портретов и т.д.

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Да, это. Удобнее для глаз такое разделение, чем сплошное хекс-полотно, да?
Да, если честно, выглядит рили удобно. Странно, что раньше никто не сделал (ну или я не видел)

А они уже подходят больше для разбора всяких данных, массивов, структур и т.д., т.е. уже не совсем перевод.
У меня пока некоторые проблемы с обработкой кликов, хотя рендерится, вроде, нормально. Попробую внедрить табы, но, скорее всего, это будет-таки следующая версия, надо дотестить эту (помогай  :biggrin:) и зарелизить уже четкую 2.0

Тот хекс-кусок, который я кидал, он из UMK3 - там указатели на приёмы, на таблицы портретов и т.д.
Т.е. моя идея о разделении на секции (что-то вроде того, как это сделано в IDA) должна пригодиться?

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
я безработный пока
Из-за ИИ?

Странно, что раньше никто не сделал
Вот один был близок, но это не свободное нажатие Enter и пробела:

311616-0
311614-1

Название редактра не сохранил и теперь найти не могу.

Попробую внедрить табы
Я их назвал не обдумав. По сути ведь их действие будет неотличимо от нажатия пробела три раза? Поэтому можно только пробелы.

моя идея о разделении на секции (что-то вроде того, как это сделано в IDA) должна пригодиться?

Што за идея?
В Иде самая ужасная вещь - это когда разрыв есть, но не в адресной колонке слева - там адрес просто копируетса -_-
В Гидре не стали так делать.

Оффлайн Chaotix

  • Пользователь
  • Сообщений: 1713
  • Пол: Мужской
    • Просмотр профиля
Про баги (версия 2.0b1)..

Чёрная тема сломана, а белой нету. Подразумевается, что у юзера вся система "белая", только тогда будет выглядеть нормально.

« Последнее редактирование: 03 Апрель 2026, 23:08:08 от Chaotix »

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Chaotix, огромное спасибо за столь подробный репорт, вроде все починил:
1. Фон у двух иконок убрал.
2. Тултипы поправил
3. Иконки (там не чекбоксы) на док-окнах поправил
4. При первом запуске на системе с темной темой, применяется темная тема приложения.

Фичу с настройкой высветления нулей записал, надо подумать, как это лучше сделать.

Ещё было бы удобно, если бы можно было выделять мышкой области и через правый клик раскрашивать их разным цветом. Например, выделил блок, закрасил желтым. И что бы нельзя было редактировать ничего, кроме этого блока, если он выбран. Зачем? В тех случаях, если неизвестны поинтеры, что бы ориентироваться как-то и не сломать ничего. WinHex, кажется, такое умел.
Не критичные фичи, но добавили бы юзабилити.[/spoiler]
Что-то подобное у меня в планах, попробую в следующей версии запилить.

Беларус, немного за...устал, но переносы вроде корректно работают. Еще добавил автоматическое разбиение по символу через контекстное меню или через Edit->Virtually format Жду фидбек)

Качаем 2.0 beta 3
« Последнее редактирование: 06 Апрель 2026, 15:44:26 от road_t »

Оффлайн Chaotix

  • Пользователь
  • Сообщений: 1713
  • Пол: Мужской
    • Просмотр профиля
вроде все починил:
1. Фон у двух иконок убрал.
2. Тултипы поправил
3. Иконки (там не чекбоксы) на док-окнах поправил
4. При первом запуске на системе с темной темой, применяется темная тема приложения.
:thumbup:

Теперь норм. По крайней мере, пока не начинаешь менять темы оформления через настройки (там можно накосячить и сбросить на дефолт потом сложно, только через реестр? Было бы хорошо иметь кнопку "сбросить настройки").

Я еще заметил, что нету кнопки "New" (открыть новую вкладку с пустым файлом). Обычно, в гекс-редакторах (например, в популярном HxD или 010 Editor и других) идёт New, Open, Save. Здесь начинается сразу с Open, Save. Хотелось бы "New", как по-стандарту везде в гекс-редакторах. К такому уже машинальная память, тыкаешь, а кнопки "New" нету. Сделать новый файл можно только через "File" -> "New" в меню. Но, даже когда создаешь новую вкладку, там ничего нельзя писать и нельзя туда ничего скопировать. Это наверное баг, не открывается область редактора. Нужно что бы открывало пустой файл 0 байт ну или создавало его.

Сценарии, когда это было бы полезно: редактируешь большой файл и вырезал небольшой кусок кода (допустим шрифт) в новую вкладку, что бы редактировать уже там. В RTHextion так не получается, потому что кнопки создать новую вкладку нету, а если создать через меню, то Ctrl+V (Edit -> Paste) туда не копирует. ПКМ -> "Paste Hex Values" тоже ничего не вставляет. Как я уже выше написал.

То есть, "New" лишено смысла, открыть новую вкладку можно только перетащив туда пустой файл. Либо я что-то неправильно делаю, но догадаться как открывать новые вкладки не смог.

Идея для фичи:
« Последнее редактирование: 06 Апрель 2026, 07:45:26 от Chaotix »

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Было бы хорошо иметь кнопку "сбросить настройки"
Кнопка-то есть и она сбрасывает стандартные темы к дефолту, но с работа с кастомными мне не нравится, надо починить.

Я еще заметил, что нету кнопки "New" (открыть новую вкладку с пустым файлом). Обычно, в гекс-редакторах (например, в популярном HxD или 010 Editor и других) идёт New, Open, Save. Здесь начинается сразу с Open, Save. Хотелось бы "New", как по-стандарту везде в гекс-редакторах. К такому уже машинальная память, тыкаешь, а кнопки "New" нету. Сделать новый файл можно только через "File" -> "New" в меню. Но, даже когда создаешь новую вкладку, там ничего нельзя писать и нельзя туда ничего скопировать. Это наверное баг, не открывается область редактора. Нужно что бы открывало пустой файл 0 байт ну или создавало его.
Тут немного неочевидно, но это не баг: в правом нижнем углу есть переключатель ВСТАВКА/ЗАМЕНА (ну или кнопка Insert, если она у тебя есть) – нужно переключить в режим INSERT. Я поправлю поведение по умолчанию, чтобы новый файл создавался с режимом вставки. Кнопку добавлю.

Но, наверное, если будет выделение цветом областей кода и закладки (список этих областей, с возможностью давать им имена), то "связанные вкладки" может и не нужны. Тогда если надо, допустим, шрифт, то нажимаешь на закладку "шрифт" и попадаешь в нужную область, где видишь его выделенным нужным цветом.
Да, это будет по-другому реализовано, надеюсь, что удобнее. Но не в 2.0)

И ещё было бы удобно, что бы была кнопка запускать какую-то прогу (ну, как в IDE запускать компилятор). Но, тогда антивирусы могут агрится на редактор.
Например, отредактировал файл, нажал кнопку, кнопка делает exec эмулятора с этим ромом и сразу тестишь отредактированный файл. Ну или запускает компиляцию, мало ли что нужно.

Вот, вроде бы для Beyond Zero Tolerance существует декомпил и там редактируешь не сразу ром, а его кусочки и потом запускаешь компиляцию. Например, вставил текстуру или звук, запускаешь компиляцию прямо из гекс редактора, могло бы пригодится в подобных случаях, экономить немного времени.[/spoiler]
Это интересная история, реализовать несложно, но я не совсем уверен, что это будет просто реализовать корректно для любых запускаемых инструментов.

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Выложил версию RTHextion 2.0

Исправил вроде всё, о чем вы, посоны, сообщили (спасибо вам большое ещё раз).

Относительно третьей беты внес небольшие косметические изменения + добавил возможность скопировать выделение в новую вкладку, а так же, скопировать таблицу из проекта в любую открытую вкладку.

311839-0

Полный список изменений версии 2.0: