Страницы: 1 2 След.
RSS
Защитить проект от распространения
 
Здравствуйте! Нужно максимально надежно защитить проект таким образом чтобы он открывался только на компьютере владельца. Так же нужно максимально защитить макросы.
Защиту сделать на образце. Защита не должна отражаться на скорости макросов.
 
OSA913, здравствуйте.

Сроки? Бюджет?
 
Еще надо чтобы файл привязывался к компьютеру пользователя который его получил автоматически.
Еще на всякий повторюсь, ваш метод защиты нужно показать на образце, затем я под вашим руководством перенесу ее в требуемый файл самостоятельно.
$50, Сроки любые.
 
Понимаю что 100% защиту сделать не возможно, но как то спрятать код можно же? Цена договорная.
 
Цитата
OSA913 написал:
но как то спрятать код можно же
фактически нет
 
Существует ли такой метод, с использованием второго файла, который устанавливается вместе с проектом и проект открывается только при наличии этого файла, иначе проект не откроется (или полностью удаляется из системы), и также если открыть редактор vba в этом проекте, то этот второй файл закрывает проект (или запускает программу удаления проекта)? Это моя фантазия, но вдруг такой метод используется и кто нибудь сможет сделать такую защиту.
 
Вы хотите привязать файл строго к одному компьютеру? Тогда нужно за что-то цепляться, за какие-то серийники. А если для юзера, тогда просто пароль ему дать, но тогда он начнет распространять файл. Можно ещё попытаться сделать привязку к какому-то серверу, и тогда сервер будет давать право работать для определенного IP (решать администратору). Сразу можно будет пресечь. Типа попытки клиент сервера (но нужен сервер). Это были мысли вслух.
 
А можно как то сделать в настройках проекта чтобы редактор vba не вызывался горячими кнопками? Потому что сам проект когда открыт, в нем нет ленты с кнопкой вызова редактора vba, единственный способ войти в редактор - Alt+F11.
 
Цитата
skais675 написал:
Вы хотите привязать файл строго к одному компьютеру?
Да, ну или как еще можно чтобы его не распространяли?
 
Цитата
OSA913 написал:
А можно как то сделать в настройках проекта чтобы редактор vba не вызывался горячими кнопками? Потому что сам проект когда открыт, в нем нет ленты с кнопкой вызова редактора vba, единственный способ войти в редактор - Alt+F11.
Забыл что можно открыть другой файл и от туда вызвать редактор)
 
OSA913
если будет установлен пароль на макросы vba, то никто никуда не залезет. ВЫ должны понять что именно Вы защищаете, данные или код? А то данные и так можно передрать или ещё как-то. Можно защитить сам файл. структуру, листы, ячейки, макросы. От копирования не спастись. Нужно серверное приложение - самый верный путь.
Изменено: skais675 - 09.02.2018 17:29:52
 
С сервером проблематично наверное будет, может быть проще будет найти(или написать) файл с программой, которая закрывает определенный проект когда открыт редактор vba. Но вот можно ли написать его на VB или ...?
 
Давайте перейдем в личку, я Вам писал уже, но смогу только после 21:00 включиться в обсуждения.
Нужно просто понимать что за файл. что за информация и что можно с этим всем сделать, а так одни догадки.
 
Цитата
skais675 написал: если будет установлен пароль на макросы vba, то никто никуда не залезет.
Да ну? :)
 
OSA913, переносите всю основную обработку информации в dll(надо будет с собой таскать) или на сайт(нужен будет доступ к интернету).
Так же проверку пользователя там можно сделать. Вот и вся кухня.
Можно еще повозиться с xlam надстройкой и скормить VBA Protect -  тоже 100% гарантии не будет.
Все это вышеперечисленное за 50$? Ну не знаю, много времени уйдет.
А ставить пароль или не ставить, разницы нет. Сейчас существует много способов разлочить vba проект/посмотреть код.
Попробуйте установить пароль на vba проект и откройте этот файл в Open Office - вы будете удивлены.
 
Цитата
Jungl написал:
переносите всю основную обработку информации в dll
Тоесть все макросы должны находиться в dll?
 
OSA913, в dll находится скомпилированный код, написанный на C++ для COM, макросы находятся в проекте vba.
Писать код на VBA и писать код на C++ - это две большие разницы по трудозатратам :). Вы вряд ли найдёте желающих строить кирпичный завод по цене строительства дома. Поэтому Ваш выбор — ProtectVBA и обфускация (которую никто не отменял), либо кратное увеличение бюджета (точную цену уточнять у C-шников) и dll.
P.S. на заказ не претендую.
Изменено: Irregular Expression - 10.02.2018 08:45:35
 
Так написал же, цена договорная. Почему только на С++ а на VB нельзя разве?
Цитата
Irregular Expression написал:
Ваш выбор — ProtectVBA и обфускация (которую никто не отменял)
На сколько я знаю обфускаторов для VBA нет, или есть? Еще важный для меня вопрос - если код будут в dll это повлияет на скорость макросов?
 
Цитата
OSA913 написал:
если код будут в dll

В dll будет не VBA код а C# или C++ или что то еще. В принципе не обязательно dll, можно и exe. Скорость зависит от реализации. Есть возможность делать долгие вычисления  параллельно в потоках т.е. потенциально быстрее.
Изменено: pharmaprofi - 10.02.2018 15:05:16
 
Какие я вижу недостатки из перечисленных вариантов защиты:
1. Использовать сервер для хранения пароля. Недостаток - защита с vba легко снимается даже без использования спец программы и для этого не нужно перебирать пароль или можно открыть проект в опуенофисе.
2.Перенести код в dll. Недостаток - Если для этого код нужно писать на С++, учитывая что это займет не мало времени, тогда логично будет написать весь проект на этом языке т.к. программа на этом языке должна в разы быстрей работать чем на vba имхо.
3.Перенести код на сайт. Недостаток - При слабом интернет соединении макросы будут медленно работать.
4.Обфускация VBA кода. Недостаток - В режиме отладки с помощью F8 легко можно выковырять желаемый код.
 
Цитата
OSA913 написал:
В режиме отладки с помощью F8 легко можно выковырять желаемый код
Проверяли?
 
Цитата
Юрий М написал:
В режиме отладки с помощью F8 легко можно выковырять желаемый код.
Если весь код на 100 строчек- то да. Если тысячи строк, то слово "легко" я бы убрал. С дугой стороны скорее всего, если это будет делать спец, то возможно ему будет проще свой код написать. Не совсем понятно, что вы хотите защитить? Уникальный алгоритм и логику работы программы или данные в файле?
 
Цитата
Юрий М написал:
Проверяли?
Не проверял, предпалагаяю что желтая строка будет перепрыгивать ненужные строки, иначе если будет бегать и по лишним строкам, тогда время на обработку данных будет увеличено из-за этого.
Цитата
pharmaprofi написал:
Не совсем понятно, что вы хотите защитить? Уникальный алгоритм и логику работы программы или данные в файле?
Ничего особенного и уникального,  хочу спрятать код в коммерческом проекте для защиты от редактирования его или от копирования. Хотелось бы как то решить эту задачу и для возможных будущих проектов.
Изменено: OSA913 - 10.02.2018 17:58:58
 
OSA913,
Цитата
OSA913 написал:
логично будет написать весь проект на этом языке т.к. программа на этом языке должна в разы быстрей работать чем на vba имхо.
так и есть, не надумали еще полностью перейти на .Net'овские языки как СИ или VB. Или все же, вам нужен excel?
Как я вижу картину, если использовать COM в виде подключаемой dll:
представьте, что у вас есть такой макрос на vba:
Код
Sub J()
    Dim result As Long
    result = MathTask(5, 2)
End Sub
Private Function MathTask(ByVal i As Integer, ByVal J As Integer) As Long
    MathTask = i * J ^ 2
End Function
Вроде все просто и понятно, используется функция для вычисления и все, кому надо, могут ее увидеть.

Теперь перенесем вашу функцию в dll'ку на C++, подключим к эксель.
В итоге, у вас будет только такой код:
Код
Sub J()
    Dim native As New MyDLL, result As Long
    result = native(5, 2)
End Sub
Где MyDLL, это ваша подключенная dll'ка, мы передаем ей параметры, в ее теле обрабатывается функция и возвращает результат переменной result.
Т.е. основной код выполнения никто не увидит.

p.s. C++ это нативный код, машинный если проще. Просто так каким либо редактором не прочитать, а если еще скормить обфускатору, то и вообще сложно что либо выудить будет. И скорость обработки куда быстрее будет за счет многопоточности(если ее использовать).
Старался объяснить проще, вам решать.
 
pharmaprofi, извиняюсь, вы отличаете компилируемые языки от интерпретируемых? В dll или exe находится скомпилированный машинный код, извлечь из которого C++ или Delphi, на котором писался файл, можно только реверс-инжинирингом. В компилируемых языках проблемы защиты кода в принципе нет, но писать и сопровождать такой код тяжелее.

OSA913, никогда не слышал, чтобы код для COM модели, используемой VBA, писали на чём-то, кроме C++. Но не исключаю, что и на других языках можно. Для осознания масштаба проблемы, посмотрите как выглядит Hello world для Component object model ;) http://italyanec.livejournal.com/110223.html
Изменено: Irregular Expression - 10.02.2018 18:34:09
 
pharmaprofi, я этого не писал )) Я про Ваш #22.
 
Вариант с dll кажется наиболее привлекательным, и самым трудоемким. Если других вариантов нет, тогда похоже мне на другой форум :( Большое спасибо за разъяснения, теперь знаю что дальше делать с моим проектом.
Изменено: OSA913 - 10.02.2018 20:13:01
 
Цитата
Irregular Expression написал:
извиняюсь, вы отличаете компилируемые языки от интерпретируемых? В dll или exe находится скомпилированный машинный код, извлечь из которого C++ или Delphi, на котором писался файл, можно только реверс-инжинирингом.
Да, отличаю саму малость. Не знаю на счет С++ или Delphi, никогда с ними не работал, из dll или exe которые были написаны на C# - извлечь исходный код достаточно просто. Не совсем понятно, к чему вы это спросили? Я вроде не писал, что извлечь код из скомпилированной dll - "как два пальца".
Цитата
Irregular Expression  никогда не слышал, чтобы код для COM модели, используемой VBA, писали на чём-то, кроме C++. Но не исключаю, что и на других языках можно.
Правильно не исключаете. http://aakinshin.net/ru/blog/post/wrap-cs-in-com


p/s сейчас есть опыт выпуска нескольких коммерческих продуктов. Пришло понимание, что у "бизнеса" нет желания самостоятелно заниматься модернизацией ПО, даже при условии передачи исходного кода. Любая бизнес логика относительно примитивна, и если есть специалист, который способен "взломать" чужое ПО, то он его и написать сможет. Наличие в торрентах кучи взломанного коммерческого софта только подтверждают эту мысль. На мой взгляд стоит заморачиваться только защитой данных.

p/p/s на мой взгляд писать код в продвинутом компиляторе гораздо проще чем в редакторе VBA. Просто на вникание в новую технологию потребуется время и начать придется с "Hello Word!", но оно того стоит.
Изменено: pharmaprofi - 11.02.2018 00:32:58
 
Цитата
Юрий М написал:
harmaprofi , я этого не писал )) Я про Ваш #22.
Сорри, что приписал вам чужие слова...
 
Да это движок форума иногда так глючит )
Страницы: 1 2 След.
Наверх