hex-редактор, консольный, подобный vim, с поддержкой скриптов

Тема в разделе "WASM.PROJECTS", создана пользователем XVilka, 9 июл 2011.

  1. XVilka

    XVilka New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2010
    Сообщения:
    24
    Адрес:
    Moscow
    Много я разных попробовал шестнадцатеричных редакторов, и консольных, и графических. Ни один меня не устроил. Тогда я решил, возьму bvi и допилю его под свои нужды (bvi - потому что я предпочитаю vim) Ну, а для реверса, да и для разных других плюшек, нужна тотальная скриптизация. Думал добавить python, но он достаточно громоздко прикручивается. Тогда взял lua, и прикрутил.

    Отличия от основной ветки bvi:
    - Добавлена поддержка цветовых схем
    - Добавлена команда :map для установки горячих клавиш
    - Добавлены команды :lua и :run для запуска lua
    - Функции для доступа к внутренним функциям bvi из lua доступны в модуле bvi. (например :lua bvi.exec("set color1=7"))
    - Поддержка чексумм и хешей
    - Поддержка работы с блоками (распаковка, шифрование, etc)
    - Поддержка плагинов в виде разделяемых *.so библиотек

    Планируется:
    - Поддержка распознавания сигнатур, нечеткий поиск
    - Поддержка поиска структур данных, обьявленных с C-синтаксисе
    - GUI - mode (как gVim, например)

    Смотреть здесь https://gitorious.org/bvi/bvi или на Гитхабе https://github.com/XVilka/bvim

    Надеюсь, кому пригодиться, или придется по душе.

    Программа пока в активной разработке, поэтому обратная связь и патчи приветствуются.

    Скриншоты:
    http://rghost.net/29618841.view
    http://rghost.net/29618991.view
    http://rghost.net/29619141.view
     
  2. XVilka

    XVilka New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2010
    Сообщения:
    24
    Адрес:
    Moscow
    В ветке refactor вы можете найти последнюю development версию, и попробовать все новые возможности:
    - работа с блоками (неограниченное количество, подсветка)
    - поддержка различных хешей, чексумм (универсальный CRC алгоритм пока еще в работе, но скоро будет закоммичен)
    - Lua REPL по Ctrl-R
    - добавление своих команд из lua скриптов
    - история команд

    Процесс рефакторинга завершен на 70%. После завершения рефакторинга будет добавлена многооконность/мультитабовость и поддержка версионирования файлов/вечный undo/redo
     
  3. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    имхо, луа тут не очень подходит. почему: нет битовых операций, бардак с типами (числа могут быть или флотами, или инт32), нет структур, недостаточно разделяются модули. и очень неприятно, что нет именованных констант.
    потому, пока вы не зашли сильно далеко, предложу приостановиться и немного обсудить выбор скриптера
     
  4. XVilka

    XVilka New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2010
    Сообщения:
    24
    Адрес:
    Moscow
    хм. именнованные константы я импортирую напрямую, а вот отсутсвие структур - да, это значимый недостаток. Есть у меня желание еще python прикрутить. Уж он-то подходит идеально, как мне кажется.
     
  5. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    XVilka
    питон громоздок, кроме того у него те же недостатки для этой цели, что и у луа, кроме наличия битовых операций.
    например, вам бы неплохо иметь типизацию. чтоб, например, была разница между байтом и дсловом. чтоб не проверять это постоянно вручную или не перепутать случайно.
    кроме того, опять же, константы. вы, я так понял, вместо констант счас используете переменные. это все хорошо, пока вы по невнимательности гдето не присвоете такой "константе" другое значение.

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

    XVilka New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2010
    Сообщения:
    24
    Адрес:
    Moscow
    qqwe: хм. Тогда какие еще могут быть варианты?
     
  7. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    XVilka
    это вы предлагайте из того что вам нравится. то, что нравится мне есть смвсл рассматривать только если то, что нравится вам не подойдет. иначе будет сильно много споров на пустом месте
     
  8. XVilka

    XVilka New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2010
    Сообщения:
    24
    Адрес:
    Moscow
    Да мне, по-большому счету все равно какой. Если не C/C++, не Питон и не Луа - я остальных не знаю (в смысле не умею программировать).
     
  9. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    впрочем, могу посоветовать вам такое. типизация очень строгая, модуля имеют интерфейсы (и могут поставляться прекомпилированными), есть битовые, структуры с функциями, константы и много еще чего. уже есть много модулей и сервисов. ну и кроме того, это один из самых бвстрых и нетребовательных интерпретаторов. жит и сорслевел отладчик с просмотром переменных прилагается.
    если заинтересуетесь, то как встраивать и добавлять свои модуля, в том числе и на С(++) я вам покажу. (язык С образный с расширениями. больше всего похож на го).
     
  10. XVilka

    XVilka New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2010
    Сообщения:
    24
    Адрес:
    Moscow
    Как у него с распространненностью? Мне его в сорцах, неверное с собой таскать? Вообще, нормально. Эдакий гибрид Си, питона и паскаля.
     
  11. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    а? готовые порты есть на вынь (влючая се), линь (и прочие юниксы, включая опенмоко), порт на андр появился недавно, но имхо, они там перемудрили. если захотите еще, то портировать его просто. анси С, и буквально несколько зависимостей от оси. ну может, еще дрова его кое где подправить.

    впрочем, вам не надо его распространенность, поскольку вы его себе вкомпилируете. весь комплект, включая сетку, жит и гуй (правда, исключая фритайп) у меня получалось скомпилировать в ~700 кб. зачем вам он отдельно? а вот дерево модулей задавайте отдельное и правьте как хотите.

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

    скорей алефа и оберона. питона тогда еще и в проекте не было. в 97 году уже была 2я версия.
     
  12. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    хм, если вам нравится вим, то на этот форк, может, будет интересно глянуть
     
  13. XVilka

    XVilka New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2010
    Сообщения:
    24
    Адрес:
    Moscow
    Нашел кстати, как добавить в lua битовые операции, типизированные числовые переменные, константы и поддержку восьмеричных и двоичных чисел.
     
  14. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    XVilka
    видел я этот модуль. но он немного уже запоздал. кроме того, он все ревно не обеспечивает проверки типов на процедурах и прочем. те, я не против ни луа, ни питона, они прекрасны на своем месте, но.
    впрочем, проект ваш - делайте как знаете

    на всякий случай, про разработку модулей для лимбо на С: часть 1, часть 2.
    хотя, имхо, в первой он слегонца усложнил. там просто пишется заголовок интерфейса на лимбо, запускается компилятор со спец ключами и он генерирует шаблоны на С. остается только дописать функционал.
    зато 2я оч полезна. как мучить привязки к гц надо знать и в луа. луа гц тоже может случайно высвободить дату если долго ее в С части держать.
     
  15. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    По поводу питона - его можно заставить стать типизированным в разных частях, переопределяя словари модулей и функций своей реализацией словаря, с подмененным методом __setitem__, проверяющим/приводящим тип устанавливаемого значения. Инты тоже можно заставить стать более определенными, реализовав предыдущую подмену так, чтоб она кастила родные питон-инты (возникающие в виде литералов) к нужному виду инта.
     
  16. XVilka

    XVilka New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2010
    Сообщения:
    24
    Адрес:
    Moscow
    Закомиттил я поддержку lua с битовыми операциями
     
  17. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    На iOS iphone/ipad можешь портировать? Там точно ХЕКС редактора нету =((
     
  18. SEC70R_VA

    SEC70R_VA New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2011
    Сообщения:
    78
    persicum, Стив умер, и ждёт незавидная участь огрызки :dntknw:
     
  19. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    persicum
    А зачем он нужен, если им там редактировать во-первых, нечего, а во-вторых, незачем? Это же устройство исключительно развлекательно-контентопотребительное.
     
  20. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Кстати, мне тут пришла АХРЕНИТЕЛЬНАЯ идея. Все подумают, что я запивал "Хеннеси" барбитураты и меня злобно торкнуло, но я всё же изложу: многопользовательский интерактивный online-дизассемблер. Шоб було как IDA, только через веб-морду. Только написать не просите :)