HIEW - интерфейс плагинов

Тема в разделе "WASM.RESEARCH", создана пользователем volodya, 1 фев 2005.

  1. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Господа, SEN, наконец-то, сподобился задумать интерфейс плагинов в HIEW. Здесь хотелось бы выслушать ваши мнения и предложения по поводу того, какие API функции предоставлять программисту, как это делать и т.п.

    Автор - SEN - читает этот топ, так что ваши драгоценные мнения ;) не уйдут в пустоту. Как по мне - дык такой интерфейсик бы отнюдь хьюву не помешал бы. Слушаем вас.
     
  2. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    Хочу как в фаре - чтобы не только hiew рулил плагинами, но и сам плагин мог вызывать сервисы hiew и фактически мог бы ими сделать все что угодно (вывести навороченный диалог, порисовать в консоли, перехватить клавишу, поставить в какое-то меню hiew доп. пункт...). Расплывчато конечно...
     
  3. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Расплывчато конечно...



    Угу :)



    Пример, когда подобная функциональность необходима, привести можешь?
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Пакетная обработка файлов, например.

    То есть, как в Maple, есть интерфейс для расширения её функций, а есть интерфейс для управления ей.
     
  5. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Необходимо и достаточно добавлять вызовы командной строки

    на пункты меню\хоткеи. Долой плагины.
     
  6. jekyll

    jekyll New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2003
    Сообщения:
    92
    Адрес:
    Russia
    Hiew меня очень устраивает, особенно 7.01. Если же говорить о плагинах, то я бы хотел, чтобы была возможность по своему отображать данные.
     
  7. sen

    sen New Member

    Публикаций:
    0
    Регистрация:
    29 янв 2005
    Сообщения:
    47
    совсем навороченным plugin-interface конечно не будет но что-то извне делать можно будет. какая информация может потребоваться плагину ? ну имя файла, текущее смещение, размер файла,блок:размер, начало, конец - а что еще ?



    например меня попросили сделать вызов внешней dll, которая бы считала CRC выделенного в hiew блока так как считала нужной (каламбур-с!), сразу понятно что надо передавать той dll.



    может кто-нибудь уже задумывался над этим вопросом _под_конкретную_ задачу, а не абстрактно "вот хорошо бы если бы...".







    насчет
    , и





    это малость не то.

    тут надо чтобы внешний модуль смог пользоваться всем I/O через хиев, а это весьма проблематично, легче отдельный модуль для

    этого нарисовать.
     
  8. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    volodya, sen





    Ну, нерасплывчато можно посмотреть sdk фара как пример, хоть прикладухи разные - идеалогия одинаковая. Кое-что из желаймой функцианальности я перечислил:







    Можно еще добавить доступ во внутренние структуры hiew, какие именно без сорсов судить сложно, но ясно что в недра дизассемблера и UI.



    Если попробовать придумать конкретный пример... Ну.. скажем просчет хэшей выделенного блока: по хоткею или пункту меню, которые я добавил в иницализации плагина срабатывает моя функция, я в ней вызываю сервис hiew для вывода навороченного диалога(какой хэш, как выводить результаты), потом лезу в структуры hiew(ессно безопасным способом, типа вызываю pPlgAPI->fillViewerStateStc(viewStc *pVS)) смарю какой блок выделен, считаю запрашиваемый хэш, вызываю что-то вроде встроенного MessageBox и вывожу результаты в требуемом виде.
     
  9. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Можно еще добавить доступ во внутренние структуры hiew, какие именно без сорсов судить сложно, но ясно что в недра дизассемблера и UI.



    Я тоже придумал конкретный пример.

    Ассемблерный поиск по шаблону в HIEW. Больше так не умеет никто. Так вот, делаем API к этой функции. API возвращает нечто вроде односвязного списка с адресами, где нашла вхождения.



    Я хотел бы видеть API вокруг всего, что в HIEW можно сделать руками. API на поиск, на падч, на дизассемблер региона и т.п.
     
  10. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    Вот пару более-менее коткретных идей. Хотелось бы написать plugin который в состоянии:

    -- imports/exports: что бы поддерживал всякие bound imports etc, добавлял и убирал модули и вукции.

    -- section resizing: что бы мог подвигать секции, добавить, убрать.
     
  11. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    ...инрересен вот какой аспект - какого уровня делать plugin API:

    low: ReadByte(), WriteByte() etc

    high: AddSection(), RemoveSection()



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



    Поэтому предложение: сам родной hiew api должен быть как можно ниже уровнем, но дожен позволять использовать посторонние модули, которые со временем, будут написанны пользователями. То есть, я бы хотел увидеть, скажем, SectionManagement модуль (написанный с hiew api) c помощью которого я бы написал InjectSection plugin который засасывает код из .obj файла.



    В общем, хорошо бы было если hiew api будет базой, на которой построится пирамида plugins.
     
  12. sen

    sen New Member

    Публикаций:
    0
    Регистрация:
    29 янв 2005
    Сообщения:
    47




    это не апи, это как раз те данные которые тебе можно передать чтобы ты с ними что-нибудь сделал :)







    Сложность вот в чем: если плагину надо что-то выводить на экран и что-то просить у пользователя то плагин должен иметь интерфейс к визуализатору хиева а он не совсем простой и слегка запутанный за 14 лет постоянных дописываний и переписываний. Форм экранных как таковых в хиеве нет, чтобы плагину

    спросить три числа надо либо три раза окошко GetString звать либо

    плагин должен аналог командной строки разбирать типа "a=5, b=1234567,

    c=-10"....



    вообщем в 7.10 плагинов не будет а дальше бум думать что с экранным интерфейсом делать.
     
  13. afranij

    afranij New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2005
    Сообщения:
    1
    А если ближе к конкретике, на примере потенциального плагина?



    Вот чего мне всегда в hiew не хватало, так это возможности сохранять выделенный блок, не только как binary, но и в текстовых форматах (массив байтов, слов, двойных слов) с заданием количества элементов в строке. Для этого можно было бы навернуть файл конфигурации шаблонов где описывать группы правил (endian, префиксы типа 0x, постфиксы типа h, символы переноса строк и т.п. чтобы на выходе можно было получать С-массив, asm-массив, pascal массив, данные в виде \x00 и т.п.) с именами по которым их можно выбирать при экспорте данных.



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



    По части интерфейса, если задавать минимальные вопросы - выбор шаблона из списка, задание количества элементов строки, выбор endian - отдельными окнами будет крайне неудобно выбирать.
     
  14. The Svin

    The Svin New Member

    Публикаций:
    0
    Регистрация:
    6 июл 2003
    Сообщения:
    665
    Адрес:
    Russia
    Не надо никаких плагинов.

    SEN - ты лучший фильтр. Продолжай писать для себя, а не для народа, т.е. только для того народа которому нужно тоже что и тебе. А то получится как у Крылова в басне про художника.



    Что нужно так руководство по Hiew для чайников. То что писал Крыс, но ещё подробней и почищенное от глюков.

    После прочтения подобного минимум половина желаний отпадёт. Не надо второго Фара, пожалуйста.
     
  15. je_

    je_ New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    143
    >>Не надо никаких плагинов.

    надо-ж, точно тоже хотел сказать, да убоялся:)



    дабавлять клёвые функи понемногу и фсё.
     
  16. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    > Не надо второго Фара, пожалуйста.



    Точно. Лучше бы HiEW стал наконец-то GUI'вым, пора уходить от наследия DOS.
     
  17. The Svin

    The Svin New Member

    Публикаций:
    0
    Регистрация:
    6 июл 2003
    Сообщения:
    665
    Адрес:
    Russia
    Меня консольный устраивает больше.

    Читать\анилизировать удобней и в полноэкранном режиме намного быстрей перерисовывается.
     
  18. sen

    sen New Member

    Публикаций:
    0
    Регистрация:
    29 янв 2005
    Сообщения:
    47








    для плагина - да, хороший пример







    не совсем понял, какими отдельными окнами неудобно выбирать ?



    можно просто отдать выбор в _одно_ фиксированное меню из N пунктов, а если плагин не ленивый то может строку параметров спросить и разобрать типа: 'elementsPerLine=16 endian=little type=c arrayName=massive file=inc.h'
     
  19. sen

    sen New Member

    Публикаций:
    0
    Регистрация:
    29 янв 2005
    Сообщения:
    47




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

    sen New Member

    Публикаций:
    0
    Регистрация:
    29 янв 2005
    Сообщения:
    47




    наследие DOS - это ограничения по памяти в первую очередь. а GUI будет не 300к как сейчас и функциональности ничуть не добавит. Разница какая - жать мышкой на мелкую иконку и по меню рыскать либо ткнуть одну кнопку (или две - сначала Ф1 )