Русский
Русский
English
Статистика
Реклама

Из песочницы Защита проекта VBA в MS Excel

Всем привет! Я обычный пользователь 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.

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


DPB=0B09CE0F8E108E108EGC=CCCE09520B120C120CED</source>в файле `vbaProject.bin`.<img src="http://personeltest.ru/aways/lh3.googleusercontent.com/RACGzRAHgHZAhDpkh5qo-B4MuDJZ-CMUd-BTvwgXBsDl1LMUrQcFmZ5whRrk_cJlZ7p2X5ikFegRPXl2jLoLowoWwH78-T9CANv6rqCCzB8Hoi14DFUaqBr1A0K8KSeccfr-Iss" align="center"><h2>Кратко, как создается данная защита</h2>Для создания данной защиты нужно, разархивировать файл Excel. Перейти в архиве в папку <strong>xl</strong>, открыть файл <strong>vbaProject.bin</strong>, в конце файла находятся наши ключи, редактируем значения ключей на пусто, сохраняем файл. Переводим наш архив, обратно в файл Excel. Готово!Это самый простой вариант данной защиты, но существует множество модификаций.Алгоритм снятия защиты <strong>Project is Unviewable.</strong>1)     Разархивируем подопытный файл, переходим в файл <strong>\xl\_rels\workbook.xml.rels</strong><strong><img src="http://personeltest.ru/aways/lh6.googleusercontent.com/SbsqJbKGS7gLk4g26PH3w481mTv15EozjjsNXzbQnDFMRW0DKdk9_X3ymJJN_0F23zBePuBhEYpIRgqzdOK0MID51HdemHlTo1QaTbWECgjNrFs9_8d7Ups-IImsI36aKTReT8g" align="center"></strong>2)   В файле<strong> workbook.xml.rels</strong> ищем строку, содержащую слово <strong>vbaProject</strong>, обычно имеет следующий вид: <strong><Relationship Id="rId6" Type="http://personeltest.ru/away/schemas.microsoft.com/office/2006/relationships/vbaProject" Target="vbaProject.bin"/></strong>. В этой строке нас интересует ключ <strong>Target</strong>,<strong> </strong>и<strong> </strong>его значение. Значение является название файла, в котором находится проект VBA. Иногда, защищающий меняет значения ключа на <strong>printerSettings.bin</strong>.<strong> </strong>Получается маскировка файла с проектом VBA под другой файл.3)   Открываем на редактирование файл, указанный в ключе <strong>Target</strong>, ищем в файле ключи <strong>CMG, DPB, GC</strong>. И меняем в их названиях любую букву на любую другую, например: <strong>CMC, DPC, CC</strong>. При поиске нужно быть аккуратным, так как защищающий может поместить в проект форму, подписью повторяющую один из ключей, например такую: <strong>DPB=0B09CE0F8E108E108E</strong>. При ее изменении проект VBA, будет удален из книги Excel. Сохраняем и закрываем файл.4)   Переводим архив обратно в файл Excel.5)   Запускаем приложение Excel, выполняем следующее: в <i>Центре управления безопасностью -> Параметры макросов -> Отключить все макросы без уведомления</i>. Перезапускаем Excel. Данная операция нужна, для блокировки защиты, которую иногда ставят авторы макросов. Данная защита реализована следующим образом. В модуле VBA <strong>ЭтаКнига</strong>, создается процедуры, реагирующие на события открытия книги или закрытия книги. Эти события обычно проверяют, наличие пароля на проект VBA, запрет сохранения и прочее.6)   Открываем файл. Если все правильно сделано то, Excel, будет ругаться на не правильные ключи, которые мы отредактировали, в пункте 3. Жмем, да, пока данные сообщения не закончатся и диалоговое окно закроется.Если данное сообщение не появляется то, вы отредактировали не файл который содержит проект VBA.<img src="http://personeltest.ru/aways/lh6.googleusercontent.com/-JxpNp2qXgtcvjcx09dOaY0xCTuKNSXMKmcf1BXuto99S7Z_GE-tDDZj0sZqXWY7Trq2rEZd1KJikHM41KqmHkzsMdIG_OXO3FdSIMyMB2bCfX7qKYYu1VVmExD6AaNuJiB8YKo" align="center">7)   Открываем проект VBA. После всего, проект VBA должен быть доступен.8)   Но иногда защита не снимается, тогда нужно сохранить файл, проверить, что он действительно сохранился! И проделать повторно операции с 1 по 7. Обычно так происходит когда в файле <strong>workbook.xml.rels </strong>в ключе <strong>Target</strong> установлено <strong>printerSettings.bin</strong>.<strong> </strong>При сохранение, Excel исправляет это на значение на <strong>vbaProject.bin</strong>Данную защиту можно установить и снять следующим инструментом:<img src="http://personeltest.ru/aways/lh5.googleusercontent.com/dqxpKVuWZ9_2FPe-c4IVoQyeYy5wqdRrsqZjoTmpRW9uge7SFttkYkhJJvjbW7oVu2uTXp73sTPm6mYcihA_tZt4tCci3rn3LExJXgJqGLDGp25ZkJbMtrXc1EkmJQT7qMa_5rQ" align="center"><strong>Третий вид защиты  Hidden Module, скрытые модули VBA</strong>Время на снятие: от 15 до 20 мин (нужен редактор OLE  объектов, Structured Storage Viewer, например.Недостаток: доступ к коду модуля VBAМенее распространенный вид защиты обычно встречается в комбинации с защитой <strong>Project is Unviewable. </strong>При установке данной защиты модуль VBA не отображается в проекте книги Excel. О его существовании можно узнать, проанализировав код VBA (что требует время!) или открыть файл Excel в программе <strong>OpenOffice или LibreOffice </strong>(так же можно смотреть код при защите Project is Unviewable, но данный способ не дает возможность получить рабочий файл, без пароля).<img src="http://personeltest.ru/aways/lh6.googleusercontent.com/dA3BfIzuQg79o3IP_Ez4x8pumirxRSn3JdNX-SE-CLrJ7X-V9HwgbrBujuel9uasdeVI5ZGwzpFMaMyKr0cNWxLn4BJTEVC-WRXuxQnfH8XjzIosuKr5GrZGriv4X7HuTDhQfzk" align="center">Просмотр кода VBA в <strong>LibreOffice</strong><h2>Кратко, как создается данная защита</h2>Для создания данной защиты нужно отредактировать файл с проектом VBA  <strong>vbaProject.bin </strong>или <strong>printerSettings.bin</strong>,<strong> </strong>в зависимости от настроек в файле <strong>\xl\_rels\workbook.xml.rels</strong>. В конце файла удаляются строки вида: <strong>Module1=32, 32, 635, 330, Z</strong>. С нужными названиями модулей.<img src="http://personeltest.ru/aways/lh6.googleusercontent.com/kGIfWR-aM8dJ54j9YqQI4RhfqvYDeHJDm_22kelGtwasIa5nshjoqdSFBGJhdVVWGgN0URV55fH5WawjcPJM2GpC7qgplXrqcADmWgEahnqc3__DmhCMCeJkaDpQqjdWf-XTLy0" align="center">Для снятия данной защиты нужно в файле <strong>vbaProject.bin  </strong>восстановить удаленные записи модулей.Данную защиту можно установить следующим инструментом.<img src="http://personeltest.ru/aways/lh5.googleusercontent.com/eYCYXgNpc5vhun4VWEBaLR8VA-co7c9qv2af8OhAvJ1KyPtplzfmZQt9d_jROYG0ci_ysmkd6jIgCzYX4mv6sarBefOngkayo8l-d2wKWGBoJTNvJ5EsWK2-NUHpbtV7VczTZg8" align="center"><h2>Четвертый вид защиты  Обфускация кода</h2>Время на снятие: неизвестно, зависит от объема кода и пере использования частей кода<img src="http://personeltest.ru/aways/lh6.googleusercontent.com/_O09MKRA_Wg2GupSqHCnAeGJhl7zM3VU_s-5xWF9Cz3AuFefpYnzJhrUwRCVWBneumlfXqz6TSiJY6k30oE0gu9v0sx1cVxUFrN-YEj8PV6aQJ0TZj_6XBqZgxItW6VHNEsrBIY" align="center"><i> Обфусцированный код VBA</i>Недостаток: необходимость тестирование файла после обфускации, на работоспособностьКрайне редкий вид защиты, основанный на изменении исходного кода VBA, в не удобочитаемый вид для человека. Удаляются все комментарии, форматирование кода, переименовываются названия всех переменных, процедур, функций, модулей и прочего. Злоумышленнику никогда не удастся восстановить первоначальный вид кода, и потребует достаточно много времени для, его восстановления в удобно читаемый вид для человека.Для де-обфускации кода нужно иметь время, специализированное ПО.Данную защиту можно установить следующим инструментом.<img src="http://personeltest.ru/aways/lh5.googleusercontent.com/pKd3MdYYw84gzK1HtxteUPQYj302kXbkGLgYX6Qnx8U8Wck9zezpL9WDCMTF_-yIZ0mwMWFJeDg1k72x7zKJxn-HnQUH1uqNQJE82G3TSwTP30kOqqEeOb_KHQnu_0J7HBhGfDw" align="center"><h2>Пятый вид защиты  Перенос кода в dll</h2>Время на снятие: неизвестно, зависит от языка программирования и квалификацииНедостаток: необходимости в дополнительном файле dllОдин из самых редких видов защиты. Основная идея перенос основного кода в отдельную библиотеку dll, написанную на любом другом языке программирования. Не распространённость данный вид защиты получил по следующей причине, необходимости за файлом Excel, таскать дополнительный файл, dll.Для получения доступа к коду dll, нужно обладать специальными знаниями.<h2>Заключение</h2>В заключении хочу выделить бесполезность защит: <strong>Project is Unviewable и Hidden Module</strong> которые, по существу ни отчего не защищают. Позволяют просматривать код VBA, без изменения исходного файла, в таких программах как <strong>OpenOffice </strong>или<strong> LibreOffice. </strong>Так и снимаются без особых проблем.
Источник: habr.com
К списку статей
Опубликовано: 09.08.2020 22:07:12
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Visual basic for applications

Информационная безопасность

Vba

Защита проекта vba

Project is unviewable

Hidden module

Категории

Последние комментарии

© 2006-2020, personeltest.ru