PowerMan v0.4 (Notepad++ plugin)

Тема в разделе "WASM.SOURCES & 2LZ", создана пользователем HESH, 3 янв 2023.

  1. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Powerman - это плагин для Notepad++, который является связующим звеном между 3мя утилитами, часто использующимися низкоуровневыми программистами: Notepad++, OllyDbg, ResEditor. С его помощью Notepad++ превращается в небольшую среду разработки MASM32, которая среди прочего позволяет компилировать проекты одним нажатием клавиши (F6) без необходимости использования .bat-файлов.

    Для удобства основной функционал плагина представлен в виде отдельного ToolBar'a.

    [​IMG]

    PowerMan ToolBar позволяет:

    - управлять рабочим проектом
    - осуществлять быстрый доступ к используемому файлу ресурсов посредствам ResEditor
    - изменять глобальные настройки плагина
    - компилировать исходный проект

    Дополнительный функционал плагина доступен через основное меню, которое находится в меню Плагины(Plugins)->Powerman.

    [​IMG]

    PowerMan Menu позволяет:

    - на основе шаблона создавать новый проект.
    - вставлять в проект исходный код функций (в том числе и оконных) с использованием высокоуровнего синтаксиса MASM
    - генерировать и объявлять уникальные глобальные идентификаторы (GUID)
    - задавать файл справки (например, справочник API-функций) и при необходимости быстро (Ctrl+Alt+H) обращаться к этому файлу-справочнику.
    - объявлять данные целыми файлами (в виде единого массива байт).
    - подсчитывать контрольные суммы выбранных файлов (пока что CRC32+MD5).
    - кодировать/декодировать файлы при помощи Base64.
    - подсчитывать контрольные суммы выбранных в NPP участков текста (пока что CRC32+MD5).
    - кодировать/декодировать выбранные в NPP участки текста при помощи Base64.

    Установка:

    Для того чтобы установить плагин необходимо сделать следующее:
    1. Скачать и установить Notepad++
    2. Скопировать файл PowerMan.dll в папку %Notepad++%\Plugins
    3. Запустить notepad++.exe

    Первый запуск:

    1. В окне настроек (кнопка Compile options на ToolBar'е) указать расположение основных директорий пакета MASM (кнопка MASM CFG)
    2. При необходимости использования опции AfterCompileOption:LoadIntoDebugger, указать расположение основного исполняемого файла отладчика OllyDbg в разделе Debugger Path.
    3. При необходимости быстрого доступа к ресурсам проекта в разделе Resource Editior указать расположение исполняемого файла ResEditor'а
    4. В разделе After compile option указать желаемое действие, которое будет выполняться после того, как проект будет успешно скомпилирован
    5. Указать рабочий проект и его параметры (кнопка Open project или F4)

    Т.к. на момент опубликования сайт, с которого можно было скачать ResEditor был недоступен, прикрепляю к сообжению архив с этим софтом 1 и 2 версии. Notepad++ последней версии можно скачать с официального сайта - https://notepad-plus-plus.org/. OllyDbg можно скачать здесь.

    P.S.: Конструктивная критика, различного рода пожелания и предложения, в т.ч. по расширению функционала приветствуются.


    Предыдущая тема находится здесь.



     

    Вложения:

    Последнее редактирование: 6 янв 2023
  2. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    А поддержку 64 битных ассемблеров начиная, я думаю, сначала, хотя бы с MASM64 когда примерно ждать? Много там работы?
     
  3. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Я на этот вопрос уже отвечал здесь, но пожалуй повторюсь.

    mak сказал(а):
    с пакетом masm64 нормальная интеграция? Плагин под обе разрядности?

    Постараюсь ответить на 2 вопроса за раз. Разработан плагин на 32м MASMе под 32й MASM. Почему так? Потому что перечень задач, на которые был ориентирован плагин не включал в себя задачи, связанные с использованием 4Gb+ оперативки. Это разработчикам игр разрадность имеет большое значение. Для изучения 64й архитектуры, конвенций вызова может и можно было бы это реализовать, но, как по мне, на текущем этапе разработки у меня есть гораздо более приоритетные идеи и задачи, нежели то, что я описал ранее. Причем они требуют очень большой отдачи. Возможно, я где-то ошибаюсь - поправляйте. Вопрос с разрядностью самого NPP пока открыт. Если 64я версия NPP плагин не держит - значит пока что так. В будущих версиях буду выправлять.
     
  4. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    458
    просьба поправить рисунки.. -
    upload_2023-1-3_9-43-34.png
     
  5. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    У меня всё нормально отображается..

    [​IMG]
     
  6. texaciri

    texaciri Member

    Публикаций:
    0
    Регистрация:
    27 янв 2018
    Сообщения:
    60
    HESH, потому что ты залогинен на кряклабе. вставляй ссылки нормально на изображения)
    img.png
     
    HESH и alex_dz нравится это.
  7. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Благодарю за подсказку. Поправил.
     
  8. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Работа над плагином продолжется, поэтому мне хотелось бы услышать ваше мнение: какой из языков программирования вы хотели бы видеть в будущих версиях PowerMan'a в качестве скриптового?
     
  9. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    603
    HESH, Lua самый простой. Ненавижу клятый питухон! :skull:
     
  10. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Я тоже его не очень люблю. Вообще, изначально, я рассматривал 3 потенциальных варианта: Batch, JavaScript и VBScript. LUA язык насколько я знаю очень любят игроделы, но не системщики.
     
  11. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Если учесть, что np++ работает только на Венде, то JScript/VBScript, доступные на всех вендовых системах через IActiveScript* интерфейсы, будут, наверное, самым логичным вариантом. На 8.1 и выше еще добавили Чакру (новый JS-движок - chakra.dll), но таким образом можно обидеть ретроградов. Есть куча сравнительно легковесных движков JS: типа Duktape, QuickJS и тд, это уже отдельные библиотеки с 200-700кб дополнительного кода, но они будут по-удобнее, чем через IActiveScript хостить старый движок IE8 (там многих новомодных вещей нет).
     
  12. ryuk

    ryuk Member

    Публикаций:
    0
    Регистрация:
    23 май 2020
    Сообщения:
    8
    Не знал что чакра доступна в качестве дллки
    Амси на нее не распространяется, верно?)
     
  13. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Я не тестил, но вроде как нет. Более того, апи из чакра.длл куда удобнее и проще, чем IActiveScript* интерфейсы, чем то похоже на Lua и Duktape. Но чакра не умеет в создание COM-объектов и IDispatch автоматом не понимает, в отличии от JScript/VBScript.
     
  14. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Абсолютно верно. Логика еще такова, что если нет оригинальной идеи для парсера - то и городить огород незачем. Всё уже давно написано.

    Начиная с 8й системы поделки MS меня очень сильно разочаровывают. С чакрой я ещё не сталкивался, но имеется такое подозрение, что менять шило на мыло - как раз этот случай.

    Цеплять библиотеки незачем. Тот функционал, который заложен в них, я абсолютно спокойно напишу на асме и это будет весить считанные килобайты.

    Движок IE8 хостить абсолютно незачем, да и одним IActiveScript всё не ограничится. Но, в целом, ты мыслишь в правильном направлении.

    Чакра не подхватывает динамический IDispatch ??? o.O Вот это наверное то, о чём я писал выше, про поделки от MS начиная с Win8.
     
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Нет, там надо объекты байндить руками, можно автоматический генератор врапперов написать, но в базе нет этого функционала. Но нужно понимать, что Чакра планировался, как движок для Эджа, а не для wscript/cscript, так что там автоматическая поддержка IDispatch никак не нужна.

    JScript из IActiveScript интерфейсов - это и есть движок уровня IE8, если мне память не изменяет, я его имел ввиду.
     
  16. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Движок IE наследует функционал движка JScript. Поэтому используя непосредственно двиг JS - IE идёт лесом.

    Вот еще один из интересных вопросов. Пока что, плагин в моих глазах выглядит довольно топорно, поэтому я и задумался заскриптовать плагин и сам NPP в перспективе. Опция шаблонной генерации кода в плагине реализована на основе собственного форматного движка. В ближайших версиях плагина я хотел бы реализовать возможность шаблонной генерации кода с возможностью предоставления пользователю права выбора нужного шаблона. В этой связи мне пока что не совсем понятно, что было бы практичнее: шаблонирование на основе форматного или скриптового движка.
    --- Сообщение объединено, 19 янв 2023 ---
    Ситуация с IE вот какая:

    Код (ASM):
    1. CLSID_InternetExplorer GUID {00002DF01h, 00000h, 00000h, {0C0h, 000h, 000h, 000h, 000h, 000h, 000h, 046h}}
    2.  
    3. InternetExplorer struct
    4.  
    5.    _IWebBrowser2 IWebBrowser2 <>
    6.    _IWebBrowserApp IWebBrowserApp <>
    7.    _DWebBrowserEvents2 DWebBrowserEvents2 <>
    8.    _DWebBrowserEvents DWebBrowserEvents <>
    9.  
    10.  
    11. InternetExplorer ends
    Наследует
    Код (ASM):
    1.  
    2. CLSID_HTMLDocument GUID {025336920h, 003F9h, 011CFh, {08Fh, 0D0h, 000h, 0AAh, 000h, 068h, 06Fh, 013h}}
    3.  
    4. HTMLDocument struct
    5.  
    6.    _DispHTMLDocument DispHTMLDocument <>
    7.    _HTMLDocumentEvents HTMLDocumentEvents <>
    8.    _HTMLDocumentEvents2 HTMLDocumentEvents2 <>
    9.    _HTMLDocumentEvents3 HTMLDocumentEvents3 <>
    10.    _HTMLDocumentEvents4 HTMLDocumentEvents4 <>
    11.    _IHTMLDocument2 IHTMLDocument2 <>
    12.    _IHTMLDocument3 IHTMLDocument3 <>
    13.    _IHTMLDocument4 IHTMLDocument4 <>
    14.    _IHTMLDocument5 IHTMLDocument5 <>
    15.    _IHTMLDocument6 IHTMLDocument6 <>
    16.    _IHTMLDocument7 IHTMLDocument7 <>
    17.    _IHTMLDocument8 IHTMLDocument8 <>
    18.    _IHTMLDOMNode IHTMLDOMNode <>
    19.    _IHTMLDOMNode2 IHTMLDOMNode2 <>
    20.    _IHTMLDOMNode3 IHTMLDOMNode3 <>
    21.    _IDocumentSelector IDocumentSelector <>
    22.    _IDocumentTraversal IDocumentTraversal <>
    23.    _IHTMLDOMConstructor IHTMLDOMConstructor <>
    24.    _IDocumentEvent IDocumentEvent <>
    25.    _IDocumentRange IDocumentRange <>
    26.    _IEventTarget IEventTarget <>
    27.    _ISVGDocument ISVGDocument <>
    28.  
    29.  
    30. HTMLDocument ends
    Который в свою очередь подгружает JS движок.
     
  17. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Я имею ввиду, что движок JScript соответствует JS времени и стандартам IE8, какие-то современные вещи, которые любая "веб-макака" (с) ожидает, что существуют всегда, может либо не быть (типа каких-то методов на Array и Object прототипах) - их можно заполифилить, либо не будет никогда (типа классов и тд).

    Я говорю про движок JScript, доступный через IActiveScript* интерфейсы.

    По сабжу: запили свой интерпретатор x86 или какой-то старой железки, и пиши скрипты на ассемблере)
     
  18. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Ну давай тогда учитывать вот что. Поделка вылжена в открытый доступ исключительно для тех, кому она может быть полезна (не только мне), при этом денег она не просит. В связи с тем, что ею пользуюсь не только я (и не только на wasm), мне хотелось бы узнать мнение местной общественности по поводу скриптового языка. Меня интересует только мнение тех, кто им пользовался/пользуется/будет пользоваться. Если бы плагином пользовался исключительно я сам, то и в открытом доступе вы бы её не увидели и совета вашего спрашивать никто бы не стал.

    P.S.: MultiLang- или ASM-поддержку, можно преспокойно реализовать в виде подгружаемых модулей для каждого языка на основе самых обычных бинарников а не скриптовых языков. При этом ты упускаешь самое главное - я не собираюсь угождать всем и каждому. Принцип таков: понравился - берите, пользуйтесь, нет - никто не навязывает, проходите мимо.
     
  19. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Недавно решил немного поменять цветовую схему асм-кода, поэтому создал новый стиль для NPP. Пока что альфа версия. При желании можете её допилить под себя.
     

    Вложения:

    • Winter.rar
      Размер файла:
      5,6 КБ
      Просмотров:
      134
  20. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Набросал, пока что на скорую руку, перечень ключевых слов асма для автодополнения в NPP. В аттаче архив с asm.xml файлом, который надо закинуть в папку %NPP%\plugins\APIs для версий NPP <v7.6.1, иначе в папку %NPP%\autoCompletion. После этого, попробуйте что-нибудь попечатать на асме "с чистого листа".

    P.S.: Эта классная возможность будет расширяться и совершенствоваться в дальнейшем.
     

    Вложения:

    • asm.rar
      Размер файла:
      2,1 КБ
      Просмотров:
      139