Возможно ли так защитить проект .XLA ?

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

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

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

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

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

Возможно, я что-то упустил, или защищенную таким способом надстройку всё равно удастся сломать?
Вложения
test.zip
(7.48 КБ) 64 скачивания
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

EducatedFool, интересные рассуждения.
Давайте опишу результат пробы.
Беру Ваш файл, ломаю пароль.
Запускаю файл, Alt+F11, подставляю свой, "левый" пароль и спокойно смотрю код VBA.
Или Вы имели в виду что-то другое, не то, что я сделал?
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

защищать обычным паролем код - бессмысленно
На этом форуме я приводил ссылки на специальные программы для защиты кода
Но они работают только с кодом 2003 офиса
любой VBA код элементарно выдирается из любой XLA без исполнения кода макросов
Андрей Энтелис,
aentelis.livejournal.com
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Aent,
защищать обычным паролем код - бессмысленно
На этом форуме я приводил ссылки на специальные программы для защиты кода
совершенно верно.
И казалось, что эта тема уже исчерпана.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
Mint86
Сообщения: 127
Зарегистрирован: 04 мар 2008, 11:47

Извиняюсь за глупость вопроса но все же..
Aent писал(а):защищать обычным паролем код - бессмысленно
На этом форуме я приводил ссылки на специальные программы для защиты кода
Но они работают только с кодом 2003 офиса
любой VBA код элементарно выдирается из любой XLA без исполнения кода макросов


Скажите а какова вероятность того что при использовании таких программ VBA код не будет взломан? Приведите пожалуйста пример как это можно в принципе сделать (выдернуть код из любого XLA)? Hex редактором?
А какова вероятность взлома кода вынесенного за пределы проекта (ComAdd-In)?
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

(выдернуть код из любого XLA)?
я делаю элементарно. Переименовываю .xla в .xls,запускаю книгу и открываю код. Все.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Mint86, в принципе поскольку существует декомпилятор байт кода для VBA (правда кривоватый)
то даже удаление s-кода (перекодированных строк с исходным текстом) не спасёт от востановления программы.
На таком уровне рассмотрения вопроса COM AddIn даже проще декомпилировать - больше програм для этого. Хотя я уже много раз замечал на этом форуме что в 99.9% случаев код на VBA
cтоит намного дешевле эффективных средств защиты.
На моей памяти дольше всех держалась СOM надстройка WrdTools
http://mso-tools.com/wrdtools/ru/ (Автор просит за неё 9.5$)
И то для одной из версий был найден эффективный способ нелегальной регистрации
http://forum.ru-board.com/topic.cgi?for ... 6&start=40
Правда на время ;)
Вот кстати хороший пример VBA проекта в котором получить доступ к исходному коду довольно
легко. Но так как критические элементы защиты вынесены в DLL корректно зарегистрировать приложение с помощью простой можификации VBA кода не удаётся.
Что касается програм для извлечения исходного кода из OLE-Storage то автор попросил меня
не распространять их или линки на их старые копии в связи с закрытием проекта.
Тем не менее я уже приводил на этом форуме ссылку на выложенные MS бинарные форматы
офисных документов
http://www.microsoft.com/interop/docs/O ... rmats.mspx
Так что при большом желании желающие могут попробовать воссоздать ;)
Андрей Энтелис,
aentelis.livejournal.com
Аватара пользователя
Mint86
Сообщения: 127
Зарегистрирован: 04 мар 2008, 11:47

Aent, VictorM, Спасиб за доскональные ответы! Как сказал один мудрый чел на краклаб.ру
нет 100% гарантированной защиты от взлома, честно говоря нет и 10% гарантии
Ответить