Страницы: 1 2 След.
RSS
Программно запутать код.
 
Добрый день!  
Подскажите, есть ли специальные программы для запутывания кода VBA, чтобы его было в последующем трудно разобрать?
 
Поищите по "обфускация"
 
Лично мне проще новый написать, чем разбираться в чужом коде :)  
Бывает что в своем через полгода не разобраться :)
Спасибо
 
Да проще закрыть его (код).
 
Зачем путать, можно так написать,что не разобраться...
 
Ну, у некоторых знатоков тут вообще такой стиль прогрммирования:  
- без Option Explicit  
- без объявления переменных  
- без комментариев  
- с однобуквенными именами переменных  
При чём этим грешат на самом деле знатоки, без всяких кавычек.  
И их коды, действительно, чаще всего очень интересные и отлично работают. Но эти коды обычно "заточены" на узко конкретную задачу, а разобраться в их работе при таком стиле программирования чтобы приспособить к чуть измененным исходным данным зачастую достаточно трудно.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=R Dmitry}{date=28.06.2011 01:46}{thema=}{post}Лично мне проще новый написать, чем разбираться в чужом коде :)  
Бывает что в своем через полгода не разобраться :){/post}{/quote}как правило, да)  
 
to Юрий М  
"Да проще закрыть его (код)."  
Если не ошибаюсь, пароли MS ломаются на раз два)  
 
to Alex_ST  
Ну, у некоторых знатоков тут вообще такой стиль прогрммирования:  
- без Option Explicit  
- без объявления переменных  
- без комментариев  
- с однобуквенными именами переменных  
знатоком себя не считаю, но определенно узнаю) Все вышеперечисленное, кроме "без объявления переменных".  
"без комментариев" - коды "на форум" для решения определенной задачи, как правило, пишутся на скорую руку, посему комментировать нет времени.  
"с однобуквенными именами переменных" - грешу) Но это как правило счетчики.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Можно ещё пытаться втиснуть по максимуму всё в одну строку. Всречал как-то очень квадратный с виду код.  
Например так - тут выше этот код есть в нормальном виде, но можно записать и так (это так слегка уплотнил, да и код простой):  
 
Option Explicit  
 
Sub Zapolnitj()  
   Dim iArr: ReDim a(1 To 28, 1 To 22): ReDim b(1 To 30, 1 To 22): ReDim c(1 To 30, 1 To 22): Dim aa&, bb&, cc&, i&  
   iArr = Selection.Value  
   For i = 1 To UBound(iArr)  
       Select Case i  
       Case 1 To 28  
           aa = aa + 1: a(aa, 1) = iArr(i, 1): a(aa, 2) = iArr(i, 2): a(aa, 13) = iArr(i, 4): a(aa, 19) = iArr(i, 5): a(aa, 21) = iArr(i, 6)  
       Case 29 To 58  
           bb = bb + 1: b(bb, 1) = iArr(i, 1): b(bb, 2) = iArr(i, 2): b(bb, 13) = iArr(i, 4): b(bb, 19) = iArr(i, 5): b(bb, 21) = iArr(i, 6)  
       Case 59 To 88  
           cc = cc + 1: c(cc, 1) = iArr(i, 1): c(cc, 2) = iArr(i, 2): c(cc, 13) = iArr(i, 4): c(cc, 19) = iArr(i, 5): c(cc, 21) = iArr(i, 6)  
       End Select  
   Next  
   With ThisWorkbook.Sheets(1): .[c2:x2].Resize(28) = a: .[c40:x40].Resize(30) = b: .[c76:x76].Resize(30) = c: End With
End Sub  
 
А меня как раз многобуквенные переменные напрягают - код читать сложнее...
 
{quote}{login=Alex_ST}{date=28.06.2011 08:51}{thema=}{post}Ну, у некоторых знатоков тут вообще такой стиль прогрммирования:  
- без Option Explicit  
- без объявления переменных  
- без комментариев  
- с однобуквенными именами переменных  
При чём этим грешат на самом деле знатоки, без всяких кавычек.  
И их коды, действительно, чаще всего очень интересные и отлично работают. Но эти коды обычно "заточены" на узко конкретную задачу, а разобраться в их работе при таком стиле программирования чтобы приспособить к чуть измененным исходным данным зачастую достаточно трудно.{/post}{/quote}  
Алексей, скорее всего все вышеперечисленные особенности написания кода, связаны прежде всего с тем, что код пишется быстро и при этом абсолютно бесплатно.  
Зачастую оформление коментариев, "понимаемые" названия переменных, визуаьное оформление и т.д. отнимает  больше времени, чем написание основного алгоритма.  
Я думаю в комерческих разработках все абсолютно выглядит наглядно и правильно, с коментариями, я по крайней мере всегда стараюсь коментировать блоки кода, за что они отвечают.  
 
Чем Excel отличается от автомобиля? Да ни чем.  
Хотите тюнинг, платите деньги, хотите совет как это сделать - добро пожаловать на форум.  
С уважением Дмитрий  
ps. мое личное мнение может не совпадать с Вашим.
Спасибо
 
Вот и получается, что{quote}{login=R Dmitry}{date=28.06.2011 01:46}{thema=}{post}… Бывает что в своем через полгода не разобраться :){/post}{/quote}
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Не Леш, я свой код и через 10 лет понимаю. И тоже не пишу комментов, не люблю длинные имена переменных. Понимание требует времени, но тренирует способность декодировать на лету. А обьявление переменных - это просто хороший тон в программировании. На всех языках, которые поддерживают объявление переменных. К тому же способствует экономии памяти и ресурсов компа.Сейчас это уже не так актуально, а 10-15 лет назад каждый байт считал. Вспомнилось - в 93 году в моем самопальном компе было 128кб оперативки и это было очень круто! 64 считалось много:-)
Я сам - дурнее всякого примера! ...
 
{quote}{login=nerv}{date=28.06.2011 09:17}{thema=Re: }{post}{quote}{login=R Dmitry}{date=28.06.2011 01:46}{thema=}{post}{/post}{/quote}to Юрий М "Да проще закрыть его (код)."  
Если не ошибаюсь, пароли MS ломаются на раз два){/post}{/quote}  
А я не говорил, что это будет MS-пароль.
 
Это, никак, "Орион-128" или "АТАРI" на наикрутейшем проце Z80 был?  
Конечно, по сравнению с "Радио-РК86" и "Синклер/Ленинград-64/48" это было жутко круто!  
А по поводу стиля программирования, так это кто к чесу привык.  
Я начинал своё программирование с контроллера температуры муфельной печки на процессоре К580ИК80 и писАл на Ассемблере (на магнитофонную ленту, конечно).  
А там без комментариев и осмысленных имён процедур, переменных и меток было совсем никуда... Тем более, что программировал я в лаборатории один, а остальные паяли железо. Значит, и поддерживать/дорабатывать софт для заказчика обязан был я. Вот и привык писать программы так, чтобы потом можно было быстро разобраться.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
to Юрий М  
 
почти был уверен, что на этом попадусь)  
 
Просветите, как?  
Смею предположить, что подписью...
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Есть программа такая - Protect VBA.  
Конечно, всё можно сломать - вопрос только времени и целесообразности.
 
Вот оно:  
http://www.planetaexcel.ru/forum.php?thread_id=16625  
Но последний комментарий не радует...  
Кроме того, я от неё отказался по другой причине - моя программа вела себя непредсказуемо на разных версиях Экселя у пользователей, хотя у меня на обоих версиях две моих версии работали отлично.
 
{quote}{login=Hugo}{date=28.06.2011 12:48}{thema=}{post}Но последний комментарий не радует...{/post}{/quote}  
Игорь, так это как раз то - "в диковатом виде" :-)
 
У меня ОО нет, так что вид оценить не могу :)  
Я понял, что код разобрать можно.  
Или там вид настолько "диковатый", что практически код не понять?
 
ОО тоже нет... В своё время Н. Павлов в блоге показывал результаты работы макрорекордера в этом ОО - жесть!
 
{quote}{login=Юрий М}{date=28.06.2011 01:06}{thema=}{post}ОО тоже нет... В своё время Н. Павлов в блоге показывал результаты работы макрорекордера в этом ОО - жесть!{/post}{/quote}на данный момент ОО правильно писать так: О_О  
: )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
У меня нет такой кнопки.
 
{quote}{login=nerv}{date=28.06.2011 12:38}{thema=}{post}to Юрий М  
 
почти был уверен, что на этом попадусь)  
 
Просветите, как?  
Смею предположить, что подписью...{/post}{/quote}  
 
мона еще вот этой программкой DoneEx  
http://doneex.com/  
если кто готов протестировать откомпилированный файл, то могу прислать на почту,  пробуйте :) Программку купил и хотелось бы знать насколько надежно она защищает код.    
выложил бы сюда, да размер минимально что получается - 535 кб
 
{quote}{login=vveco}{date=28.06.2011 08:43}{thema=Re: }{post}{quote}{login=nerv}{date=28.06.2011 12:38}{thema=}{post}{/post}{/quote}  
мона еще вот этой программкой DoneEx  
http://doneex.com/  
если кто готов протестировать откомпилированный файл, то могу прислать на почту,  пробуйте :) Программку купил и хотелось бы знать насколько надежно она защищает код.    
выложил бы сюда, да размер минимально что получается - 535 кб{/post}{/quote}vveco, этот сайт не хакер.ру. Тут не ломают сторонние программы. Не скажу за всех, но от меня лично и большинства моих друзей-программистов - мы  на подобных сайтах стараемся распространять знания об Эксель, а не способствуем скрытию таких знаний от широкого круга пользователей.    
П.С. Если Вы грамотный программист, Вы найдете свой, нигде еще не описанный способ защиты(но и его при желании сломать - не проблема), если нет - то зачем Вам это вообще? Философия в том, что на любого лучшего, что-то строящего, всегда найдется просто хороший ломающий. Ломать - не строить.
Я сам - дурнее всякого примера! ...
 
Беда в том, что я, увы, не грамотный программист.. но уверен, что скрыть код от не санкционированного стороннего использования непокобелимое право любого даже не вполне квалифицированного его автора. И это никак не связано с той огромной работой, проводимой сообществом на этом сайте в области распространения знаний об Эксель в массы!  
Программка на которую я дал ссылку - это не ломалка - это средство защиты формул и кода. Делает это она переводом файла xls в exe. и много разных опций - ограничение по времени, привязка к компьютеру и пр. Думаю, у программистов часто возникает потребность скрыть код в коммерческих проектах и, возможно, они знают как это сделать и в экселе тоже. я, лично, - не знаю и в моем случае эта программка - решение!    
р.с. автор темы, кажется, это и имел в виду - скрыть код :)
 
кстати, я не предлагал сломать DoneEx. Чужой труд я уважаю. Предложил только протестировать результат работы программы - скомпилированный xls на предмет того, насколько надежно он защищен от вскрытия кода..
 
vveco, я полагаю, что недоразумение произошло из-за того, что Сергею (KukLP), да и мне, например, неизвестно - ВАШ ли труд скрыт этой программой, и ВАШ ли файл требуется открыть, сломав защиту. Если разговор о том, что требуется просто открыть защищённый файл, не высылая Вам его обратно - совсем другое дело. Но я сильно сомневаюсь, что кто-то захочет этим заниматься. Впрочем,...  
P.S. Вы правы - автор темы интересовался именно "шифровкой" кода, а не "дешифровкой" :-)
 
{quote}{login=vveco}{date=28.06.2011 08:43}{thema=Re: }{post}  
мона еще вот этой программкой DoneEx  
http://doneex.com/  
если кто готов протестировать откомпилированный файл, то могу прислать на почту,  пробуйте :) Программку купил и хотелось бы знать насколько надежно она защищает код.    
выложил бы сюда, да размер минимально что получается - 535 кб{/post}{/quote}  
 
А не поделитесь ключиком для программы?  
Тоже бы хотелось делать exe из xls - видел, как работает программа, мне понравилось.  
но вот на покупку денег нет)
 
Если бы Вы написали что-то стоящее, сверх гениальное и поделились со всеми... : ) А то все шифровать да шифровать. Применение шифрования (лично я) вижу преимущественно к данным (базам данных), а не самому алгоритму.  
Хотя, если смотреть с обратной стороны, и не защищать код вовсе, узнать алгоритм шифрования становиться достаточно легко. В рамках Excel, ограничиваюсь элементарной защитой VBA проекта паролем и в большем смысла не вижу.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
А я не наседал, наоборот - спасал от Сергея :-)
 
Ох и Юра!:-) Дим, мой друг, (с дружественного форума, ты его тоже знаешь) предлагает такую реализацию защиты. Мне предлагают попробовать сломать защиту.  
1) Мне что, заняться больше нечем?  
2) Я могу написать программу не хуже той, что защищена.  
3) Я не такой гад, чтоб написать - программа моего друга(а кто знает, что он мой друг?) фигня.  
4) Если пользователь настолько грамотен, чтоб обойти штатную защиту Экса(тут я согласен с nerv), он сам напишет не хуже ТС. А уж пошариться по сайтам и погуглить...  
П.С. Дим, если есть время и вдохновение - ради Бога, ломай! И вспомни, вопросы о неломаемой защите задают почти всегда новички, со скрипом освоившие ВПР, или(и) Суммпроизв:-) Ну хотца им защитить свои нетленные шедевры...
Я сам - дурнее всякого примера! ...
Страницы: 1 2 След.
Читают тему
Наверх
Loading...