Защита проектов vba в Excel
Обновлено: 21.11.2024
Aspose.Cells теперь поддерживает функцию защиты проекта VBA (Visual Basic для приложений) рабочей книги Excel и блокировки его для просмотра. Кроме того, вы также можете узнать, защищен ли уже существующий проект VBA и заблокирован для просмотра. См. эти статьи для справки.
Указание предупреждения о сортировке при сортировке данных
Aspose.Cells уже поддерживает сортировку данных, однако ранее вы не могли сортировать текстовые данные как числовые данные. Для этого в Aspose.Cells реализовано свойство DataSorter.SortAsNumber. Всякий раз, когда вы сортируете текстовые данные, которые выглядят как числа, MS-Excel показывает это предупреждение. Свойство DataSorter.SortAsNumber реализует это предупреждение MS-Excel.
Дополнительную информацию по этой теме см. в этой статье.
Указание форматирования пользовательского шаблона DBNum
Aspose.Cells поддерживает форматирование пользовательского шаблона DBNum. Например, если значение вашей ячейки равно 123 и вы укажете его пользовательское форматирование как [DBNum2][$-804]Общее, оно будет отображаться как 壹佰贰拾叁. Вы можете указать пользовательское форматирование своей ячейки, используя метод Cell.GetStyle() и атрибут Style.Custom.
Другие улучшения и исправления
-
.
- Спарклайны исчезают после повторного сохранения и рендеринга в PDF.
- Ошибка форматирования внутри текста фигур при преобразовании Excel в PDF.
- VbaProject.Sign вызывает исключение.
- Повторное добавление изображения в тот же XLS приводит к ошибке Null Reference.
Кроме того, в этом выпуске мы исправили несколько других проблем. Например, проблемы, связанные с чтением и записью форматов файлов MS Excel, манипулирование сводными таблицами, применение форматирования к ячейкам, манипулирование объектами и формами Ole, рендеринг и манипулирование диаграммами, рендеринг HTML в Excel и наоборот, рендеринг изображений из листов Excel, рендеринг файлов изображений. из диаграмм и экспорта книг Excel в формат PDF были решены. В новой версии также улучшен механизм расчета формул.
Для правильного обсуждения наилучшего способа защиты кода VBA необходимо сначала определить термин "защита кода VBA", а также критерии его эффективности.
Все авторы программного обеспечения хотят избежать утечки исходного кода, особенно если они хотят монетизировать свою работу. Таким образом, имеет смысл трактовать термин «защита кода VBA» как защиту от доступа к исходному коду VBA и защиту от восстановления алгоритма кода VBA.
Чтобы сравнить различные методы защиты кода VBA, нам нужно иметь измерение, которое непосредственно показывает эффективность каждого метода.
Лучшим измерением будет экономичность — сколько ресурсов было использовано для создания кода VBA и какова стоимость восстановления этого кода или алгоритмов из защищенного кода. Эффективный и надежный способ защиты кода VBA должен иметь стоимость восстановления исходного кода VBA из защищенного кода, значительно превышающую стоимость создания того же кода VBA с нуля.
В этом случае восстанавливать код VBA должно стать экономически невыгодно, потому что дешевле создать этот код VBA с нуля, чем восстанавливать его из защищенного кода.
Если W определяется как количество рабочих часов, которые потребовались для создания кода VBA, а X — как количество рабочих часов, чтобы взломать эту защиту, чтобы получить доступ к защищенному коду VBA или восстановить алгоритмы кода VBA, то отношение между этими количество дает нам качество защиты VBA:
X W (или X/W > 1) — стоимость восстановления исходного кода выше стоимости разработки кода VBA. Это высокая эффективность защиты.
Защита паролем проекта VBA.
Вы можете рассматривать пароль VBA как защиту от случайного изменения кода VBA клиентом. Любой может найти в Интернете способы снятия защиты проекта VBA.
Кроме того, на рынке доступно много дешевых коммерческих инструментов для удаления пароля VBA. Восстановление доступа к коду VBA в этом случае автоматизировано и его стоимость можно считать равной нулю (X = 0).
Этот метод имеет низкую эффективность защиты.
Непросматриваемый проект VBA
Существует способ сделать проект VBA недоступным для просмотра, изменив несколько байтов книги Excel или файла надстройки Excel в HEX-редакторе (или программно). После таких изменений проект Excel VBA показывает сообщение «Проект недоступен для просмотра» и блокирует доступ к исходному коду VBA. Но нужно понимать, что такие ограничения существуют только в редакторе Microsoft VBA.Есть несколько программных продуктов, которые позволяют вам видеть исходный код VBA непросматриваемого проекта VBA. Одним из таких программ является пакет LibreOffice с открытым исходным кодом.
В наиболее сложных случаях использования «невидимого VBA» LibreOffice не может получить доступ к коду VBA, но это можно решить с помощью простых манипуляций.
Этот метод имеет низкую эффективность защиты (X W или X/W > 100, см. выше).
Защитите код VBA с помощью VbaCompiler для Excel
VbaCompiler for Excel — это программное обеспечение для защиты кода VBA для Microsoft Excel. Он преобразует исходный код VBA в код языка C, а затем компилирует его в родную Windows DLL. Эффективность защиты VBA такая же, как и при ручном преобразовании VBA в язык C/C++, о котором говорилось выше, но без основных недостатков подхода ручного преобразования VBA в C/C++. Компилятор VBA преобразует код VBA в DLL автоматически, без участия разработчика в этом процессе. Вам не нужно знать языки C или C++, чтобы использовать компилятор VBA.
Это означает, что основной недостаток высокой стоимости ручного преобразования VBA в C/C++ устранен.
Высокая эффективность защиты кода VBA (X > W или X/W > 100, см. выше).
С помощью VbaCompiler for Excel вы получаете максимальную эффективность защиты кода VBA без больших затрат на преобразование кода VBA в C/C++.
Помимо основной функции защиты кода VBA — компиляции в DLL-файл, VbaCompiler for Excel предоставляет дополнительные функции для улучшения защиты VBA.
Управление доступом к скомпилированным методам VBA
Используя функцию «Режим предоставления метода» и атрибут [DNXVBC_VBA_EXPOSED_METHOD], вы можете контролировать, какие методы будут видны в коде подключения VBA и экспортироваться из файла DLL. Таким образом, вы можете удалить некоторые методы из кода VBA-связки и из таблицы экспорта DLL-файла. Эти методы будут работать внутри модуля DLL в соответствии с его внутренними вызовами, но никогда не будут доступны за пределами DLL.
Шифрование всех текстовых литералов
Все текстовые литералы кода VBA удаляются из преобразованного исходного кода на языке C во время компиляции. Текстовые литералы шифруются VbaCompiler и становятся доступными во время выполнения только при запуске скомпилированной книги.
XLS Padlock позволяет не только заблокировать проект VBA ваших книг Excel (или запретить доступ к редактору VBA), но и скомпилировать ваш конфиденциальный код VBA в рабочий байт-код, недоступный для конечных пользователей. Ваши макросы VBA защищены и не могут быть изучены/скопированы, поскольку исходный код VBA больше не существует. Компилятор — это не просто обфускатор: он полностью превращает код VBA в двоичный код и надежно сохраняет его в приложении.
Другую защиту VBA можно легко обойти, даже обфускация VBA не является реальной защитой: откройте для себя компилятор XLS Padlock VBA как лучшую альтернативу.
Заблокировать проект VBA
С помощью XLS Padlock вы можете надежно заблокировать свой проект VBA: эта функция не использует защиту паролем, она помечает проект VBA как заблокированный: его нельзя просмотреть, открыть или изменить в VBE (редактор Visual Basic). Если конечный пользователь пытается получить доступ к заблокированному проекту VBA, отображается следующее сообщение об ошибке (Проект заблокирован — проект недоступен для просмотра):
Поскольку исходный файл Excel невозможно восстановить, инструменты для взлома паролей Excel VBA бесполезны. Кроме того, этот параметр совместим с нашим компилятором VBA, что повышает безопасность кода VBA.
Запретить доступ к редактору VBA
Это дополнительная мера безопасности, которая автоматически закроет редактор VBA, если конечный пользователь попытается его открыть. Итак, ваш проект VBA остается недоступным.
Этот параметр совместим с защитой паролем VBA и нашим компилятором VBA.
Защитите код VBA с помощью компиляции кода VBA
XLS Padlock имеет встроенный компилятор VBA: вы можете писать сценарии Basic и компилировать их в рабочий байт-код, недоступный для других.
Преобразование частей ваших макросов VBA в скомпилированный код позволяет защитить их: исходный код больше не существует и его нельзя скопировать. Ваш код VBA надежно защищен даже без защиты паролем VBA.
Например, см. исходный код:
После защиты он становится:
Как видите, исходный код в calculate() был заменен вызовом встроенной функции XLS Padlock с именем PLEvalVBA.Эта функция выполняет скомпилированный байт-код. У конечного пользователя нет возможности получить доступ к байт-коду, и, конечно, функция VBA calculate() остается полностью функциональной (даже в исходной книге Excel до компиляции).
Исходный код VBA для calculate() был перемещен в редактор VBA XLS Padlock и скомпилирован там, как вы можете видеть ниже:
Наш компилятор VBA — это не просто обфускатор: он полностью превращает ваш код VBA в двоичный код и надежно сохраняет его в приложении.
Код VBA, который вы пишете, является сердцем и душой вашей электронной таблицы. Защита кода VBA — это то, что нужно сделать, чтобы ваш код не был украден или использован без вашего ведома. В этом посте будут рассмотрены различные способы защиты вашего кода VBA, чтобы только ВЫ могли легко получить к нему доступ.
Почему вы должны заботиться о защите кода VBA?
VBA — это макроязык, который можно использовать для создания автоматизированных задач или действий в Excel, Word, PowerPoint. Есть несколько причин, по которым вы должны защищать свой код VBA:
- Для защиты вашего кода VBA от случайного изменения. Код VBA — мощный инструмент для пользователей Excel, но он также может быть источником разочарования для тех, кто его не использует. Если вы не защитите VBA паролем, другие пользователи вашей рабочей книги смогут получить доступ к коду и внести в него изменения, не зная, что они на самом деле делают. Вы не хотите отлаживать свой код VBA, потому что это может быть болезненно — могут потребоваться часы, чтобы понять, почему, а затем еще больше времени!
- Для защиты вашей интеллектуальной собственности. Код VBA может быть очень ценным для некоторых компаний. Если кто-то получит доступ к вашей электронной таблице и скопирует используемые вами функции, то он потенциально может выдать ее за свою собственную работу и продать многим компаниям. Защитите свой ценный исходный код с помощью мер безопасности. Не позволяйте никому легко воровать или копировать.
- Чтобы защитить себя от людей, использующих вашу работу. Если у вас есть ценный фрагмент кода VBA, который упрощает и повышает эффективность вашей работы, вы можете защитить его только для личного использования.
Важно отметить, что существует несколько различных способов защиты вашего кода VBA, но не все они защищают ваш код одинаково. Это зависит от вас и от того, что вы считаете наиболее подходящим для ваших нужд.
В этой части объясняется, как вы можете использовать настройки защиты проекта VBA, чтобы защитить свой код VBA от посторонних глаз и несанкционированного доступа на определенном уровне.
- Уровень безопасности: слабый; Существуют такие инструменты, как VBA Password Remover, которые можно использовать для разблокировки пароля за считанные минуты.
- Сложность: легкая;
- Стоимость: бесплатно;
Шаг 1. Выберите «Visual Basic» в меню «Разработчик» в Excel.
Шаг 2. Чтобы заблокировать проект VBA, нажмите «Инструменты» на панели и выберите «Свойства VBAProject».
После нажатия на этот пункт меню вы должны увидеть следующее диалоговое окно:
По умолчанию выбрана вкладка «Общие», но нажмите на вкладку «Защита».
Шаг 3. Установите флажок «Заблокировать проект для просмотра», а затем дважды введите свой пароль в оба этих поля и нажмите «ОК».
Шаг 4. Сохраните и снова откройте файл Excel. Вы сможете определить, правильно ли включена защита паролем VBA, дважды щелкнув свой проект VBA. Если вы защитите свой проект VBA паролем, никто не сможет случайно изменить его.
Обфускация VBA – это искусство сделать ваш код VBA нечитаемым, но при этом функциональным. Он изменяет ваши существующие макросы с несколькими уровнями обфускации, что затрудняет понимание базовой логики.Усовершенствованные обфускаторы VBA используют ряд передовых методов обфускации, что значительно усложняет обратную трассировку и восстановление.
- Уровень безопасности: средний; Кто-то все равно сможет потратить время и ресурсы на восстановление кода;
- Сложность: умеренная; В зависимости от уровня;
- Стоимость: бесплатный обфускатор/Премиум VBA;
Компиляторы, такие как Visual C++ и Visual Basic, создают приложения, которые трудно взломать. Это связано с тем, что код компилируется в исполняемые файлы или файлы динамической библиотеки. Таким образом, мы также можем скомпилировать код VBA в файл динамической библиотеки, а затем использовать его в Excel.
- Уровень безопасности: высокий;
- Сложность: средняя;
- Стоимость: бесплатно;
Перевод макросов на C или C++ труднее реконструировать, чем на VBA. Если вы хотите защитить свой код, это лучший способ.
- Уровень безопасности: самый высокий; Получить код без прав практически невозможно; Но опять же, это не гарантируется на 100%;
- Сложность: сложная и трудоемкая; Поскольку VBA и C/C++ — такие разные языки, это сложнее, так как вам придется приложить много усилий.
Заключение
Использование макросов — отличный способ упростить разработку расширенных функций. К сожалению, это подвергает ваш код риску кражи или копирования другими лицами. В статье обсуждаются методы, которые можно использовать для предотвращения кражи или подделки кода VBA другими пользователями. Обратите внимание, что защита кода VBA не является абсолютной защитой, но обеспечивает некоторую защиту от случайных злоумышленников.
Читайте также: