Чтобы защитить код макроса - надо его удалить

Программирование на Visual Basic for Applications
aub2000
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 27.10.2009 (Вт) 10:44

Чтобы защитить код макроса - надо его удалить

Сообщение aub2000 » 27.10.2009 (Вт) 10:52

Есть необходимость закрыть в шаблоне исходные тексты макросов от доступа.
Парольная защита не подходит т.к. в сети есть сайты на которых за 20 долларов быстро ломают пароль не занимаясь перебором.

Возникла идея удалить исходные тексты из файла WORD не пользуясь редактором VBA, т.е. внешними программами, может даже текстовым редактором, с сохранением откомпилированного кода, который и должен выполняться (перекомпиляция исключается)

Прошу откликнуться если кто пробовал осуществить что-то подобное или имееет мысли на эту тему.

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: Чтобы защитить код макроса - надо его удалить

Сообщение viter.alex » 27.10.2009 (Вт) 11:09

Сделай код нечитаемым, но работоспособным. Есть такое понятие, [url=http://ru.wikipedia.org/wiki/Обфускация]обфускация[/url] называется. Код после нее выглядит примерно так:
Код: Выделить всё
Dim aTCuT9ClWl As String
Dim aNlAj8rdXS As Integer, apW18qC45F As Integer
Dim azUJBccwzw As Integer, aT8qtK66Su() As String
Dim anAMoQKLec As Document, a872GOCjNL As Document
Dim aDu1KuIb2B As Single

И остается совершенно работоспособным. Я как-то наткнулся на такие макросы: пароль взломал, текст макроса увидел, а вот понять как он действует, так и не смог.
Т.е. тебе нужно сделать копию твоего файла, запутать в ней текст, запаролить и отдать. Надежнее не придумаешь для VBA
Лучше день потерять — потом за пять минут долететь!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Чтобы защитить код макроса - надо его удалить

Сообщение Antonariy » 27.10.2009 (Вт) 11:10

в сети есть сайты на которых за 20 долларов быстро ломают пароль не занимаясь перебором
В сети есть программы, которые делают это бесплатно.
с сохранением откомпилированного кода
В VBA код не компилируется.
имееет мысли
Не заниматься ерундой.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Чтобы защитить код макроса - надо его удалить

Сообщение Antonariy » 27.10.2009 (Вт) 11:14

Я как-то наткнулся на такие макросы: пароль взломал, текст макроса увидел, а вот понять как он действует, так и не смог.
Не с того начал. Сначала находишь переменные-счетчики и волшебным сочетанием ctrl+h заменяешь на x или y по вкусу. Количество шлака сокращается на треть сразу. Аналогично даешь осмысленные названия другим переменным. После этого все становится понятно само собой.
Лучший способ понять что-то самому — объяснить это другому.

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: Чтобы защитить код макроса - надо его удалить

Сообщение viter.alex » 27.10.2009 (Вт) 11:21

Прошу прощения за offtop, но там этих переменных море. Если хочешь, я тебе дам эти модули, потренируешься. Тут в своем коде не разберешься через полгода, если не прокомментировал, а то — в чужом
Лучше день потерять — потом за пять минут долететь!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Чтобы защитить код макроса - надо его удалить

Сообщение Antonariy » 27.10.2009 (Вт) 11:51

Давай. Тренировался я на js, а там можно такую кашу намешать, что VBA нервно курит в сторонке.
Лучший способ понять что-то самому — объяснить это другому.

aub2000
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 27.10.2009 (Вт) 10:44

Re: Чтобы защитить код макроса - надо его удалить

Сообщение aub2000 » 27.10.2009 (Вт) 12:12

viter.alex писал(а):Сделай код нечитаемым, но работоспособным. Код после нее выглядит примерно так:
[code]Dim aTCuT9ClWl As String
Dim aNlAj8rdXS As Integer, apW18qC45F As Integer
И остается совершенно работоспособным. Я как-то наткнулся на такие макросы: пароль взломал, текст макроса увидел, а вот понять как он действует, так и не смог.
Т.е. тебе нужно сделать копию твоего файла, запутать в ней текст, запаролить и отдать. Надежнее не придумаешь для VBA


Зачем мне нужно защитить код? Не затем чтобы его никто не понял, а затем чтобы не дать возможность его изменить, чтобы обойти встроенную защиту. Для этого не нужно понимать весь код достаточно локализовать место и изменить 1-2 сроки кода.
Поэтому допускать к коду, даже в таком виде никого не хочется.

aub2000
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 27.10.2009 (Вт) 10:44

Re: Чтобы защитить код макроса - надо его удалить

Сообщение aub2000 » 27.10.2009 (Вт) 12:35

Antonariy писал(а):
В VBA код не компилируется.


Цитата из статьи по структуре файлов Word:
"... внутри документа MS Word одновременно могут присутствовать стразу ТРИ формы представления одного и того же макроса.
Во-первых, это исходный текст макроса, так называемый s-code. Он не виден "на просвет" внутри файла, т.к. сжат алгоритмом LZNT1.
Во-вторых, это результ компиляции текстового исходника в двоичный образ - так называемый псевдокод (или p-code). Он может исполняться виртуальной машиной MS Word.
Наконец, это подготовленный к исполнению exe-code (или ex- code, или executable code). Он присутствует не всегда, но если присутствует, то исполняется виртуальной машиной MS Word именно он".

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Чтобы защитить код макроса - надо его удалить

Сообщение Денис » 27.10.2009 (Вт) 13:55

Есть предложение.
Скомпилировать библиотеки на VB, в которых будет защищенный код, возвращающий результаты вычислений и т.п. Эти библиотеки подключать к VBA-проектам и юзать.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

aub2000
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 27.10.2009 (Вт) 10:44

Re: Чтобы защитить код макроса - надо его удалить

Сообщение aub2000 » 27.10.2009 (Вт) 14:26

Денис писал(а):Есть предложение.
Скомпилировать библиотеки на VB. Эти библиотеки подключать к VBA-проектам и юзать.


Если не прокатит с удалением, то придется так и сделать.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Чтобы защитить код макроса - надо его удалить

Сообщение alibek » 27.10.2009 (Вт) 14:39

Думаю, что не прокатит.
И подозреваю, что в статья ошибается в том, что в документе может храниться исполняемый код.
Lasciate ogni speranza, voi ch'entrate.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Чтобы защитить код макроса - надо его удалить

Сообщение Денис » 27.10.2009 (Вт) 14:48

И я подозреваю, что даже если код и хранится, то удаление текста программы Word воспримет как нарушение целостности документа и затрет "устаревший", по его мнению, компилят.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

    TopList