bedvit: Кому высылать шифратор и что с ним делать?
это отдельная программа (exe-шник, например или книга Excel) которая также запрашивает текст макроса и вшивает его в зашифрованном виде в книгу. Также вшивает в книгу дешифратор с заданным ключом, который сможет выполнить код
Пока писал, подумал, что обфускация на данном этапе готовности инструмента гораздо проще — код хоть и виден, но не пригоден для анализа, а выполняется без проблем … Может реально подумаешь в сторону крутого обфускатора или использовать имеющиеся?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал: вшивает в книгу дешифратор с заданным ключом, который сможет выполнить код
как защищен этот дештфратор? На каком языке написан? На vba? я как конечный пользователь смотрю его код и спокойно расшифровываю нужный участок закрытого кода. Обсфукатор на порядок ниже по защите чем данное решение, здесь код зашифрован, а не заменены именна переменных. Которые все равно легко парсятся в итоге, хоть чуть сложнее, чем с открытым кодом.
Коллеги, скорее всего будет улучшения по алгоритмам шифрования и возможно здесь же внесу большие изменения по формату сохранения пользовательских данных. Как будут готовы обновления, выложу новую версию+версию с мин. набором команд.
bedvit, приветствую и спасибо! Хоть бы в группе написал… Я вспомнил вот какую идею: у меня много функций по обработке значений (очистка, удалить слева-справа, взять из разделителей и так далее) Чтобы применить эти функции к диапазону мне приходится каждый раз писать один и тот же блок кода, по получению массивов из каждой видимой области диапазона и далее перебор каждого массива по столбцам/строкам с заменой значений на результат функции. Было бы очень удобно иметь функцию с 2мя параметрами (диапазон, имя функции для обработки каждого значения). Сейчас это возможно только через Application.Run "Name", но скорость при этом сильно теряется, а также результат функции не получить (только менять переданной или менять публичную переменную). Возможно, тебя это заинтересует…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал: Было бы очень удобно иметь функцию с 2мя параметрами (диапазон, имя функции для обработки каждого значения). Сейчас это возможно только через Application.Run "Name",
так сделай такую функцию. Почему только через Application.Run? Открой новую тему, там обсудим.
По теме: выяснилась интересная особенность - выполнять макросы из библиотеки можно и в .xlsx, главное, что бы они были разрешены и открыт доступ к объектной модели проектов VBA.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
04/05/2022 - v.3.1.0.0(beta) - настраиваемое меню Для спецов, которым не нужен весь функционал xll в главном и контекстном меню - сделал возможность настраивать необходимый функционал персонально. Настройки хранятся в .bin (там же, где и код VBA). Посему, можно настроить видимость команд, загрузить VBA-код, переслать заказчику, и при открытии заказчиком .bin - будет видимость только нужных команд (т.е. теперь не нужна отдельная/минимальная версия библиотеки, всё можно сделать в стандартной, с нормальным дальнейшим обновлением функционала)
з.ы. у всех команд есть всплывающие подсказки, в.ч. и в настройках меню.
Прошу тестировать. Критика, предложения и пожелания - принимаются.
04/05/2022 - v.3.1.0.0 - релиз Оптимизировал отрисовку меню при удалении и добавлении команд. Добавил возможность подключить все и отключить все кнопкой. Обновил файл с видео. Залил новые версии библиотек/надстроек на сайт.
bedvit: теперь не нужна отдельная/минимальная версия библиотеки
вот этот момент прикольно обошёл)) хитро))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
04/05/2022 - v.3.1.0.0 - релиз Оптимизировал отрисовку меню при удалении и добавлении команд. Добавил возможность подключить все и отключить все кнопкой. Обновил файл с видео. Залил новые версии библиотек/надстроек на сайт.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
1.Изменился алгоритм работы библиотеки/надстройки с пользовательскими сохранениями.
Теперь работа с .bin выглядит так же, как работа с файлами Excel, т.е. при открытии файла .bin - все настройки загружаются из него и дальнейшие изменения сохраняются в нем (в текущем, активном файле .bin). В целях определение какой файл открыт - выведена информация в меню.
Ранее все настройки сохранялись в базовом BedvitXLL.bin, и могли только экспортироватся в другой .bin (Сохранить как...) или загружатся в базовое сохранение (Открыть), т.е. ранее работа библиотеки/надстройки всегда была с базовым сохранением.
Добавил некоторый функционал по хешированию и блочному шифрованию AES 128bit (выложил на форуме). В связи с чем возник вопрос по теме топа: есть ли целесообразность внести новый функционал - выполнение кода по вводу пароля? (по умолчанию, можно не задавать). Т.е. ранее был пароль только на просмотр, теперь и на выполнение. Кто-то уже пользоватся VBA макросами через этот инструмент? Соображения какие: выполнить код и просмотреть это два разных механизма. Можно хранить хеш для двух механизмов, первый позволяет посмотреть полностью код, второй - только выполнить. Т.е. разделить сервер и клиент (разработчик и пользователь). В некоторой степени это логично.
Плюсом, если у кого-то есть интересные идеи, по хранению и использованию зашифрованной информации, использования алгоритмов шифрования с интеграцией в Excel, можно обсудить, и, возможно, реализовать для тестирования.
Всем привет. Хочу послушать мнение форумчан, специалистов и кто "в теме". У меня остался недописанный модуль для XLL (на С++) и я пока не решил, стоит ли тратить время на его реализацию. И ваше мнение возможно меня приведет к какому-либо решению. Эта реализация изолированного выполнения vba кода (от просмотра), т.е. расширенная версия выложенного ранее решения. В ней предполагается работа и UDF и процедур/функций VBA.
Концепция в следующем: 1.В xll храниться файл xlsb, с паролем на файл. Есть пароль на проект vba, его знает только владелец, который загрузил файл (файл может загрузить любой пользователь) и передать сохранение XLL любому другому человеку, у которого есть XLL. 2.Далее, при нажатии на кнопку в форме XLL - выгружается файл из ресурсов и запускается в отдельном процессе, но в той же сессии Excel, что и XLL. XLL знает пароль(владелец сообщил) поэтому открывает файл без проблем.
В данном случае, можно запустить udf и функции/процедуры vba из этого файла в этой сессии Excel, в любом файле. Но посмотреть нельзя, есть же пароль на проект.
Теперь вопрос - насколько жизнеспособна эта схема? Копировать файл в папке бесполезно, он запаролен. Можно "Сохранить как.." программно? Модуль закрыт, значит из другого модуля? У меня в проектах не активна "Сохранить как..." когда модуль с паролем. И проект нельзя выгрузить или перенести если он на пароле. Поэтому у меня нет ответа на этот вопрос. Кто знает? Где здесь слабые стороны? Как можно глянуть код VBA?
Есть ли вообще в этом нужность, или это единичные случаи, когда такой инструмент будет нужен, даже если схема рабочая?
p.s. насколько я понимаю данное обсуждения в рамках правил (вопрос админам)? Мы же обсуждаем возможные бреши предложенной схемы и целесообразность её реализации.
bedvit, добрый день. С Вашим решением в XLL я не знаком, но я так понимаю, что речь идет о сокрытии кода VBA от пользователя и его выполнении?
Add:
Файл будет запаролен на открытие (то есть зашифрован алгоритмом AES от Microsoft)?
При этом, во время работы в текущей сессии приложения Excel, эта защита будет снята, а защита кода будет в этот момент только в виде пароля на проект VBA?
Если всё так, то пароль на проекте ломается за "секунду", поэтому смысл всей манипуляции отпадает!