Можно, но руками только.
- По защите контента, пишите письма - расскажу.
Я попробовал программу "Unity 3D Obfuscator" версии 1.3.18 на веб-сборке, сделанной в Unity 3.5.6f4. После обфускации я распаковал сборку, к которой она была применена, и просмотрел полученную библиотеку через Reflector. Весь код там был представлен в читаемом виде, без существенных следов обфускации, что вызвало некоторое недоумение. Обфускатор применялся со стандартными настройками, без лицензии. Внутри кода обфусцированной сборки присутствует ограничение по времени работы, встроенное обфускатором ввиду отсутствия лицензии, что говорит о том, что обфускатор к ней всё же был применён, и что он был применён не в режиме "Free".
На данном видео показан весь процесс обфускации и просмотр обфусцированной и распакованной сборки через рефлектор:
http://www.youtube.com/watch?v=wlP7gtvxqUg
Здесь доступны все файлы, использованные в видео:
http://sanviz.ru/uploads/others/Obfusca ... 70413a.zip
Я хотел бы спросить у вас: правильно ли проведён процесс обфускации на видео, и если да, то с чем связана нетронутость исходного кода в распакованной сборке, предварительно подвергшейся обфускации.
Добрый день,
По данному проекту действительно обфускатор мало помог скрыть код.
Пояснения по работе обфускатора:
1) Движок Unity3d не любит когда переименовываются его типовые названия методов (из за этого очень сложно автоматически переименовывать)
2) В настройках обфускатора стоят галочки (включены) не переименовывать имена классов и методов
(по умолчанию, т.к. у сложных проектов не расчитанных на обфускатор начинаются проблемы)
поэтому он не переименовывает их, нужно убрать эти галочки (но осторожно, нужно для этого пользоваться исключениями переименования, чтобы unity3d смог исполнить System.Reflection.Obfuscation)
3) На маленьких размерах кода защита от чтения может не применяться (в силу ограничения движка и используемых механизмов)
4) дублирующиеся функции предназначены для защиты не от рефлектора а от дизасемблирования всей сборки целиком (такая сборка уже не может скомпилироваться + проблемы при декомпиляции, дублирования имен и т.п.)
Проект для обфускации должен быть подготовлен к этому + соответствующие настройки обфускатора
1) Разделить классы наследуемы от Unity ядра и собственный код
т.е. рекомендую весь функционал делать в классах не наследованных от unity и типом доступа private (protected) C#
в классах наследованных от unity делать перевызов из своих классов
для unity наследованных классов поставить атрибуты исключения переименования (http://unity3d.netobf.com/unity3dobfuscator) например:
[System.Reflection.Obfuscation(Exclude = true, ApplyToMembers = true)]
public class Class1
{
Class2 obj=new Class2();
public DoAction()
{
obj.Fun1()
}
}
private class Class2
{
public Fun1()
{
//do action
}
}
2) Лучше делать отдельные dll для своего функционала и в unity подключать эту dll
3) в код критичных функций лучше добавлять муссор, чтобы увеличить его размер, при обускации поможет.
это на скидку, если есть еще вопросы постараюсь ответить.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1