Страница 1 из 1

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

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

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

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

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

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

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

Добавлено: 21 июн 2008, 01:10
VictorM
EducatedFool, интересные рассуждения.
Давайте опишу результат пробы.
Беру Ваш файл, ломаю пароль.
Запускаю файл, Alt+F11, подставляю свой, "левый" пароль и спокойно смотрю код VBA.
Или Вы имели в виду что-то другое, не то, что я сделал?

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

Добавлено: 21 июн 2008, 01:18
Aent
защищать обычным паролем код - бессмысленно
На этом форуме я приводил ссылки на специальные программы для защиты кода
Но они работают только с кодом 2003 офиса
любой VBA код элементарно выдирается из любой XLA без исполнения кода макросов

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

Добавлено: 21 июн 2008, 01:23
VictorM
Aent,
защищать обычным паролем код - бессмысленно
На этом форуме я приводил ссылки на специальные программы для защиты кода
совершенно верно.
И казалось, что эта тема уже исчерпана.

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

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


Скажите а какова вероятность того что при использовании таких программ VBA код не будет взломан? Приведите пожалуйста пример как это можно в принципе сделать (выдернуть код из любого XLA)? Hex редактором?
А какова вероятность взлома кода вынесенного за пределы проекта (ComAdd-In)?

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

Добавлено: 27 июн 2008, 14:24
VictorM
(выдернуть код из любого XLA)?
я делаю элементарно. Переименовываю .xla в .xls,запускаю книгу и открываю код. Все.

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

Добавлено: 28 июн 2008, 02:14
Aent
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
Так что при большом желании желающие могут попробовать воссоздать ;)

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

Добавлено: 30 июн 2008, 06:16
Mint86
Aent, VictorM, Спасиб за доскональные ответы! Как сказал один мудрый чел на краклаб.ру
нет 100% гарантированной защиты от взлома, честно говоря нет и 10% гарантии