• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

Разбиение приложения на подключаемые модули

  • Автор темы Автор темы ivs4
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
I

ivs4

Добрый день. Тема моего вопроса не нова, но вразумительного ответа я до сих пор не нашел. Речь пойдет о разбиении приложения на модули. Я сразу откинул использование ActiveX и OLE по причине необходимости их регистрации в системе. Осталось два способа: dll и bpl. Тут то и начинается мучительный процесс выбора. Основным критерием создания приложения стало распространение его без runtime библиотек среды разработки. Если пойти таким путем в отношении dll, то их надо компилировать бес runtime библиотек наряду и с основной частью, и получаем дублирование системного кода и в основной части и в подключаемых модулях. Общий размер от этого не уменьшается.
При использовании bpl работа без runtime библиотек среды разработки вообще невозможна. Если у меня в пакете в области requires упоминаются библиотеки, то их к сожалению придется таскать с дистрибутивом, т.к. без динамического подключения оных основная часть не находит зарегистрированный в пакете класс.
Вопрос: Существует ли вариант, при котором и все runtime библиотеки среды разработки включаются в приложение, и не происходит дублирование кода в основной части и в подключаемых модулях? Или же я не до конца отработал описанные мною выше варианты? Заранее благодарен.
 
Сталкивался с подобной проблемой .. вопрос в том какие части кода Вы хотите вынести в отдельные модули.

Если это только куски кода, вы полняющие вычислительные функции то DLL вполне нормальный вариант, но если Вы планируете выносить в модули формы, фрэймы и потом плотно работать с ними (дочить и т.д.) то Ваш единственный вариант это BPL...
 
Приложение состоит их нескольких модальных форм. Сейчас это все в одном exe скомпилированном без runtime библиотек (по принципу "все что нужно ношу в себе"). Каждая форма сожержит ряд визуальных и невизуальных контролов (ADO, Data Controls...). Хотелось бы все это разбить на отдельные модули по возможности сохранив отказ от runtime библиотек (т.е. в дистрибутив должны включаться только мои bpl, а не системные Delphi). Я так понял, что если идти по пути модулей-bpl, то без таскания системных bpl не обойтись.
 
Используя механизм BPL этого не удастся сделать... системные пакеты всё равно придётся таскать... Но если Вы говорите что Ваши формы являются чисто модальными .. то Вас вполне устроит мехнизм использования DLL для хранения в них различных модальных форм...

Вопрос другой что это не будет работать если Вы ходить их дочить в основное приложение... а в модальном режиме работы DLL хороший выход из ситуации...
 
Понятно. Я предполагаю, что при использовании dll в случае если в двух модулях используются системные runtime то их придется компилировать в оба модуля. Отсюда наблюдаю избыточность кода.
P.S. Большая просьба разъяснить термин "дочить".
 
Да .. от избыточности кода уйти не удастся в случае использования DLL, его возможно избежать только в случае использования BPL.

Дочить (извините за слэнг :)) - dock window = технология, которая позволяет вставлять окна внутрь другого окна.
 
Спасибо за ответы. Остановился на использовании bpl. При этом размер основной части и модулей упал до нескольких килобайт. Правда придется у клиента оставлять системные bpl (каждая порядка мегабайта), и здесь палка о двух концах.
С одной стороны при удаленном обновлении по каналу передать несколько килобайт пройдет без заминок.
С другой - при смене среды разработки те самые системные bpl все же придется менять.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD