Форум программистов, компьютерный форум, киберфорум
Бета-тестирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168

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

27.08.2013, 14:41. Показов 1504. Ответов 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
Вложения
Тип файла: zip microhex-0.0.3-pre-win32.zip (9.11 Мб, 27 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.08.2013, 14:41
Ответы с готовыми решениями:

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

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

Кроссплатформенный сокет
Добрый день , подскажите есть задача написать Кроссплатформенный клиент-сервер. Но как быть ведь в Linux <sys/socket.h> а в windows...

5
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
28.08.2013, 03:06
не открывает файлы в 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  [ТС]
Цитата Сообщение от 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
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
28.08.2013, 11:15
Цитата Сообщение от zenw Посмотреть сообщение
Извиняюсь конечно, а вы F2 нажимали
Нет. Редактирование оказывается еще по даблклику по ячейке. Про F2 точно бы не догадался, а до даблклика - как то не совсем интуитивно, получается чтобы отредактировать нужно делать + одно нажатие либо клавиши, либо мыши, не очень удобно.
Цитата Сообщение от zenw Посмотреть сообщение
это не баг, а фича
ок )
Цитата Сообщение от zenw Посмотреть сообщение
Есть такая проблема, да. Проблема в символьных колонках, в ближайшее время обещаю оптимизировать.
Было бы хорошо, но считаю что это не самое критичное, т.к. HEX редакторы обычно не используются для тупого листания туда сюда, обычно требуется функциональный поиск и редактирование.

нашел еще баг: при добавлении колонки address bar, отсчет начинается не с текущего смещения в файле, а с 0, стоит прокрутить немного и всё ок, видимо при создании просто не учитывается смещение.
0
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
28.08.2013, 22:55  [ТС]
Цитата Сообщение от NickoTin Посмотреть сообщение
Про F2 точно бы не догадался, а до даблклика - как то не совсем интуитивно, получается чтобы отредактировать нужно делать + одно нажатие либо клавиши, либо мыши, не очень удобно.
Да, я с вами согласен. Так что добавил опцию "автоматический режим редактирования", включена по умолчанию. Если кому-то (например, мне) не нравится такое поведение, можно отключить.
Цитата Сообщение от NickoTin Посмотреть сообщение
нашел еще баг: при добавлении колонки address bar, отсчет начинается не с текущего смещения в файле, а с 0, стоит прокрутить немного и всё ок, видимо при создании просто не учитывается смещение.
Fixed.
0
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
01.09.2013, 21:18  [ТС]
Обновил, исправив указанные баги и еще несколько найденных. И еще. Я думаю, мне нужно сделать некоторое описание функций, хотя бы в той части, касающейся редактирования данных. Итак. Все данные представлены в виде колонок, которые содержат строки, состоящие из ячеек. При входе в режим редактирования появляется мигающий курсор, а вокруг ячейки рисуется обрамление.
Название: 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.09.2013, 21:18
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru