Macro HEX Edit | Продвинутый HEX редактор с мощной макро системой



Реп: (325)
Macro HEX Edit
версия: 2.8.5

Последнее обновление программы в шапке: 30.06.2021

Прикрепленное изображение

Скриншоты
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение


Краткое описание:
Продвинутый HEX редактор с мощной макро системой

Описание:
Программа предназначена для отображения и редактирования файлов любого формата и (почти) любого размера. При использовании редактора с привилегиями суперпользователя, становится возможным просмотр и редактирование системных файлов, устройств, разделов, ... Отображение настраиваемое, возможна группировка по 1-2-4 байта, отображение значений в HEX/DEC/OCT, так же вы можете задать размер самих ячеек. На данный момент поддерживаются кодировки US-ASCII, KOI8-R, KOI8-U, UTF-8, windows-1251, UTF-16, UTF-16LE, UTF-16BE, есть возможность добавлять собственные таблицы. В состав редактора входит интерпретатор, позволяющий исполнять произвольные скрипты, отображать результат в графическом виде или же вносить изменения в файл (а точнее в буфер изменений редактора, те результат работы всегда можно будет откатить). Кроме заготовленных заранее действий вы можете создавать собственные и привязывать их к скриптам. Подробнее и больше о возможностях программы вы можете узнать, ознакомившись с инструкцией.

Свои пожелания/предложения/хотелки пишите в тему.
Если у вас что-то не работает или работает не так, как предполагалось, обязательно пишите в тему/мне в личку, даже если вам кажется, что ошибка ваша.

Инструкции по работе с редактором и макро интерпретатором, можно найти во встроенном в приложении Help (он на русском)

Возможные проблемы и их решение
Ошибка "binary execution failed" после нажатия "Open file" или зависание на стартовом экране (в старых версиях)
В большинстве случаев поможет установка приложения с маркета
Сторонние менеджеры пакетов могут не выставлять флаг исполнения исполняемым файлам (которые находятся в директории библиотек). Если нет возможности установить программу с помощью официального приложения или менеджера пакетов, придется дать атрибуты execute всем исполняемым файлам вручную:
su
chmod +x -R путь_к_директории_с_либами

Более подробная инструкция: Macro HEX Edit (Пост nikita 13 #58592942)

Ошибка "Open directory failed. Permission denied"
Если не удается открыть файл с помощью встроенного файлового менеджера - попробуйте открыть его с помощью внешнего используя функцию "открыть с помощью", иногда это срабатывает.

Универсальный способ - включить в настройках Root mode.




Требуется Android: 4.1 и выше
Русский интерфейс: Нет (но планируется)

Разработчик: First Row

В теме автор приложения, просьба воздерживаться от вареза!

По возможности берите программу с плея.

Скачать на Google Play: Macro HEX Edit (Перед установкой удалите версию, скачанную отсюда)

Скачать:
Версия: 2.8.5 Macro HEX Edit (Пост #107707892)

Прошлые версии
Версия: 2.8.3 Macro HEX Edit (Пост #98921553)
версия: 2.7.6 Macro HEX Edit (Пост #86373034)
версия: 2.7.5 Macro HEX Edit (Пост #85560130)
версия: 2.7.4 Macro HEX Edit (Пост #85040252)
версия: 2.7.3 Macro HEX Edit (Пост #84965729)
версия: 2.7.2 Macro HEX Edit (Пост #83779166)
версия: 2.7.1 Macro HEX Edit (Пост #81239543)
версия: 2.6.8 Macro HEX Edit (Пост #77600445)
версия: 2.6.7 Macro HEX Edit (Пост #76458583)
версия: 2.6.6 Macro HEX Edit (Пост #75369780)
версия: 2.6.5 Macro HEX Edit (Пост #74555550)
версия: 2.6.4 Macro HEX Edit (Пост #74472435)
версия: 2.6.3 Macro HEX Edit (Пост #74219443)
версия: 2.6.2 Macro HEX Edit (Пост #72964915)
версия: 2.6.1 Macro HEX Edit (Пост #72734440)
версия: 2.6.0 Macro HEX Edit (Пост #72249797)
версия: 2.5.8 Macro HEX Edit (Пост #70494043)
версия: 2.5.6 Macro HEX Edit (Пост #68010639)
версия: 2.5.5 Macro HEX Edit (Пост #65799708)
версия: 2.5.4 Macro HEX Edit (Пост #65138180)
версия: 2.5.3 Macro HEX Edit (Пост #64743111)
версия: 2.5.2 Macro HEX Edit (Пост #64743111)
версия: 2.5.1 Macro HEX Edit (Пост #64469397)
версия: 2.5.0 Macro HEX Edit (Пост #64352016)
версия: 2.4.9 Macro HEX Edit (Пост #62855320)
версия: 2.4.8 Macro HEX Edit (Пост #62374607)
версия: 2.4.7 Macro HEX Edit (Пост #60557685)
версия: 2.4.6 Macro HEX Edit (Пост #60522861)
версия: 2.4.5 Macro HEX Edit (Пост #60127427)
версия: 2.4.4 Macro HEX Edit (Пост #59826047)
версия: 2.4.2 Macro HEX Edit (Пост #58029657)
версия: 2.4.1 Macro HEX Edit (Пост #57884031)
версия: 2.4.0 Macro HEX Edit (Пост #57655173)
версия: 2.3.7 Macro HEX Edit (Пост #55901370)
версия: 2.3.6 Macro HEX Edit (Пост #55859848)
версия: 2.3.5 Macro HEX Edit (Пост #55728674)
версия: 2.3.3 Macro HEX Edit (Пост Freedom. #53596501)
версия: 2.2.4 Macro HEX Edit (Пост #46852452)
версия: 2.2.3 Macro HEX Edit (Пост #46646554)
версия: 2.2.2 Macro HEX Edit (Пост #46416578)
версия: 2.2.1 Macro HEX Edit (Пост #46353287)
версия: 2.2.0 Macro HEX Edit (Пост #46231230)
версия: 2.1.9 Macro HEX Edit (Пост #46106164)
версия: 2.1.8 Macro HEX Edit (Пост #46039413)
версия: 2.1.7 Macro HEX Edit (Пост #45975757)
версия: 2.1.6 Macro HEX Edit (Пост #45899170)
версия: 2.1.5 Macro HEX Edit (Пост #45753693)
версия: 2.1.4 Macro HEX Edit (Пост #45724003)
версия: 2.1.3 Macro HEX Edit (Пост #45658216)
версия: 2.1.2 Macro HEX Edit (Пост #45619191)
версия: 2.1.1 Macro HEX Edit (Пост #44227756)
версия: 2.1 Macro HEX Edit (Пост #44073620)
версия: 2.0 Прикрепленный файлhexEdit.apk ( 904.42 КБ )



Неофициальные сборки
Сборки в данном спойлере содержат изменения, внесенные пользователями и читателями темы (переводы и пр.). Сюда же могут добавляться ссылки на APK файлы с маркета, без каких либо изменений, выкладываемые пользователями. Разработчик не отвечает за безопасность и работоспособность сборок, представленных в данном спойлере
Версия: 2.8.0 Build 114 from Google Play, Android 4.3+ (eugeny71)
Версия: 2.7.8 build 107 Macro HEX Editor (eugeny71)
Версия: 2.7.8 Macro HEX Editor (eugeny71)


Модификации


Сообщение отредактировал iMiKED - 17.09.22, 16:00
Причина редактирования: Обновление: модификация 2.8.5 Fixed permission denied



Реп: (325)
* OsitKP,
Значит ошибка только моя, неправильно понял проблему.

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


Думаю, в следующей версии все-же добавлю функцию для форматированного вывода, с третьим параметром, которым задается размерность. Как временное решение проблемы..

Кстати, в продолжение разговора об оптимизации макроса для патчинга.. Если делать разбор, начиная с кодовой секции, можно перебирать не каждый байт, а читать через 2, а то и 4 байта, если есть уверенность, что код не содержит thumb.. а это само по себе значительно ускорит работу, даже без учета сокращения области, в которой нужно искать.

Сообщение отредактировал First Row - 26.12.15, 16:31



Реп: (325)
Версия 2.1.3

В макро добавлены байтовые массивы. Работать с ними можно, как с обычными, а так же используя функции, добавленные специально для байтовых массивов (чтение/запись из файла, побайтовое сравнивание, нативный поиск цепочки байт). Описания новых функций добавлены в инструкцию. Пример использования также можно посмотреть в шапке.

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

Прикрепленный файлhexEdit.apk ( 934.13 КБ )


Сообщение отредактировал First Row - 27.12.15, 02:18



Реп: (10637)
Опять что-то не так. При попытке задать поиск по HEX или HEX temp, 8 байт не ищет в принципе. Семь байт ищет, если выбрать HEX temp.
Кстати, глянул пару редакторов в Маркете, не говоря о ББ-шных, там ввод шаблона для поиска прямой. И это нормально, потому что отображаются-то байты слева направо, а не наоборот. Какой смысл переворачивать мозг и менять порядок? Особенно с учётом того, что поработал на ББ, запустил редактор на Андроиде - и не ищет, хотя делаешь ТЕ ЖЕ действия. :(

Сообщение отредактировал OsitKP - 27.12.15, 18:31



Реп: (325)
* OsitKP,
8 байт действительно не ищет, но у меня работает вплоть до 60 бит (? вместо старшего полубайта). Еще потестирую на разных значениях.
Так же при повторном открытии диалога поиска нужно смотреть на тип искомого значения (сбрасывается на String в случае, если был выбран шаблон. Этот баг поправлю в след. версии).
В любом случае, спасибо за наблюдения.

Кстати, глянул пару редакторов в Маркете, не говоря о ББ-шных, там ввод шаблона для поиска прямой. И это нормально, потому что отображаются то байты слева направо, а не наоборот. Какой смысл переворачивать мозг и менять порядок? Особенно с учётом того, что поработал на ББ, запустил редактор на Андроиде - и не ищет. :(

На данный момент поиск, как я говорил, работает либо с константами, либо со строками. Этот вариант и для шаблонов я считаю правильным, потому что в таком уж виде хранятся константы в машине.. А с последовательностями байт, при необходимости, можно работать в макро.

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

При попытке задать поиск по HEX

А значение положительное? Просто у меня поиск по HEX прекрасно находит 8 байтовую положительную константу. Но с отрицательным значением работать не будет, так как в java доступны лишь signed типы. Пофикшу позже(в любом случае, поиск у меня в нативной либе, однако перевод из строки в число делается все еще в java части)

Сообщение отредактировал First Row - 28.12.15, 13:43



Реп: (325)
Версия 2.1.4

Исправлен поиск 8 байтовых значений(теперь будет искать независимо от знака). Диалог редактирования же все еще работает с 8 байтовыми signed значениями, это поправлю позже.

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

Функции чтения/записи приведены к единому виду принимаемых параметров и названий. Первым параметром переменная куда/откуда читать, далее адрес и count. Названия этих функций теперь начинаются с read/write, например setVal теперь именуется writeVal

Примеры использования новых функций добавлены в шапку. Соответствующие разделы отредактированы.

Прикрепленный файлhexEdit.apk ( 935.07 КБ )


Сообщение отредактировал First Row - 29.12.15, 16:19



Реп: (10637)
First Row @ 29.12.2015, 18:13 *
Версия 2.1.4

То-ли я что-то не так задаю, но 8-байтный поиск так и не работает. Если в шаблоне поиска задать 7 байт (указав размерность 8), работает... но 7 байт. То же с записью. Макрос матерится на строку writeVal(0xE8BD87F0E3A00001,c-1,8), но съедает writeVal(0xBD87F0E3A00001,c-1,8), записывая при этом 8-ой байт двумя нулями.
И да, своей цели сейчас добиваюсь без вайлдкардов практически мгновенно. Плохо одно: открывается окно макроса, и пойди догадайся, закончил он работать или ещё нет. Понятно, можно вывести простенький принт, но, имхо, удобнее было бы вываливаться сразу в редактор для просмотра изменений или запуска другого макроса.

Спасибо за работу над редактором!

Сообщение отредактировал OsitKP - 30.12.15, 13:54



Реп: (325)
* OsitKP,
В интерпретаторе, как я писал, signed переменные, а значение "writeVal(0xE8BD87F0E3A00001,c-1,8)" пытаетесь передать отрицательное. Вернее, функция перевода строки в число воспринимает-то его как положительное и возникает ошибка переполнения.. Тут уж ограничения среды, храните значения, например, в двух переменных.. или, если нужно записать последовательность без действий и т.д. - запихните в байтовый массив, и пишите его..

но съедает writeVal(0xBD87F0E3A00001,c-1,8), записывая при этом 8-ой байт двумя нулями.

А здесь все в порядке.. значение ведь меньше 0x7fffffffffffffff

Насчет поиска по шаблону - да.. нашел у себя ошибку, маска формируется "не до конца". Фикс войдет в ближайшее обновление. Пока что можете вводить значение, указывая незначащие нули.. По поводу записи восьмибайтовых в диалоге редактирования - фикс также войдет в ближайшее обновление (до сих пор он работал с signed long'ом, потому такие проблемы).

Понятно, можно вывести простенький принт, но, имхо, удобнее было бы вываливаться сразу в редактор для просмотра изменений или запуска другого макроса.

Если вам не нужно смотреть выхлоп - используйте Macro action, для этого фактически он и нужен.

Сообщение отредактировал First Row - 30.12.15, 14:00



Реп: (10637)
First Row @ 30.12.2015, 14:58 *
Если уверены, что ошибка не ваша, интересно взглянуть на скрины "проблемного места" с моего и другого редактора

Можно запустить (или проверить на ошибки мой скрипт). Подопытный файл приложен.

Сейчас проверю на телефоне (делал в эмуляторе). Боюсь, эмуль мог напортачить.
P.S. Да это была проблема эмулятора, на теле всё работает прекрасно (свой пост я подправил, чтобы народ в заблуждение не вводить. :blush: )

Прикрепленные файлы

Прикрепленный файлsample.7z ( 273.14 КБ )


Сообщение отредактировал OsitKP - 30.12.15, 13:56



Реп: (325)
P.S. Да это была проблема эмулятора, на теле всё работает прекрасно (свой пост я подправил, чтобы народ в заблуждение не вводить. :blush: )

Понял. В любом случае, спасибо, что отписываетесь о найденных ошибках :)

Сообщение отредактировал First Row - 30.12.15, 14:01



Реп: (10637)
First Row @ 30.12.2015, 16:55 *
например вызывать select по тому адресу

Проблема локализована. А переход по адресу есть в редакторе? Что-то я не нашёл.



Реп: (325)
А переход по адресу есть в редакторе? Что-то я не нашёл.

"select start, stop" - Выделить в редакторе область от start до end

Вместе с выделением происходит и переход(как при поиске)



Реп: (10637)
First Row @ 30.12.2015, 17:00 *
"select start, stop" - Выделить в редакторе область от start до end

Это, я понял, команды макроса. А именно в меню редактора есть?
И ещё хотелка. Очень неудобно, что не сохраняется оригинал файла. Может, опционально добавить?



Реп: (325)
А именно в меню редактора есть?

Всмысле, переход по адресу? Конечно, File structure диалог. Создаете метку и вперед.. можно и с косвенной адресацией и тд.

И ещё хотелка. Очень неудобно, что не сохраняется оригинал файла. Может, опционально добавить?

Думаю, добавлю такую возможность в след. версиях.



Реп: (325)
Версия 2.1.5

Добавлена возможность ввода/поиска HEX фрагментов (не констант). Упразднен пункт HEX template, теперь шаблоны можно использовать в HEX Constant и HEX Fragment. При редактировании можно вводить фрагмент любой длины, при поиске ограничение 8 байт (сделано с целью оптимизации и ускорения поиска).

В диалоге редактирования теперь можно вводить 8 байтовые отрицательные значения

Небольшие фиксы в новых функциях чтения/записи string (в прошлой версии не учитывалось, что кодировка может быть двухбайтовой). Так же добавлена функция inputStr для ввода строк.

Прикрепленный файлhexEdit.apk ( 936.77 КБ )


Сообщение отредактировал First Row - 30.12.15, 17:25



Реп: (10637)
First Row @ 30.12.2015, 20:07 *
Версия 2.1.5

Пока проверить не могу, но большущее спасибо за бесплатную работу над таким качественным продуктом!
С Новым Годом, и Наиулучших пожеланий!!!
По тестам отпишусь позже.
Здорово, что есть люди, не всегда ставящие во главу угла наживу. Возможно, я буду первый, кто купит готовый продукт.



Реп: (325)
* OsitKP,
Спасибо. Всегда приятно услышать, что работа ценится, а ее результаты кому-то полезны.
С наступающим всех пользователей и читателей темы :)



Реп: (10637)
Уж, на что я не кодер, не ясно, как, люди не понимают своего счастья. На WM6 и то было больше приложений для hex-редактирования. А с такими возможностями, альтернативы просто нет. Да здравствуют русские программеры (которые потом утекают за рубеж)!
Happy Nu Yor!!! Best wishes! And let the dreams come true!!! (раз уж языки программирования априори английские).

Сообщение отредактировал OsitKP - 31.12.15, 09:57



Реп: (10637)
Странно. Версия 2.1.5 работает точно так же, как и 2.1.4. 8-байтные последовательности задать нельзя, ошибка.
Может, я что-то не так делаю? Ввожу константу для поиска, поиск работает, меняю на фрагмент, пишет, не найдено...
И никак не могу создать макро действие. И совсем не понятно, откуда его вызывать. Или из меню Добавить? Тогда что это, что макрос остаётся окно поверх редактора. Т.е. для запуска нужно несколько раз ткнуть в экран, и после отработки скрипта сделать то же самое. Очень неудобно.

Сообщение отредактировал OsitKP - 31.12.15, 11:55



Реп: (325)
* OsitKP,
Фрагмент, в отличие от константы, вводится "прямо". Также для фрагментов не нужна размерность, те в отличие от константы можно искать или редактировать и 3 или 5 байтовые фрагменты(лишь бы укладывалось в 8 байт).
Ошибки Uncorrect value в версии 2.1.5 не будет по определению, ни в поиске ни в редактировании, т.к. дело происходит уже не в java.

Насчет быстрого запуска макросов: Macro actions диалог вызывается с панели редактирования. Следующая кнопка после "карандаша". Создаете действие, пишите макрос (или сразу называете действие именем макроса) и все.



Реп: (325)
Версия 2.1.6

Множество доработок в макро интерпретаторе. Поддержка бесконечного кол-ва вложенностей скобок/индексов массивов и тд. Добавлены циклы с постусловием(подробнее в инструкции в соответствующем разделе). Диалог результата теперь меняет цвет в зависимости от выбранной темы.

В интерпретаторе добавлены константы false и true. Теперь функции сравнивания строк/байтовых массивов возвращают именно эти значения(0 и -1 соответственно). В коде рекомендуется использовать именно ключевые слова true/false, на случай дальнейшего изменения этих значений(и для красоты оформления).

Добавлена возможность сохранения оригинального файла при сохранении. При сохранении большого файла может потребоваться некоторое время на его копирование.

UPD: добавлена поддержка рекурсий в макро интерпретаторе.

Прикрепленный файлhexEdit.apk ( 940.13 КБ )


Сообщение отредактировал First Row - 06.01.16, 00:41


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 29.03.24, 15:48