Xpoint
   [напомнить пароль]

Защита кода

Метки: [без меток]
2007-01-17 06:25:51 [обр] Top manager(0/2)[досье]
как лучше защитить не компелируемый код?
спустя 55 минут [обр] Роман Чемисов(0/327)[досье]
Top manager[досье]
Самый надёжный способ — компилировать его.
Код на каком языке?
спустя 2 минуты [обр] Top manager(0/2)[досье]
Роман Чемисов[досье] :) например PHP или JS
спустя 19 часов [обр] Top manager(0/2)[досье]
Thirteensmay[досье] я прочитал. Думаю что на 100% невозможно. Но сильно усложнить задачу это реально.
спустя 5 часов [обр] Алексей В. Иванов(0/2861)[досье]
Я думаю Вы в правильном направлении, когда говорите о замене имен функций и переменных на автогенерируемые. Ни один нормальный человек не будет разбирать упорно код одного человека, когда способен написать сам за меньшее время.
Ту же технологию (запутывание имён) использует google в своём gmail.
спустя 1 час 6 минут [обр] Thirteensmay(0/157)[досье]

Хотя при таком подходе нетрудно выполнить обратное преобразование - заменить l1rt7g на func_1, а a6ggt1kl на var_1 и т.д. Вычленить основные операторы и конструкции, разнеся их по разным строкам тоже не представляется сложным. Код станет хоть и трудно, но всеже человекопонятным. В общем случае работы на несколько часов/дней, если код оригинальный то оно того стоит. Если нет, то зачем его вообще ломать, проще взять готовый из открытых источников, благо их полно.

Классика систем защиты - использование комплексного подхода. Кроме запутывания и шифрования исходного кода можно еще применить запутывание его логики, это конечно чревато некоторыми проблемами самому разработчику, ну уж у разбирающего их станет вообще на порядок больше. Опять таки про компиляцию уже сказали, некоторые подпрограммы можно скомпилить и вынести в бинарники. Еще защита среды исполнения - отдельные микроконтроллеры (в прошлой теме я писал), хотя это слабо применимо для публичной сети, но всеже вполне возможны какието варианты с организацией специальных сервисов. Вставка ложного кода, общее увеличение объема кода. Это все пассивная защита, а можно еще внедрять активную - проверка чексумм перед дешифрацией, авто (само) модификация кода и пр. Короче, каждый из методов сам по себе не представляет чего то сверх естественного, но их сумма... Тут повторюсь, главное обеспечить положительный баланс между затратами на обеспечение безопасности и ущербом в случае подлома.

спустя 16 часов [обр] Top manager(0/2)[досье]
Thirteensmay[досье] компилить..., хм...
Тогда возникает очень интересная идея - компилить JS код, что бы его юзать в HTML. И работает и защищено :). Возможно ли это?
спустя 1 час 8 минут [обр] Роман Чемисов(0/327)[досье]
Top manager[досье]
Наверно, его можно перевести в какой-нибудь Java-апплет...
спустя 1 минуту [обр] Top manager(0/2)[досье]
Роман Чемисов[досье] это идея (+1)
Но аплеты достаточно долго грузятся и их реально декомпилить в исходный код (именно в исходный, а не в ассемблер)
спустя 1 час [обр] Роман Чемисов(0/327)[досье]
Top manager[досье]
Хм, почему же долго?
По-моему, у них один минус — система безопасности может напугать пользователя ненужными сообщениями.
спустя 3 минуты [обр] Top manager(0/2)[досье]
Роман Чемисов[досье] может и так, но это уже другая тема :)
Что же до минуса - согласен
спустя 57 минут [обр] Thirteensmay(0/157)[досье]
Компилить интерфейсный JS, т.е. код работы с интерфейсом типа obj.style.color = red; obj.value = value; смысла особого не имеет, а расчетный код, например алгоритм вычисления value, ну допустим вычисления какого нибудь приватного рейтинга, т.е. как раз то что желательно скрыть, часто можно вынести на сервер и обращаться к нему например AJAX'ом. В случае особой паранойи AJAX обработчик можно сделать на C и закомпилить, к тому же еще и быстро получится. В некоторых случаях тот же ActiveX (COM) можно использовать, будут DLL'ки у клиента. А что касается предупреждений системы безопасности то если оно клиенту реально нужно то это мелочи...
спустя 26 минут [обр] Top manager(0/2)[досье]
Thirteensmay[досье] т.е. можно создать DLL, а потом её подгрузить?
А как например видишь способ подгрузки DLL?
спустя 59 минут [обр] Thirteensmay(0/157)[досье]
Ну, тут не одна DLL получается а инсталляционный экзешник, он содержит в себе DLL'ку, код для ее извлечения и регистрации. Т.е. при его запуске из тела извлекается DLL'ка и кладется на винт, после чего регистрируется как обычный COM компонент и процедуры в DLL'ке становятся доступны через ActiveX. Что же касается JS'а то он при запуске соответственно пытается создать этот ActiveX (по известному CLSID) если у него это не получается (DLL не установлена), то идет обычный редирект на инсталляционный экзешник с инструкцией что мол на предупреждение системы безопасности о запуске этого бинарника надо согласиться.
спустя 17 минут [обр] Top manager(0/2)[досье]
Thirteensmay[досье] ясно. А если речь идёт о сайте, с каким-то навороченым JS и которым не охота делится...
спустя 27 минут [обр] Thirteensmay(0/157)[досье]
Ну вот все выше предложенные методы и можно использовать, конечно в рамках их применяемости к конкретной задаче. Если вариант с ключами/компиляцией/активиксами/DLL/Java-апплетами напрягает то конечно уже так хорошо как хотелось бы не получится, но тоже остаются варианты - и предложенное Вами преобразование кода, и его шифрование, и всевозможные проверки/блокировки в коде, наилучшее пожалуй - вынос обработки в серверные скрипты (AJAX), хотя тут конечно придется значительно перерабатывать готовый JS, да и не всегда это применимо, например по скоростным соображениям.
спустя 8 минут [обр] Thirteensmay(0/157)[досье]
А вот так чтобы раз... и оп-ля получите хороший результат просто так практически без напрягов - не бывает (ну или по крайней мере я не знаю такого решения). Оно ведь все изначально задумывалось как публичная технология, задача была обратна защите.
спустя 15 минут [обр] Top manager(0/2)[досье]
Thirteensmay[досье] ясно :)
А что если dll будет находится на серваке, как её подключить и юзать класс который в ней?...
спустя 3 часа 2 минуты [обр] Thirteensmay(0/157)[досье]
Практически не пробовал, но в принципе ничто Вам не запрещает унаследовать в JS через ActiveX какой нибудь стандартный виндовый компонент работы по сетке, например RPC или сокеты, думаю должны быть, ну и тогда уж через него обращайтесь к серваку как угодно. Win IE only ессно. Скорость кстати будет приличной, конечно если сетка нормальная.
спустя 2 дня 14 часов [обр] Top manager(0/2)[досье]
Thirteensmay[досье] даааааа, это может и хорошая идея, но жаль не очень то универсальная, я про кроссброузерность.
Powered by POEM™ Engine Copyright © 2002-2005