Excel как защитить надстройку

Время на прочтение
5 мин

Количество просмотров 25K

Всем привет! Я обычный пользователь MS Excel. Не являющийся профессиональным программистом, но накопивший достаточно опыта, для установки и обхода защиты проектов VBA.

Дисклеймер:

В данной статье рассмотрены виды защиты проектов VBA, от несанкционированного доступа. Их сильные и слабые стороны – ранжирование.

Цель статьи показать слабые и сильные стороны каждого вида защиты проекта VBA в MS Office.

Демонстрация разработанных инструментов, в надстройке Macro Tools VBA, для снятия и установки той или иной защиты. 

Все инструменты реализованы стандартными средствами VBA, без использования дополнительных библиотек. 

Главная панель Надстройки Macro Tools VBA

Первый вид защиты — Обычный пароль

Время на снятие: мгновенно

Недостаток: быстрый доступ к запароленному модулю VBA

Стандартный инструмент (В среде VBE: панель Tools -> VBAProject Properties -> Protection). 

Самая легко снимающаяся защита. В интернете легко находится код, для снятия данной защиты. 

Данную защиту можно снять следующим инструментом:

Второй вид защиты — Project is Unviewable

Время на снятие:  от 10 до 15 мин (в ручную)

Недостаток: доступ к исходному коду модуля VBA

Один из самых распространённых видов защит.  Встречается в 95% файлах с защитой модуля VBA. При попытке открыть проект, открывается диалоговое окно, с  сообщением:  Project is Unviewable.


Большинство пользователей Excel, не могут снять данную защиту, так как она имеет множество вариации и нюансов, для ее снятие нужно иметь представление о внутренней структуре файла Excel.

Основан, данный вид защиты, на изменение ключей:

CMG=«4A488FCC54D054D054D054D0»

DPB=«0B09CE0F8E108E108E»

GC=«CCCE09520B120C120CED»

в файле vbaProject.bin

Кратко, как создается данная защита

Для создания данной защиты нужно, разархивировать файл Excel. Перейти в архиве в папку xl, открыть файл vbaProject.bin,  в конце файла находятся наши ключи, редактируем значения ключей на пусто, сохраняем файл. Переводим наш архив, обратно в файл Excel. Готово! 

Это самый простой вариант данной защиты, но существует множество модификаций.

Алгоритм снятия защиты Project is Unviewable.

1)  Разархивируем подопытный файл, переходим в файл  …xl_relsworkbook.xml.rels

2)      В файле workbook.xml.rels  ищем строку, содержащую слово  vbaProject, обычно имеет следующий вид:  />. В этой строке нас интересует ключ Target,иего значение. Значение является название файла, в котором находится проект VBA. Иногда, защищающий меняет значения ключа на printerSettings.bin.Получается маскировка файла с проектом VBA  под другой файл.

3)      Открываем на редактирование файл, указанный в  ключе Target, ищем в файле ключи  CMG, DPB, GC. И меняем в их названиях любую букву на любую другую, например: CMC, DPC, CC. При поиске нужно быть аккуратным, так как защищающий может поместить  в проект форму,  подписью повторяющую один из ключей, например такую: DPB=«0B09CE0F8E108E108E». При ее изменении проект VBA, будет удален из книги Excel.  Сохраняем и закрываем файл.

4)      Переводим архив обратно в файл Excel.

5)      Запускаем приложение Excel, выполняем следующее: в Центре управления безопасностью -> Параметры макросов  -> Отключить все макросы без уведомления. Перезапускаем Excel. Данная операция нужна, для блокировки защиты, которую иногда ставят авторы макросов. Данная защита реализована следующим образом. В модуле VBA «ЭтаКнига», создается процедуры, реагирующие на события открытия книги или закрытия книги. Эти события обычно проверяют, наличие пароля на проект VBA, запрет сохранения и прочее.

6)      Открываем файл. Если все правильно сделано то, Excel, будет ругаться на не правильные ключи, которые мы отредактировали, в пункте 3. Жмем, да, пока данные сообщения не закончатся и диалоговое окно закроется. 

      Если данное сообщение не появляется то, вы отредактировали не файл который содержит проект VBA.

7)      Открываем проект VBA. После всего, проект VBA должен быть доступен.

8)       Но иногда защита не снимается, тогда нужно сохранить файл, проверить, что он действительно сохранился! И проделать повторно операции с 1 по 7. Обычно так происходит когда в файле workbook.xml.rels в ключе Target  установлено printerSettings.bin.При сохранение,  Excel  исправляет это на значение на vbaProject.bin

Данную защиту можно установить и снять следующим инструментом:

Третий вид защиты — Hidden  Module, скрытые модули VBA

Время на снятие:  от 15 до 20 мин (нужен редактор OLE — объектов, Structured Storage Viewer, например.

Недостаток: доступ к коду модуля VBA

Менее распространенный вид  защиты обычно встречается в комбинации с защитой Project is Unviewable. При установке данной защиты модуль VBA не отображается в проекте книги Excel. О его существовании можно узнать, проанализировав код VBA (что требует время!) или открыть файл Excel в программе  OpenOffice  или  LibreOffice (так же можно смотреть код при защите Project is Unviewable, но данный способ не дает возможность получить рабочий файл, без пароля). 

Просмотр кода VBA в  LibreOffice

Кратко, как создается данная защита

Для создания данной защиты нужно отредактировать файл  с проектом VBA — vbaProject.bin  или printerSettings.bin,в зависимости от настроек в файле …xl_relsworkbook.xml.rels. В конце файла удаляются строки вида: Module1=32, 32, 635, 330, Z.  С нужными названиями модулей.

Для снятия данной защиты нужно в файле vbaProject.bin — восстановить удаленные записи модулей.

Данную защиту можно установить следующим инструментом.

Четвертый вид защиты — Обфускация кода

Время на снятие:  неизвестно, зависит от объема кода и пере использования частей кода

Обфусцированный код VBA

Недостаток:  необходимость тестирование файла после обфускации, на работоспособность

Крайне редкий вид защиты, основанный на изменении исходного кода VBA, в не удобочитаемый вид для человека. Удаляются все комментарии, форматирование кода, переименовываются названия всех переменных,  процедур, функций, модулей и прочего. Злоумышленнику никогда не удастся восстановить первоначальный вид кода, и потребует достаточно много времени для, его восстановления в удобно читаемый вид для человека.  

Для де-обфускации кода нужно иметь  время, специализированное ПО.

Данную защиту можно установить следующим инструментом.

Пятый вид защиты — Перенос кода в dll

Время на снятие:  неизвестно, зависит от языка программирования и квалификации

Недостаток:  необходимости в дополнительном  файле dll

Один из самых редких видов защиты. Основная идея перенос основного кода в отдельную библиотеку dll, написанную на любом другом языке программирования. Не распространённость данный вид защиты получил по следующей причине,  необходимости за файлом Excel, «таскать» дополнительный файл, dll.

Для получения доступа к коду dll, нужно обладать специальными знаниями.

Заключение

В заключении хочу выделить бесполезность защит:  Project is Unviewable и Hidden  Module которые, по существу ни отчего не защищают. Позволяют просматривать код VBA, без изменения исходного  файла, в таких программах как OpenOffice  или  LibreOffice. Так и снимаются без особых проблем.


Download Article


Download Article

Microsoft’s Visual Basic for Applications (VBA) is the standard language for writing programs to automate functions and tasks in Microsoft Office. Understand how to protect VBA code so others can’t sabotage or steal your macros.

For unprotection and removal of VBA passwords, see this article.

  1. Image titled Protect VBA Code Step 1

    1

    Open the Visual Basic Editor, usually found under «Macro» in the «Tools» menu. (In Access, you may need to be in the database window to reach the editor, depending on your computer set-up.)

    • Select «Project Properties» in the «Tool» menu within the Visual Basic Editor.

      Image titled Protect VBA Code Step 1Bullet1

  2. Image titled Protect VBA Code Step 2

    2

    Go to the «Protection» tab.

    Advertisement

  3. Image titled Protect VBA Code Step 3

    3

    Select the «Lock Project for Viewing» check box. If you don’t check this box, you won’t hide your code.

  4. Image titled Protect VBA Code Step 4

    4

    Create and confirm your desired password in the indicated boxes.

  5. Image titled Protect VBA Code Step 5

    5

    Save, close, and reopen your workbook for the protection to take effect. (In Microsoft Excel 2007 and later, you may need to save as an XLSM file for your code to work.)

  6. Advertisement

  1. Image titled Protect VBA Code Step 6

    1

    Go to the «Database Tools» tab.

  2. Image titled Protect VBA Code Step 7

    2

    Find the «Database Tools» group.

  3. Image titled Protect VBA Code Step 8

    3

    Select «Make ACCDE.»

  4. Image titled Protect VBA Code Step 9

    4

    Save the ACCDE file with a separate name from the original file. That ACCDE file is a read-only file type, so you need to keep the original file, too, to be able to make any changes.

  5. Advertisement

  1. Image titled Protect VBA Code Step 10

    1

    Create an empty Office file of the type that will use your code. (For example, if your code works with MS Excel, create an Excel file.)

  2. Image titled Protect VBA Code Step 11

    2

    Copy your VBA code into the Visual Basic Editor of that empty file.

  3. Image titled Protect VBA Code Step 12

    3

    Open the «Macros» window, usually stored under «Tools.»

  4. Image titled Protect VBA Code Step 13

    4

    Test your code again, which debugs it.

  5. Image titled Protect VBA Code Step 14

    5

    Remove anything added to the empty file by your test.

  6. Image titled Protect VBA Code Step 15

    6

    Add a description to the macro that will run in your add-in. (You may need to select macro «Options» to be able to insert the description.)

  7. Image titled Protect VBA Code Step 16

    7

    Compile your code. (In the Visual Basic Editor, look under the «Debug» menu and select «Compile VBA Project.»)

  8. Image titled Protect VBA Code Step 17

    8

    Save a copy of the file in a standard file type.

  9. Image titled Protect VBA Code Step 18

    9

    Go to «Tools» in the Visual Basic Editor, then select «Project Properties.»

  10. Image titled Protect VBA Code Step 19

    10

    Select the «Protection» tab.

  11. Image titled Protect VBA Code Step 20

    11

    Activate the «Lock Project for Viewing» check box. (You may also need to set a password, depending on the specific file type you’re working with and your settings for MS Office and your computer.)

  12. Image titled Protect VBA Code Step 21

    12

    Open the «Save As�» or «Save a Copy» dialog box.

  13. Image titled Protect VBA Code Step 22

    13

    Access the drop-down menu and change the file type to the appropriate type of add-in.

    • Save a Microsoft Word add-in as a DOT file, a document template. (If you want the add-in to run when you start Word, save it in the Word Startup folder.)
    • Save a Microsoft Excel add-in as an XLA file.
    • Save a Microsoft Access add-in as a MDE file, which will protect the VBA code. (Microsoft Access add-ins can also be saved as MDA files, but this doesn’t hide the code.)
    • Save a Microsoft PowerPoint add-in as a PPA file which will hide the VBA code and leave it unable for anyone other than you to access it or edit it.
  14. Image titled Protect VBA Code Step 23

    14

    Quit and reopen Microsoft Office. Your add-ins should now be usable.

  15. Advertisement

Add New Question

  • Question

    What if I forgot my password to open the VBA project? Will it become unrecoverable?

    Sylvia Saltaformajo

    Sylvia Saltaformajo

    Community Answer

    Unfortunately yes, you won’t be able to recover it using VBA editor you used to set the password. However, VBA passwords are easily removed by password recovery software such as Password-Find, Password Lastic, Rixler, etc, you can find it online.

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

  • If you can’t find the VBA Editor or Add-In Manager, make sure it is installed on your computer. If not, you’ll probably need to access your Office suite installation disks to install the necessary programs.

  • Your specific settings and setup for Microsoft Office can affect where different functions are located in each program. If you can’t find a function, try running a quick «Help» search for the function name.

Thanks for submitting a tip for review!

Advertisement

About This Article

Thanks to all authors for creating a page that has been read 249,468 times.

Is this article up to date?

 

zao

Пользователь

Сообщений: 3
Регистрация: 01.01.1970

Добрый день, уважаемые!  
Подскажите, пожалуйста, кто-нибудь использовал для защиты надстройки от просмотра совместный доступ? Подобно этому

http://www.mrexcel.com/forum/showthread.php?t=474204

.  
К сожалению, после пересохранения надстройки и открытия ее в VBE сообщение project is unviewable не появляется,а идет запрос пароля. Кто-нибудь решал подобную проблему?

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

Забавный метод.  
А вы прямо по пунктам все сделали?

 

Да. Поэтому и хотел узнать может кто-то пробовал что-то подобное. Может еще что-нибудь нужно сделать кроме перечисленного?

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

У меня получилось. Странная получается штука. Вроде и xla, но при этом листы видно, т.е. IsAddin скорее всего остается False.    

  Вам скорее всего надо внимательно подойти к этой части:  

  10. Go to Tools > Share Workbook  
11. When the dialogue appears, check the box for: (Allow changes by…..)  
12. Press OK to close the Dialogue  
13. When prompted to save, Press OK  
14. Press Ok to accept that «macros cannot be accessed»  
15. You should feel giddy at this point because you just realized what you have  
been missing right under your nose  
16. Verify that the [SHARED] appears in the application title bar

    Вы уверены, что Вам необходимо защищать именно надстройку?

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

Кстати, очевидно, что п.5 выполнять не обязательно:  
5. Lock the vba-project with a password

 

Да, хочу защитить именно надстройку. Вы ее пересохранили и все получилось?  
На .xlam тоже работает?  

  10. Go to Tools > Share Workbook  
Это Рецензирование-Доступ к книге или защитить книгу и дать общий доступ?  
И так и так пробовал.

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

Как сказать все. Листы по прежнему видны, что для надстройки неправильно.  
На xlam не проверял.    
Общий доступ, естественно. Именно так макросы становятся unviewable.  
Как же Вы выполнили п.16, если задаете такие вопросы?  

  Не думали о компиляции в dll, например? Или создании надстройки COM, раз так хотите скрыть свои бесценные решения?

 

Так на всякий случай спросил, потому что вроде больше нигде не мог ошибиться. Подумал, что этот способ будет проще.

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

 

Plex в VBE тоже Project is Unviewable показывает.  
Раз многоуважаемый Николай Павлов решил так защищать надстройку, думаю такой выбор оправдан, поэтому есть большое желание разобраться.

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

 

zao

Пользователь

Сообщений: 3
Регистрация: 01.01.1970

subtlety! Спасибо за ссылки, комментарии и участии.

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

Пожалуйста! Самому показалось интересно вначале.  

  Странно, что у нас получился междусобойчик, местные Гуру наверняка знают плюсы (думаю, устойчив к Office Password Recovery) и минусы (так же слаб перед OO) этого метода.

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

Тема защиты надстроек и формул неоднократно обсуждалась на форуме. Например, здесь: <BR> 

http://www.planetaexcel.ru/forum.php?thread_id=28882&page_forum=2

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

Понятно, что неоднократно. (=  
ZVI, спасибо за ссылку, раньше не попадалась, добавил в подшивку.  

  Лично я за открытый код. Единственное, что раздражают такие товарищи:  

http://yelaburg.ru/

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

Кстати, в той теме и похожих всплывал вопрос, насколько читабелен код, если открыть проект в ООО.  

  Читабелен ровно так же, как и в VBE. Навигация даже чуть удобней =).  
В последних версиях LibreOffice совместимость с VBA просто потрясающая.  
Относительно несложные проекты работают просто из коробки.

 

Leanna

Пользователь

Сообщений: 816
Регистрация: 15.01.2013

{quote}{login=subtlety}{date=17.05.2012 09:45}{thema=}{post}  

http://yelaburg.ru/

{/post}{/quote}  
Удивляет надпись «не имеет аналогов». Что то не верится.

Работать надо не 12 часов, а головой.

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

И я про то же.  
Десятки бесплатных аналогов с открытым кодом, так что это прямая ложь.

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

•корректный вывод в любом падеже (не имеет аналогов) — это где есть в бесплатных? Я не помню.

 

nerv

Пользователь

Сообщений: 3071
Регистрация: 22.12.2012

{quote}{login=Hugo}{date=17.05.2012 10:36}{thema=}{post}•корректный вывод в любом падеже (не имеет аналогов) — это где есть в бесплатных? Я не помню.{/post}{/quote}  
у нас на работе : )  

  [subtlety]>Единственное, что раздражают такие товарищи:
чем?

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

Ну например, древний код Яркова.  
По-моему, есть в Копилке и просто в интернете.  

  nerv, враньем. В обычной жизни я выразился бы покрепче ))

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Точно, про крокодилов забыл… Давно было, сейчас даже у себя найти ей не могу, чтоб проверить…

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

что там тогда уже были падежи (крокодилов :))  
Мне кажется, что не были…

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

Так я же архив прикрепил.

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Видел конечно.  
Но кажется, у меня были другие крокодилы :)  
Я не помню, что была опция их склонения.  
Да и тут тоже пока только в проекте.

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

В рублевой версии работает из коробки.

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

И где она — бесплатная с падежами?

 

subtlety

Пользователь

Сообщений: 375
Регистрация: 01.01.1970

В архиве выше.  
Что-то опять чатик получается.

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

#30

17.05.2012 13:49:28

А я вот не вижу там получить вариант например «двумястами пятьюдесятью рублями». Ну или крокодилами… :)  
А за 650 рублей (или сколько там…) обещают.

Защитить проект VBA

Зачастую, при создании проекта на VBA в Excel, хочется его надежно защитить (особенно, если он какой-то крупный). В первую очередь, это нужно для того, чтобы никто не «украл» Ваши личные интеллектуальные разработки, либо для того, чтобы никто не мог внести какие-либо изменения в код. В данной статье как раз будет рассказано о некоторых способах, с помощью которых можно защитить проект VBA: от самых простейших, до более сложных.

Установка пароля на проект VBA

Первый и наиболее простой способ защитить проект VBA — стандартная установка пароля. Для установки пароля, в открытом редакторе VBA, необходимо нажать «Tools» — «VBA Project Properties» и перейти на вкладку «Protection», как показано на скриншоте ниже:

Защитить проект VBA: свойства проекта

Далее, необходимо ввести пароль и подтвердить его. Если нужно закрыть проект от просмотра кода — установите галочку в поле «Lock project for viewing». И все, пароль установлен. Теперь, в следующий раз, когда вы зайдете в редактор VBA и попытаетесь открыть VBA-проект — необходимо будет ввести пароль:

Защитить проект VBA: стандартный пароль

Данный способ поможет защитить проект VBA только от простых пользователей: если очень захотеть, пароль можно легко взломать. Такая защита не является надежной.

Обфускация кода

Обфускация — это изменение (запутывание) кода программы с целью затруднения его восприятия и понимания. В случае с кодом VBA — удаление отступов, удаление комментариев и переименовывание переменных или даже самих процедур.

Например, имеется простейший код, который сравнивает две переменные и выводит сообщение:

Sub sravnenie()
Dim a As Double 
Dim b As Double
a = 50 'первая переменная
b = 30 'вторая переменная
If (a >= b) Then 'сравнение
    MsgBox a & " больше или равно " & b, "Сравнение"
Else
    MsgBox a & " меньше " & b, "Сравнение"
End If
End Sub

После обфускации получится следующий код:

Sub q3294ac481200c9f62b6a7dac981cea19()
Dim b17fea5c0191a5bc3c2640b8f16b14e98 As Double
Dim ea06f6764676da2a53039a8c582369215 As Double
b17fea5c0191a5bc3c2640b8f16b14e98 = 50
ea06f6764676da2a53039a8c582369215 = 30
If (b17fea5c0191a5bc3c2640b8f16b14e98 >= ea06f6764676da2a53039a8c582369215) Then
MsgBox b17fea5c0191a5bc3c2640b8f16b14e98 & " больше или равно " & ea06f6764676da2a53039a8c582369215, "Сравнение"
Else
MsgBox b17fea5c0191a5bc3c2640b8f16b14e98 & " меньше " & ea06f6764676da2a53039a8c582369215, "Сравнение"
End If
End Sub

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

Для того, чтобы защитить проект VBA с помощью обфускации, можно воспользоваться готовыми инструментами:

  • Сайт для обфускации кода VBA
  • Инструмент для обфускации на Python

Обфускация — эффективный способ защиты VBA (и не только VBA). Его также можно использовать с первым способом: если пароль взломают, то с анализом и интерпретацией кода придется довольно долго потрудиться.

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

Изменение бинарного файла (Project is unviewable)

Еще один эффективный способ защитить проект VBA — небольшое изменение бинарного кода самого файла Excel. Что для этого нужно?

Сначала, необходимо сохранить исходный файл в формате .xlsb (рекомендуется именно этот формат), либо в формате .xlam, если это надстройка. После чего, необходимо сменить расширение файла на .zip и открыть его через архиватор (Winrar или 7-Zip). Затем, нужно зайти в папку «xl» и найти там файл vbaProject.bin. Файл необходимо куда-нибудь перенести/скопировать, например, на рабочий стол.

Защитить проект VBA: vbaProject.bin

Далее, нужно открыть vbaProject.bin через текстовый редактор Notepad++ (именно через него, так как через стандартный блокнот не получится) и найти там строчки, содержащие «CMG», «DPB» и «GC» (они находятся почти в самом низу). Все символы, находящиеся в кавычках после них, необходимо заменить на символ «F», как это сделано на примере ниже:

Защитить проект VBA: бинарный файл

Сохраняем файл vbaProject.bin, закрываем, переносим его обратно в архив в ту же папку «xl». Меняем обратно расширение с .zip на .xlsb или .xlam (в зависимости от того, в каком расширении файл был сохранен), и все, готово. Теперь, при попытке просмотреть/изменить модули нашего проекта, мы будем видеть сообщение «Project is unviewable»:

Защитить проект VBA: Project is unviewable

Данный способ поможет эффективнее защитить проект VBA от взлома более опытными пользователями. Но даже эту защиту можно взломать, если очень захотеть.

Важно! Не забудьте сделать резервную копию исходного файла, в противном случае, вы больше не сможете просматривать и редактировать свой код.

Создание надстройки .dll

Еще один из способов, с помощью которого можно защитить проект VBA — создание .dll надстройки. Про данный способ я расскажу вкратце, так как сам я .dll-надстройки не создавал. Суть заключается в том, что код ваших макросов вы пишете на другом языке программирования, например на C++, а затем компилируете его в .dll или .exe файл, который затем подключается к Excel. Исходный код из скомпилированного файла извлечь крайне трудно.

Интересную тему, с которой можно начать небольшое погружение в создание .dll-надстройки, можно прочитать на форуме PlanetaExcel.

Использование стороннего софта

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

  • XLS Padlock (139€)
  • VBASH (80$)
  • Unviewable+ (100$ и выше, в зависимости от лицензии)
  • VbaCompiler (299$ стандартная лицензия) — создает .dll-файл (используется язык C)

Стоит отметить, что файлы, защищенные с помощью VBASH и самой дешевой версией Unviewable можно довольно быстро взломать. Вероятно, стоимость этого программного обеспечения «слегка» завышена и, возможно, следует пользоваться другими способами. А вот с помощью VbaCompiler защитить проект VBA можно очень надежно, так как он автоматически создает .dll-надстройку с использованием языка C. Но стоимость данного ПО довольно высокая.

Приобретать данный софт или нет — целиком и полностью ваше решение, но следует понимать, что вклад в защиту проекта должен быть финансово оправдан. Для защиты проекта от обычных пользователей достаточно использовать те методы, о которых я написал в этой статье. Нужно помнить о том, что не существует стопроцентной защиты от взлома: если человек реально захочет взломать ваш проект, он его взломает.

Как известно, снять пароль с офисного файла особого труда не представляет…
И пароль проекта VBA тут не исключение. Конечно, понимаю, что эта тема осуждалась не раз, и для реальной защиты проекта надо сохранять код не внутри офисного файла, но… возникла мысль :)
Насколько я понимаю, чтобы увидеть код проекта (возьмём к примеру надстройку XLA), надо запустить файл с кодом VBA в режиме, когда макросы не запрещены.
С установленной надстройкой XLA проще — код всё равно сработает при её запуске.

Хотелось бы услышать Ваше мнение по поводу такого способа защиты кода:
(будем считать, что пароль серьёзный и BruteForce не поможет):

1) при запуске надстройки она пытается удалить весь свой код.
Если проект запаролен, то это не удаётся, и всё работает как и должно , но в коде проекта поковыряться не удастся.
2) если же кто-то предваритель снял пароль с проекта при помощи специальных программ, то весь код проекта будет моментально удалён при его запуске (по событию Workbook_Open), после чего сразу сохраняемся (ThisWorkbook.Save).
В случае, если взломщик средствами ОС откроет доступ к этому файлу только на чтение (чтобы ThisWorkbook.Save не сработал), можно, к примеру, просто закрыть Excel.

На тестовой надстройке всё работает (пример в прикреплённом файле, пароль к VBA проекту 321).
Если её запустить без пароля, код сразу удаляется.

Возможно, я что-то упустил, или защищенную таким способом надстройку всё равно удастся сломать?

У вас нет необходимых прав для просмотра вложений в этом сообщении.

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Excel как зафиксировать результаты формул
  • Excel как зафиксировать размеры ячеек
  • Excel как зафиксировать размер ячейки
  • Excel как зафиксировать колонки
  • Excel как зафиксировать кнопку

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии