Просмотр полной версии : Закрытие части исходного кода от декомпиляции
Добрый день!
Я хочу выпустить свой проект, но сделать его не полностью Open-source. То есть мне нужно основную часть своего скрипта каким-либо образом защитить от декомпиляции, но при этом оставить возможность менять графический дизайн, расположение клипов и несколько массивов данных для пользователя.
Можно ли сделать отдельную библиотеку, которая подключалась бы к _root моего .fla файла? Альтернативно, может быть можно поместить код в пустой swf файл, защитить его обфускатором и подгружать в искомый файл?
так коды и классы запихни в swc
Так, это уже интересно. А можно поподробнее про это?
http://as3coder.blogspot.com/2009/12/swc-flashdevelop.html
принцип с IDE я думаю тоже будет понятен)
А для ActionScript 2 так сработает?
ну если у тебя отдельные классы для проекта, то сработает
Классов нет. Есть скрипт на сцене в первом кадре. Там несколько десятков функций. Большую часть из них мне нужно вынести в отдельную библиотеку и оставить только самое основное для общего доступа.
caseyryan
07.01.2013, 12:45
так коды и классы запихни в swc
И что это даст? SWC библиотека так же легко декомпилируется.
Вопрос звучит как:
часть своего скрипта каким-либо образом защитить от декомпиляции
Этого сделать нельзя. Можно лишь до определенной степени усложнить задачу взломщику. Но кому надо все равно вскроют.
Другой вопрос, а кому это вообще нужно? Ради нескольких десятков функций (причем, что-то мне подсказывает, наверняка не самых сложных), вряд ли кто-то будет заморачиваться.
И что это даст? SWC библиотека так же легко декомпилируется.
ну и декомпилируй ее на здоровье если тебе так надо, дело автора защитить свою работу
caseyryan
07.01.2013, 15:25
ну и декомпилируй ее на здоровье если тебе так надо, дело автора защитить свою работу
Защитить от декомпиляции, вообще-то. А это не защита.
кому сегодня может понадобиться AS1\AS2 код, "тем более скрипта в первом кадре"?
В качестве сложного ассета для игрового движка - понадобится. Этот файл является частью сложной разработки, а я не хочу публиковать разработку полностью. Мне хотелось бы сделать её доступной для желающих, но при этом оставить для изменений только базовые части. Пожалуйста, давайте без тролололо-мода, ок?
Меня интересует ответ на вопрос. Так как же это всё сделать? Может быть поместить скрипт в отдельный мувиклип, который потом экспортировать в .swf файл и защитить обфускатором? А потом ведь этот .swf файл можно загружать в отдельный мувиклип-контейнер с помощью loadMovie, и точно так же обращаться ко всем функциям.
Кстати, не знаю, как насчёт "рано или поздно", но после программы SWF Protector на определённый настройках, исходный код AS2 превращается в нечитабельный набор байт-кода. Я сомневаюсь, что декомпиляция вообще будет возможна.
Кстати, не знаю, как насчёт "рано или поздно", но после программы SWF Protector на определённый настройках, исходный код AS2 превращается в нечитабельный набор байт-кода. Я сомневаюсь, что декомпиляция вообще будет возможна.
увы, но даже после SWF Protector код восстановить не составит большого труда
Этот файл является частью сложной разработки, а я не хочу публиковать разработку полностью
Откуда такая уверенность, что Вы сможете её продать, эту разработку?
Всмысле каковы шансы, что на вашей "разработке" начнут делать деньги? Дык наоборот хорошо, если начнут - если Вы это засечёте - сможете стрести с них _реальные_ деньги. А если Вася Пупкин будет использовать для своей странички - дык с него и взять нечего - зато реклама.
А сколько открытого и никому ненужного бесплатного кода лежит на github и googlecode, а Вы будете тратить время на защиту своей супер-разработки.
По существу: делайте отдельную swf-ку, обрабатывайте обфускатором и подгружайте.
P.S. Да, код часто защищают и часто это надо (та же альтернатива 3d была закрытой), но насколько оно именно Вам нужно?
Откуда такая уверенность, что Вы сможете её продать, эту разработку?
Всмысле каковы шансы, что на вашей "разработке" начнут делать деньги? Дык наоборот хорошо, если начнут - если Вы это засечёте - сможете стрести с них _реальные_ деньги. А если Вася Пупкин будет использовать для своей странички - дык с него и взять нечего - зато реклама.
Это, конечно, хорошая мысль. Дело в том, что так, как я программирую движок, могут очень немногие. Сейчас, с возможностью получить коммерческую лицензию, многие задаются целью сделать "начальное наполнение" в игре и найти инвестора, который, взглянув на это наполнение, выдал бы крупную сумму денег фирме-разработчику. Естественно, что сделать это наполнение может далеко не каждый, и поэтому люди всячески ухищряются, чтобы заполучить исходники. Такие проекты редки, они стоят больших денег.
Может быть это и вариант - открыть свою разработку в паблик, со всеми исходниками, и при этом открыть лицензирование для коммерческого использования. И возможно, я и правда смогу отсудить _реальные_ деньги с тех, кто использует мою разработку в коммерческих целях и без моего согласия. Но я боюсь одного: того, что каждый просто посмотрит на исходники, поймёт как оно делается, и станет лепить свои версии того же самого, при этом выдавая это за свою разработку. Моя же работа на пару лет сразу перестанет быть уникальной, технология и реализация перестанет быть секретом. А про автора сразу все забудут. Я уже с этим столкнулся один раз, всё так и было. Весьма неприятно.
Но я боюсь одного: того, что каждый просто посмотрит на исходники, поймёт как оно делается, и станет лепить свои версии того же самого, при этом выдавая это за свою разработку. Моя же работа на пару лет сразу перестанет быть уникальной, технология и реализация перестанет быть секретом. А про автора сразу все забудут. Я уже с этим столкнулся один раз, всё так и было. Весьма неприятно.
Ну раз сталкивались, значит понимаете что делаете лучше меня.
Мы за всю историю купили только одну либу (для unity3d). Просто потому что стоит не дорого, а если публиковать проект скрыть использование оной сложно.
Один раз использовали купленную заказчиком as3-либу - но это был кошмар - надо было угадать как она реализована, чтобы обойти баги и придумать обходные пути - код то закрыть - благо проект мелкий был.
По остальному в as3-разработке:
- платная либа? - пусть идёт лесом - всё равно лезть внутрь с напильником может понадобится, а бесплатные открытые аналоги есть, или вообще сами напишем то, что лучше подходит нам (чем лазить по справке и форумам с вопросами "можно ли впринципе и каким образом сделать XXX")
- ещё был нами написанный фреймворк. Когда уходили из конторы просили права на него - не дали
В итоге пришлось переписывать с нуля. Т.к. все косяки фреймворка уже проявились и было ясно куда идти - новый получился копактнее, удобнее и надёжнее (в итоге нам отказом может даже сэкономили время)
Выводы:
- опасения о краже идей не безосновательны
- никто не хочет работать с закрытым кодом - слишком рисковано, т.к. некоторые опенсорс либы редко как есть используются - под конец их перетачивать приходится.
Ещё меня смущает, то что Ваше решение на as2. Он как-бы не используется давно.
Вобщем думайте сами.
P.S. Ради любопытства, если не секрет, что конкретно делает ваше "решение"?
-------------------------------------------
Тут с разработкой: "сами написали либу - сами пользуемся для кучи проектов" - всё понятно
заказывают проект - нам деньги идут, общая либа снижает расходы
продали один проект - нате вам и либу к нему - разберётесь - молодцы, у нас от этого не убудет (отдавали так проекты вместе с кодом)
А с деланьем денег на самой либе сложнее: алтернатива ещё умудрилась взлететь, а infinity - даже от земли не оторвался. Но сколько альтернатива в рекламу вложила? Сколько на конференциях выступала?
caseyryan
07.01.2013, 21:19
Дело в том, что так, как я программирую движок, могут очень немногие.
Alex626, почему Вы не пишете в классах? Писать код в кадрах - плохой тон. Для дизайнера, которому нужно "оживить" кнопку или заставить надпись мигать это нормально, но писать таким образом движок - не есть хорошая идея.
P.S. Ради любопытства, если не секрет, что конкретно делает ваше "решение"?
Присоединяюсь. Тоже интересно.
Вы меня неправильно поняли. Я не делаю движок на Actionscript. Мой проект это RPG-система для CryENGINE 3, на основе Scaleform. Вот здесь можно почитать про инвентарь: http://crymod.net/index.php?page=Thread&threadID=234. В общем, я думаю насчёт выпуска такой его версии, код которой украсть нельзя, а дизайн поменять можно на своё усмотрение. Т.е., чтобы разработчики могли использовать эту бесплатную версию для своих игр на начальном этапе. Ну, а сам код я буду использовать в своём собственном проекте.
А, ну вне флеша, в мире офлайн 3d-игр (и Unity3d) платных либ больше чем бесплатных - может и прокатит :)
Там и поддержка as3 в scaleform недавно появилась - небось осталась куча проектов на as2.
Т.е. надо разобраться, может ли ScaleForm подгружать swf-ки или придется распаковывать и обфусцировать swc.
caseyryan
07.01.2013, 23:13
Alex626, тогда да, надо просто упаковать в swc, чтобы нельзя было открыть без декомпиляции. От декомпила это не защитит, но тут уже можно добавить лицензию, которая запретит декомпилировать. Если сопрут серьезные ребята, то можно и в суд подать.
А спрятать код полностью действительно нельзя, ни в библиотеку, ни обфускатором. Таков уж флеш.
Не, в обфусцированный код я бы не полез разбираться и переписывать, не знаю сколько человек готово это сделать. Декомпил ещё можно поковырять, и то если там не 100500 строк кода.
А как работать с SWC файлами? Предположим, я знаю, что можно из меню библиотеки экспортировать любой клип как SWC. А что нужно сделать, чтобы теперь подключить эту библиотеку к моему скрипту?
Можете ещё объяснить, как же восстанавливают код из защищённого файла? Пробовал открывать свои защищённые файлы в Sothink SWF Decompiler последней версии, на выходе код совершенно не читаемый. Местами от кода вообще остаётся 2-3 строчки. Мне кажется, дешевле себе будет переписать заново. Неужели можно чем-то ещё обойти защиту?
А как работать с SWC файлами? Предположим, я знаю, что можно из меню библиотеки экспортировать любой клип как SWC. А что нужно сделать, чтобы теперь подключить эту библиотеку к моему скрипту?
SWC файлы подключаются к проекту. В разных IDE это делается по разному.
Можете ещё объяснить, как же восстанавливают код из защищённого файла
Мне тоже это интересно. Вся информация об именах переменных и методов пропадает - её точно не восстановишь.
Чистую логику только использовать - ну там где он названия переменных на ")", "+" и т.д. поменял заменить на "a0001", "a0002" и всё - от этого не сильно легче.
Только вручную анализировать логику с применением мозга.
SWC файлы подключаются к проекту. В разных IDE это делается по разному.
Для Flash Professional.
Панель Properties, раздел Publish, поле Script, нажимаете на гаечный ключ "настройки". Во вкладке Library Path добавляете ваш SWC файл.
Спасибо!
Подскажите пожалуйста, как лучше свой скрипт из "первого кадра" экспортировать пограмотнее? Может быть засунуть в класс Main?
Да, засуньте в класс Main и в панели Properties в поле Document Class укажите ваш Main класс.
Поле Document Class вроде только для as3 работает (для as2 либо в кадре на класс ссылались, либо связывали класс с символом из библиотеки, причём ньюансы были)
Короче дела минувших лет, уже не вспомнить - гуглите по as2/компоненты/swc/ассоциация класса с символом
Подскажите пожалуйста, как лучше свой скрипт из "первого кадра" экспортировать пограмотнее? Может быть засунуть в класс Main?
А у вас получилось с кодом в первом кадре экспортнуть в swc? Не мучайтесь тогда.
Раньше же справлялись с кодом в кадрах - просто теперь будет 2 fla - одна под swc, другая - приложение.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.