154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
|
|
1 | |
Microhex - кроссплатформенный шестнадцатеричный редактор27.08.2013, 14:41. Показов 1263. Ответов 5
Метки нет (Все метки)
Короче, периодически у меня появлялось свободное время, и я писал вот это. Данный выкидыш носит название Microhex, и представляет собой hex-редактор. Написан на Python с использованием PyQt, что позволяет запускаться как на Windows, так и на Linux (где ситуация с графическими hex-редакторами не очень — совсем уж они невеселые). Упор планирую сделать на задачи, связанные с реверс-инженерингом, секьюрити, а также разнообразными копаниями во внутренностях файлов и дисков с не менее разнообразными целями.
Пока что самой интересной фичей является, имхо, возможность манипулировать колонками. Если в большинстве редакторов захардкожено отображение данных в двух колонках — шестнадцатеричные байты и символьный дамп (плюс настройки этих колонок), то здесь можно добавлять сколько угодно колонок с разными параметрами, настраивать их и вообще чувствовать себя вольготно. Велкам. Выглядеть это может, например, вот так: Ограничения на размер файла — вместительность 64-x битного целого (что-то около 18 экзабайт), вне зависимости от разрядности системы. Можно загрузить только кусочек файла, или зафиксировать размер, чтоб запретить операции, которые могут привести к уменьшению или увеличению файла. Отмена/повтор не ограничиваются тем состоянием, в котором документ был в момент последнего сохранения — можно отменить и то, что было сделано до последней записи на диск. Ну, закладки — как же без них. Поиск — пока только шестнадцатеричных значений, к сожалению. Остальной функционал пока что не слишком отличается от того, что есть в других редакторах. Самое интересное, конечно, впереди. В ближайшем будущем планирую избавиться от довольно большого количества багов, стабилизировать и продумать базовый функционал, добавить несколько микроплюшек, усовершенствовать виджет, который показывает данные (он полностью самописный) и взяться за реализацию более серьезного функционала. Это, например, продвинутая система навигации (вперед/назад, поддержка адресации на основе форматов файла, например, секция/смещение для PE, сектор/смещение для дисков); возможно, колонки для редактирования текста (как в текстовых редакторах — с разбивкой на строки, но, конечно, гораздо примитивнее), разбор структуры файла (a'la 010 Editor binary templates), и самое главное — поддержка расширений на Python (должна же быть от его гибкости какая-то польза, а не только тормоза). Естественно, что все это, мягко говоря, не слишком быстро ползает, так как ни питон, ни кьют производительности не добавляют. К тому же это даже не альфа, а что-то вроде индева (баги! баги!). От вас жду мнений о степени велосипедости проекта, интересности, ну и конечно, инфу о найденных ошибках, предложения и прочее. Скачать бинарники и исходники можно на гитхабе (ссылка на репозиторий ниже), а ленивые могут загрузить аттач. Программа установки не требует, но перед запуском советую установить Microsoft Visual C++ 2010 Redistributable Package для x86. Репозиторий проекта: https://github.com/zenwarr/microhex
0
|
27.08.2013, 14:41 | |
Ответы с готовыми решениями:
5
Кроссплатформенный 3D-редактор С# кроссплатформенный ? Кроссплатформенный сокет Кроссплатформенный GUI |
Почетный модератор
|
|
28.08.2013, 03:06 | 2 |
не открывает файлы в 0 байт )
ошибка при попытке открыть файл с опцией Completely read in memory;
---------------------------
Microsoft Visual C++ Runtime Library --------------------------- Assertion failed! Program: ... File: ..\..\..\src\documents\devices.cpp Line: 131 Expression: _cacheBoundary <= _cacheSize For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts (Press Retry to debug the application - JIT must be enabled) --------------------------- Прервать Повтор Пропустить --------------------------- возможна прокрутка до бесконечности; если открыть файл как read-only, выбрать фрагмент и попробовать обнулить его или удалить, потом закрыть файл и попробовать открыть его снова, то будет ошибка: cannot load device with given options: conflict with already loaded device; тормозит при прокрутке win 7 x64 думаю стоит еще повелосипедить
1
|
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
|
|
28.08.2013, 09:42 [ТС] | 3 |
Fixed.
Fixed. Извиняюсь конечно, а вы F2 нажимали? В противном случае мне воспроизвести баг не удалось. Опишите подробнее, что делали, все ли колонки не редактируются? Не совсем понимаю, что вы имеете в виду. Документ можно прокрутить до максимально возможной позиции (0xfffffffffffffffe), как сделано, например, в Hex Editor Neo, и это не баг, а фича) Данный случай Fixed, хотя проблема немного глубже, и возможно, проявится еще, буду работать. Есть такая проблема, да. Проблема в символьных колонках, в ближайшее время обещаю оптимизировать. Спасибо огромное за тест!
0
|
Почетный модератор
|
|
28.08.2013, 11:15 | 4 |
Нет. Редактирование оказывается еще по даблклику по ячейке. Про F2 точно бы не догадался, а до даблклика - как то не совсем интуитивно, получается чтобы отредактировать нужно делать + одно нажатие либо клавиши, либо мыши, не очень удобно.
ок ) Было бы хорошо, но считаю что это не самое критичное, т.к. HEX редакторы обычно не используются для тупого листания туда сюда, обычно требуется функциональный поиск и редактирование. нашел еще баг: при добавлении колонки address bar, отсчет начинается не с текущего смещения в файле, а с 0, стоит прокрутить немного и всё ок, видимо при создании просто не учитывается смещение.
0
|
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
|
|
28.08.2013, 22:55 [ТС] | 5 |
Да, я с вами согласен. Так что добавил опцию "автоматический режим редактирования", включена по умолчанию. Если кому-то (например, мне) не нравится такое поведение, можно отключить.
Fixed.
0
|
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
|
|
01.09.2013, 21:18 [ТС] | 6 |
Обновил, исправив указанные баги и еще несколько найденных. И еще. Я думаю, мне нужно сделать некоторое описание функций, хотя бы в той части, касающейся редактирования данных. Итак. Все данные представлены в виде колонок, которые содержат строки, состоящие из ячеек. При входе в режим редактирования появляется мигающий курсор, а вокруг ячейки рисуется обрамление.
Несколько интересных деталей: Колонка чисел. На скрине - редактирование данных в знаковом формате. Маленький tip — хотя курсор стоит перед знаком, можно сразу вводить число, редактор поймет и оставит знак нетронутым, а курсор перейдет на позицию перед второй цифрой. Ввести знак можно при любом положении курсора. Другой tip — с помощью клавиш Ctrl+Up/Ctrl+Down можно быстро увеличить/уменьшить значение в ячейке, а с помощью Ctrl+Shift+Up/Ctrl+Shift+Down — установить максимальное/минимальное возможное значение для текущего формата данных. Текстовая колонка. Понятно, что не все кодировки представляют все символы одинаковым набором байт. Редактировать такие данные так же, как и всё остальное, было бы неудобно — после ввода символа нужно было бы определять количество байт, им занимаемых, и вручную переводить курсор на новую позицию. Редактор делает это автоматически, а в режиме редактирования клавишами Left/Right можно перемещаться по символам вместо отдельных ячеек. Такое поведение удобно при работе с не-ascii символами в кодировке utf-8, а также композитными символами utf-16. Дальше. В редактор можно вставлять текст, который будет интерпретирован по-разному в зависимости от типа активной колонки. Например, можно быстро вставить в документ текст в любой поддерживаемой кодировке, просто добавив колонку нужного формата и вставив в нее текст — он будет автоматически перекодирован. То же самое работает и для всех остальных типов колонок.
0
|
01.09.2013, 21:18 | |
01.09.2013, 21:18 | |
Помогаю со студенческими работами здесь
6
кроссплатформенный агент Кроссплатформенный вирус Кроссплатформенный GetLastError Кроссплатформенный стиль кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |