Страницы: 1
RSS
Защита книги
 
Задача:
1. Проверить, включены ли макросы у пользователя. Если не включены, то отображается первый лист, где в ячейках написано предупреждение о том, что без макросов книга работать не будет и краткая инструкция как их включить. Все остальные листы скрыты и недоступны для взаимодействия с ними (veryhidden)
2. Если макросы включены или пользователь их включил, запускается макрос на открытие книги, и далее происходит:
3. Проверка серийного номера жесткого диска
3а. Проверка серийного номера выполнена. Первый лист, с предупреждением о макросах, скрывается и отображаются все остальные листы в книге. Книгу можно редактировать без каких либо ограничений, кроме кода VBA, он заблокирован.
3б. Если проверка серийного номера не выполняется:
Открывается msgbox, в котором сообщается, что "Лицензия не активирована" и 3 кнопки:
1ая - "Активировать лицензию";
2ая - "Продолжить в пробной версии";
3яя - "Кнопка отмена".
Кнопка "Активировать лицензию" - по кнопке открывается произвольный сайт, где можно активировать лицензию.
Кнопка "Продолжить в пробной версии" -  включается счетчик, который отсчитывает дни, без привязки ко времени и дате компьютера пользователя (чтобы не было возможности подменить дату). Если счетчик превысил "время пробного периода", то книга становится нерабочей (все листы скрытые или удалены), постоянно открывается окно с кнопкой "Активировать лицензию", иначе просто закрыть без сохранения. Если счетчик не превысил "время пробного периода", то работа с книгой без ограничений.
Кнопка "Отмена" - просто закрываем книгу без сохранения.
4. Проверка счетчика активации лицензии. Лицензия выдается на 365 дней. Если счетчик больше 365, то книга становится нерабочей (все листы скрытые или удалены), постоянно открывается окно с кнопкой "Активировать лицензию", иначе просто закрыть без сохранения.

Если у Вас есть другие варианты решения задачи, готов их рассмотреть.
И, общий вопрос, такого рода защита сможет "защитить" или все это бесполезно и как написано на большинстве форумов и сайтах, не имеет смысла ?
 
Вся эта защита от честного / ленивого пользователя
Любая защита с макросов снимается за минуту
Попробуйте готовые платные решения, типа такого:
https://www.spreadsheet1.com/unviewable-vba-project-app-for-excel.html

Цитата
все это бесполезно и как написано на большинстве форумов и сайтах
если везде пишут, что это бесполезно, - с чего вы взяли, что может быть иначе?

PS: защиту можно сделать, с использованием сайта (какие-то простейшие вычисления выполняются на сайте, макрос не работает без доступа к сайту, проверка лицензии и пробного периода выполняется на стороне сайта). Но это сложно / дорого / вряд ли кто-то возьмётся вам это делать
 
прислушайтесь к тому, что написано на большинстве форумов
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
lsod написал:
Если у Вас есть другие варианты решения задачи, готов их рассмотреть.
А бюджет укажете?
В вашем случае либо писать dll и часть важных вычислений переносить туда (быстро, не требует интернета), либо писать web api, к которому будет ссылаться книга - процессы будут зависеть от интернет соединения и его скорости.
Ну или заказать готовые решения, как написано в посте #2
Изменено: Oleg Boyaroff - 31.01.2021 22:11:04
 
Еще как вариант, перенести все в VSTO надстройку. Я так делал, только привязывался к флешке. Тут больше вопрос цены ПО. Ломают всё, если дешевле сломать, чем купить.  
Никому не отвечай, кoгда ты зол, ничего не обeщай, когда ты счастлив, никогда нe решай, когда ты грустeн.
 
Цитата
lsod написал:
Кнопка "Активировать лицензию" - по кнопке открывается произвольный сайт, где можно активировать лицензию.
Просто интересно, нигде не упомянуто, как произойдет эта активация. Да и все счетчики и прочее нужно где то хранить.
Цитата
lsod написал:
недоступны для взаимодействия с ними (veryhidden)
и LibreCalc еще надо запретить , а то ему на это наплевать.  :D
Изменено: БМВ - 01.02.2021 08:31:25
По вопросам из тем форума, личку не читаю.
 
Цитата
Игорь написал:
Попробуйте готовые платные решения, типа такого: https://www.spreadsheet1.com/unviewable-vba-project-app-for-excel.html
спасибо за информацию, буду иметь ввиду
Цитата
Игорь написал:
если везде пишут, что это бесполезно, - с чего вы взяли, что может быть иначе?
надеялся, что за время существования excel появилось хоть что-то по части защиты, кроме самих взломщиков этой защиты)
Цитата
Oleg Boyaroff написал:
А бюджет укажете?
бюджет планировал по описанной задаче - до 10 тыс руб. (видел уже готовые макросы, с проверкой даты создания файла, различные варианты записи данных в реестр и подобного)
есть возможность увеличить его, но надо сначала понять, имеет ли смысл гнаться за дорогой защитой, при этом взлом этой защиты будет значительно дешевле или элементарен
Цитата
БМВ написал:
Просто интересно, нигде не упомянуто, как произойдет эта активация. Да и все счетчики и прочее нужно где то хранить.
мною предполагалось следующая схема:
1. на сайте оформляется заказ, с данными пользователя (в том числе идентификатор жесткого диска);
2. на указанную почту отправляется книга эксель, с введенным идентификатором жесткого диска в проекте VBA и установленной датой/счетчиком
при этом, необходимо защитить проект VBA от доступа, чтобы не было возможности подменить идентификатор на "необходимый"
если пользователь меняет железо высылается новый файл, с новым идентификатором

Цитата
БМВ написал:
и LibreCalc еще надо запретить , а то ему на это наплевать.  
в данном ПО есть возможность работы макросов excel?
 
Цитата
lsod написал:
2. на указанную почту отправляется книга эксель, с введенным идентификатором жесткого диска в проекте VBA и установленной датой/счетчиком
Если книга не хранит пользовательских данных - то такой вариант может быть применим, естественно с оговоркой его нестойкости к взлому.
Цитата
lsod написал:
в данном ПО есть возможность работы макросов excel?
да есть, не все 100% работает и может оказаться что вся защита будет вдребезги разбита.
Изменено: БМВ - 01.02.2021 11:54:23
По вопросам из тем форума, личку не читаю.
 
lsod, не знаю насколько вы знакомы с excel и vba, но xls...  форматы - это XML формат упакованный zip-ом. Можете сами попробовать переименовать расширение в zip и распаковать. И вуаля, все ваши пароли как на ладони. И кто помешает просто удалить из vba кода все ваши проверки серийников и с сайтов тоже. Для этого не нужны даже спец программы и сам excel, все можно сделать в блокноте.
Для защиты проекта нужно как минимум компилировать проект или его часть в двоичный код. Это можно сделать, либо создав библиотеку dll или xll, либо перевести весь проект в надстройку VSTO. После этого встает второй вопрос о хранении ключа/серийника. Можно каждый раз вшивать его в код и компилировать для каждого пользователя, а можно его просто шифровать и хранить во внешнем файле или в реестре. Программы шифрования/дешифрования можно найти в сети.  
Никому не отвечай, кoгда ты зол, ничего не обeщай, когда ты счастлив, никогда нe решай, когда ты грустeн.
 
Цитата
Joiner написал:
но xls...  форматы - это XML формат упакованный zip-ом.
не стоит обобщать и людей вводить в заблуждение. xls , xlsb бинарные и покапаться в них уже не так просто.
Изменено: БМВ - 01.02.2021 13:49:41
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
не стоит обобщать и людей вводить в заблуждение. xls , xlsb бинарные и покапаться в них уже не так просто.
что мешает пользователю их пересохранить.
Никому не отвечай, кoгда ты зол, ничего не обeщай, когда ты счастлив, никогда нe решай, когда ты грустeн.
 
Цитата
Joiner написал:
что мешает пользователю их пересохранить.
а кто мешает разработчику это заблокировать :-)
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
а кто мешает разработчику это заблокировать :-)
Ну так и будем в пинг-понг играть. Блокировать макросом? Кто мешает их отключить?
Выше, вроде уже все согласились, что проекты на vba защитить невозможно средствами самого excel.
Никому не отвечай, кoгда ты зол, ничего не обeщай, когда ты счастлив, никогда нe решай, когда ты грустeн.
 
Цитата
Joiner написал:
Блокировать макросом? Кто мешает их отключить?
Я собственно и пытаюсь найти человека, который знает текущие уязвимости и попробует с ними справится
Цитата
Joiner написал:
Это можно сделать, либо создав библиотеку dll или xll, либо перевести весь проект в надстройку VSTO
Можно чуть поподробнее?
Цитата
Joiner написал:
После этого встает второй вопрос о хранении ключа/серийника. Можно каждый раз вшивать его в код и компилировать для каждого пользователя
Я так и планировал, ключ/серийник вшивать в каждую книгу

Как я понимаю, если получится организовать защиту книги, более менее адекватную, то это будет отличным решением для тысячи разработчиков, которое в дальнейшем распространить на все ваши проекты и работы.  
 
Решение озвучено:
1. Писать свою dll, с переносом части функционала в нее.
2. Подключать хостинг с сервером и php, делать часть расчета на серваке
3. С помощью VBA защиту не сделать адекватную. Только от дурака.
VSTO пишется на .NET, тоже легко смотрится. По сути это не бинарник, а промежуточный байт-код. Смотрится чуть хуже чем VBA
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
lsod написал:
ключ/серийник вшивать в каждую книгу
и это ничего не даст, т.к. элементарное отключение макросов и отображение всех листов, диапазонов и прочего эту защиту раскроют.
Пароль на VBA проект или делание его невидимым - легко решается через OpenOffice или правкой файла VBProject.bin.
Как писали выше - самое оптимальное, это выносить все важные части кода и проверки в отдельную DLL. Там защита понадежнее будет. А если все проверки делать на стороне VBA - гиблое дело изначально.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
bedvit написал:
Решение озвучено:1. Писать свою dll, с переносом части функционала в нее.2. Подключать хостинг с сервером и php, делать часть расчета на серваке 3. С помощью VBA защиту не сделать адекватную. Только от дурака.VSTO пишется на .NET, тоже легко смотрится. По сути это не бинарник, а промежуточный байт-код. Смотрится чуть хуже чем VBA
в какую стоимость оцениваете данный вид работ ?
 
Дарья Голубовская, создайте отдельную тему. Указывать контактные данные запрещено правилами форума. Связь через личку
 
Цитата
bedvit написал:
VSTO пишется на .NET, тоже легко смотрится. По сути это не бинарник, а промежуточный байт-код. Смотрится чуть хуже чем VBA
VSTO так же как и другие проекты VS на С++, С#, VB собираются одним и тем же  MSBuild на одной и той же платформе . NET Framework. Если создать dll в VS, то получите все то же самое. Сейчас существуют декомпиляторы в языки высокого уровня. Декомпилировал, исправил, скомпилировал назад. Просто нужен специалист другого уровня. Ломают все. Отсюда и вытекает не мной придуманный постулат, что цена ПО не должна превышать затраты на взлом. Второй фактор - спрос на ПО. Чем больше спрос, тем быстрее найдется желающий сломать. Я ни коим образом не навязываю ТС что-то и не претендую на исполнение, просто пытаюсь помочь оценить затраты на защиту и окупаемость проекта.  
Никому не отвечай, кoгда ты зол, ничего не обeщай, когда ты счастлив, никогда нe решай, когда ты грустeн.
 
lsod, все зависит от масштаба переноса функционала и каким способом вы хотите реализовать (dll или сайт). Трудоемкость в разы выше чем написать программу на VBA, соответственно и стоимость. Будет не дешево. Поэтому взвесьте стоимость защиты и того что защищаем. На работу не претендую. Нет времени. Только в порядке теста, могу написать что-то простое в общей ветке форума.
Joiner, вы ошибаетесь, чистый С/С++ не использует NET Framework (костыли CLI и костыли в Managed C++ я даже не упоминаю всуе). И компилируется в бинарный код, в отличии от С#, который компилируется в байт-код Common Intermediate Language (CIL) и исполняется виртуальной машиной Common Language Runtime (CLR) (JIT-компилятор «на лету» (just in time) преобразует промежуточный байт-код в машинные коды нужного процессора).
Если хотите обсудить, велком в отдельную тему, разберем на примерах.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit написал:
Joiner , вы ошибаетесь, чистый С/С++ не использует NET Framework (костыли CLI и костыли в Managed C++ я даже не упоминаю всуе).
Согласен, не буду спорить. Просто сейчас с++/cli winform программисты позиционируют себя как с++, а реальных с++ еще поискать надо, ну и ценник соответствующий. Думаю, мы помогли ТС понять подводные камни, на том и остановимся.
Хотел еще что ТС посоветовать как вариант. Ставить несколько защит. Одну как очевидную, типа, как он хочет проверка серийника hdd, и к ней какую-то завуалированную. Ну тут кто на что горазд, самому придумать надо. Один товарищ, например, вручную менял незначащий символ прямо в  скомпилированной библиотеке. Потом в коде проверял этот символ. Программу не останавливал, типа все хорошо, а в другом месте делал ошибочные вычисления. Клиент, либо отказывается от программы, либо связывается и качает права, но уже понятно что происходит.
Изменено: Joiner - 02.02.2021 18:04:01
Никому не отвечай, кoгда ты зол, ничего не обeщай, когда ты счастлив, никогда нe решай, когда ты грустeн.
 
Цитата
Игорь написал:
Попробуйте готовые платные решения, типа такого: https://www.spreadsheet1.com/unviewable-vba-project-app-for-excel.html
проект VBA будем защищать данным решением
ищу исполнителя на задачи, которые я поставил в 1ом посте
 
Цитата
lsod написал: проект VBA будем защищать данным решением
Добрый день.
Чтобы не принять ошибочное решение - использование Unviewable+ VBA Project For Excel имеет смысл, если VBA код хранится в отдельной защищенной надстройке, а книга с данными использует этот VBA-код. После сохранение XLSM (книгу же предполагается периодически сохранять) не вся, но самая интересная часть защиты Unviewable+ с книги слетает, сообщаю это, так как ранее обсуждалось здесь. Вообще, обсуждение деталей защиты кода дает подсказки по методам вскрытия кода, что правилами форума запрещено, поэтому с этим лучше поосторожнее ))
 
Цитата
ZVI написал: Вообще, обсуждение деталей защиты кода дает подсказки по методам вскрытия кода, что правилами форума запрещено,
Полностью поддерживаю.
Дальше - только поиск испольнителя. И так тема имеет уже больше сообщений. чем темы в основной ветке. Болтуны! :)
 
ZVI, это полезная инфа (чел.потратит 8 тыс, а потом будет неприятно удивлен) хоть и на грани, как говорилось выше. Тогда, последний пост от меня здесь, а как с обстоит дело с ОО. Просто одним словом плохо, хорошо (уж очень интересно)? Или в личку. Благодарю.
Изменено: bedvit - 05.02.2021 08:34:35
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
ZVI написал:
Добрый день. Чтобы не принять ошибочное решение - использование Unviewable+ VBA Project For Excel имеет смысл, если VBA код хранится в отдельной защищенной надстройке, а книга с данными использует этот VBA-код. После сохранение XLSM (книгу же предполагается периодически сохранять) не вся, но самая интересная часть защиты Unviewable+ с книги слетает, сообщаю это, так как ранее обсуждалось здесь.
Большое спасибо за информацию!  
Страницы: 1
Наверх