154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
1

Microhex - кроссплатформенный шестнадцатеричный редактор

27.08.2013, 14:41. Показов 1263. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Короче, периодически у меня появлялось свободное время, и я писал вот это. Данный выкидыш носит название Microhex, и представляет собой hex-редактор. Написан на Python с использованием PyQt, что позволяет запускаться как на Windows, так и на Linux (где ситуация с графическими hex-редакторами не очень — совсем уж они невеселые). Упор планирую сделать на задачи, связанные с реверс-инженерингом, секьюрити, а также разнообразными копаниями во внутренностях файлов и дисков с не менее разнообразными целями.
Microhex - кроссплатформенный шестнадцатеричный редактор

Пока что самой интересной фичей является, имхо, возможность манипулировать колонками. Если в большинстве редакторов захардкожено отображение данных в двух колонках — шестнадцатеричные байты и символьный дамп (плюс настройки этих колонок), то здесь можно добавлять сколько угодно колонок с разными параметрами, настраивать их и вообще чувствовать себя вольготно. Велкам. Выглядеть это может, например, вот так:
Microhex - кроссплатформенный шестнадцатеричный редактор

Ограничения на размер файла — вместительность 64-x битного целого (что-то около 18 экзабайт), вне зависимости от разрядности системы. Можно загрузить только кусочек файла, или зафиксировать размер, чтоб запретить операции, которые могут привести к уменьшению или увеличению файла. Отмена/повтор не ограничиваются тем состоянием, в котором документ был в момент последнего сохранения — можно отменить и то, что было сделано до последней записи на диск. Ну, закладки — как же без них. Поиск — пока только шестнадцатеричных значений, к сожалению.
Остальной функционал пока что не слишком отличается от того, что есть в других редакторах.
Самое интересное, конечно, впереди. В ближайшем будущем планирую избавиться от довольно большого количества багов, стабилизировать и продумать базовый функционал, добавить несколько микроплюшек, усовершенствовать виджет, который показывает данные (он полностью самописный) и взяться за реализацию более серьезного функционала. Это, например, продвинутая система навигации (вперед/назад, поддержка адресации на основе форматов файла, например, секция/смещение для PE, сектор/смещение для дисков); возможно, колонки для редактирования текста (как в текстовых редакторах — с разбивкой на строки, но, конечно, гораздо примитивнее), разбор структуры файла (a'la 010 Editor binary templates), и самое главное — поддержка расширений на Python (должна же быть от его гибкости какая-то польза, а не только тормоза).
Естественно, что все это, мягко говоря, не слишком быстро ползает, так как ни питон, ни кьют производительности не добавляют. К тому же это даже не альфа, а что-то вроде индева (баги! баги!).
От вас жду мнений о степени велосипедости проекта, интересности, ну и конечно, инфу о найденных ошибках, предложения и прочее.

Скачать бинарники и исходники можно на гитхабе (ссылка на репозиторий ниже), а ленивые могут загрузить аттач. Программа установки не требует, но перед запуском советую установить Microsoft Visual C++ 2010 Redistributable Package для x86.

Репозиторий проекта: https://github.com/zenwarr/microhex
Вложения
Тип файла: zip microhex-0.0.3-pre-win32.zip (9.11 Мб, 27 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2013, 14:41
Ответы с готовыми решениями:

Кроссплатформенный 3D-редактор
Решил написать кроссплатформенный 3D редактор с необычной (таких ещё не видел) технологией...

С# кроссплатформенный ?
Кто знает ??

Кроссплатформенный сокет
Добрый день , подскажите есть задача написать Кроссплатформенный клиент-сервер. Но как быть ведь в...

Кроссплатформенный GUI
Добрый вечер, уважаемые пользователи форума. Мне для программы понадобится сделать интерфейс,...

5
Почетный модератор
Эксперт .NET
8721 / 3673 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
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)
---------------------------
Прервать Повтор Пропустить
---------------------------
не получилось отредактировать файл с клавиатуры, хотя опции "Fill selected with zeros" и "Remove selected" работают (файл открывал не как read-only);
возможна прокрутка до бесконечности;
если открыть файл как 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
Цитата Сообщение от NickoTin Посмотреть сообщение
не открывает файлы в 0 байт )
Fixed.
Цитата Сообщение от NickoTin Посмотреть сообщение
ошибка при попытке открыть файл с опцией Completely read in memory;
Fixed.
Цитата Сообщение от NickoTin Посмотреть сообщение
не получилось отредактировать файл с клавиатуры, хотя опции "Fill selected with zeros" и "Remove selected" работают (файл открывал не как read-only);
Извиняюсь конечно, а вы F2 нажимали? В противном случае мне воспроизвести баг не удалось. Опишите подробнее, что делали, все ли колонки не редактируются?
Цитата Сообщение от NickoTin Посмотреть сообщение
возможна прокрутка до бесконечности;
Не совсем понимаю, что вы имеете в виду. Документ можно прокрутить до максимально возможной позиции (0xfffffffffffffffe), как сделано, например, в Hex Editor Neo, и это не баг, а фича)
Цитата Сообщение от NickoTin Посмотреть сообщение
если открыть файл как read-only, выбрать фрагмент и попробовать обнулить его или удалить, потом закрыть файл и попробовать открыть его снова, то будет ошибка: cannot load device with given options: conflict with already loaded device;
Данный случай Fixed, хотя проблема немного глубже, и возможно, проявится еще, буду работать.
Цитата Сообщение от NickoTin Посмотреть сообщение
тормозит при прокрутке
Есть такая проблема, да. Проблема в символьных колонках, в ближайшее время обещаю оптимизировать.

Спасибо огромное за тест!
0
Почетный модератор
Эксперт .NET
8721 / 3673 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
28.08.2013, 11:15 4
Цитата Сообщение от zenw Посмотреть сообщение
Извиняюсь конечно, а вы F2 нажимали
Нет. Редактирование оказывается еще по даблклику по ячейке. Про F2 точно бы не догадался, а до даблклика - как то не совсем интуитивно, получается чтобы отредактировать нужно делать + одно нажатие либо клавиши, либо мыши, не очень удобно.
Цитата Сообщение от zenw Посмотреть сообщение
это не баг, а фича
ок )
Цитата Сообщение от zenw Посмотреть сообщение
Есть такая проблема, да. Проблема в символьных колонках, в ближайшее время обещаю оптимизировать.
Было бы хорошо, но считаю что это не самое критичное, т.к. HEX редакторы обычно не используются для тупого листания туда сюда, обычно требуется функциональный поиск и редактирование.

нашел еще баг: при добавлении колонки address bar, отсчет начинается не с текущего смещения в файле, а с 0, стоит прокрутить немного и всё ок, видимо при создании просто не учитывается смещение.
0
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
28.08.2013, 22:55  [ТС] 5
Цитата Сообщение от NickoTin Посмотреть сообщение
Про F2 точно бы не догадался, а до даблклика - как то не совсем интуитивно, получается чтобы отредактировать нужно делать + одно нажатие либо клавиши, либо мыши, не очень удобно.
Да, я с вами согласен. Так что добавил опцию "автоматический режим редактирования", включена по умолчанию. Если кому-то (например, мне) не нравится такое поведение, можно отключить.
Цитата Сообщение от NickoTin Посмотреть сообщение
нашел еще баг: при добавлении колонки address bar, отсчет начинается не с текущего смещения в файле, а с 0, стоит прокрутить немного и всё ок, видимо при создании просто не учитывается смещение.
Fixed.
0
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
01.09.2013, 21:18  [ТС] 6
Обновил, исправив указанные баги и еще несколько найденных. И еще. Я думаю, мне нужно сделать некоторое описание функций, хотя бы в той части, касающейся редактирования данных. Итак. Все данные представлены в виде колонок, которые содержат строки, состоящие из ячеек. При входе в режим редактирования появляется мигающий курсор, а вокруг ячейки рисуется обрамление.
Название: pscreen3.png
Просмотров: 100

Размер: 9.1 Кб
Несколько интересных деталей:
Колонка чисел.
Название: pscreen4.png
Просмотров: 102

Размер: 12.5 Кб
На скрине - редактирование данных в знаковом формате. Маленький tip — хотя курсор стоит перед знаком, можно сразу вводить число, редактор поймет и оставит знак нетронутым, а курсор перейдет на позицию перед второй цифрой. Ввести знак можно при любом положении курсора.
Другой tip — с помощью клавиш Ctrl+Up/Ctrl+Down можно быстро увеличить/уменьшить значение в ячейке, а с помощью Ctrl+Shift+Up/Ctrl+Shift+Down — установить максимальное/минимальное возможное значение для текущего формата данных.
Текстовая колонка. Понятно, что не все кодировки представляют все символы одинаковым набором байт. Редактировать такие данные так же, как и всё остальное, было бы неудобно — после ввода символа нужно было бы определять количество байт, им занимаемых, и вручную переводить курсор на новую позицию. Редактор делает это автоматически, а в режиме редактирования клавишами Left/Right можно перемещаться по символам вместо отдельных ячеек.
Название: pscreen5.png
Просмотров: 106

Размер: 11.8 Кб
Такое поведение удобно при работе с не-ascii символами в кодировке utf-8, а также композитными символами utf-16.
Дальше. В редактор можно вставлять текст, который будет интерпретирован по-разному в зависимости от типа активной колонки. Например, можно быстро вставить в документ текст в любой поддерживаемой кодировке, просто добавив колонку нужного формата и вставив в нее текст — он будет автоматически перекодирован. То же самое работает и для всех остальных типов колонок.
Вложения
Тип файла: zip microhex.zip (9.13 Мб, 7 просмотров)
0
01.09.2013, 21:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2013, 21:18
Помогаю со студенческими работами здесь

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

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

Кроссплатформенный GetLastError
Подскажите, есть ли в .net core какой нибудь кроссплатформенный вариант получения кода последней...

Кроссплатформенный стиль кода
Всем доброго здравия! Ни когда раньше не писал кроссплатформенные приложения, и даже не знаю как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru