seaman писал(а):1. Он что все же обфусцирует исходники? Если да -как с ними тогда работать? Если нет - с чего Вы его тут выложили?
2. Обфускация "на лету" это весьма странно и нормально возможно только под PC версию. Я проводил исследования.
Юнити компилирует все исходники дважды. Первый раз на лету при их изменении. Этот процесс можно перехватить и сделать с получившейся сборкой что хочешь. Эти сборки лежат в четком месте: project\Library\ScriptAssemblies\ Я эту возможность хотел использовать для реализации АОП в Юнити инжекцией кода. В общем вполне успешно.
Однако при окончательной сборке проекта оказалось, что Юнити не использует те сборки, которые уже откомпилированы. Она все компилирует с нуля. Если речь идет о Стендэлон PC версии - можно после компиляции проекта запустить автоматом утилиту и инжектировать что хочешь - там обычный CIL. Однако для остальных платформ так не получится.
Возможно было бы для любых платформ, если бы Юнити использовала уже готовые сборки при преобразовании под другие платформы. Или если бы можно было перехватить момент, когда Юнити их заново скомпилировала, но еще не запустила преобразование il2cpp (или аналогичные)
1) он обфусцирует сборки которые компилируются из исходников + сборки которые присутствуют как готовые dll (опционально)
и именно на лету, как поменяли что то, и unity решил их скопилировать, обфусатор проделает свою работы синхронно, он встраивается в цепочку и становится частью механизма формирования сборки в Unity
2) Обфускация на лету имеется ввиду что при любой компиляции средой unity (будь то компиляция для работы внутри редактора, или же создание сборки дистрибутива под любую платформу)
сборки которые компилируются в Unity действительно лежат в project\Library\ScriptAssemblies\ однако их менять, когда они уже готовы - бесполезно, т.к. Unity их не будет использовать для формирования сборок под платформы
- как только что то в скриптах поменялось и переключились на Unity он перекомпилирует сборки (в директории project\Temp) загрузит в память новую сборку а копию кинет в каталог project\Library\ScriptAssemblies\ но сам не будет на замену этих сборок реагировать
- при формировании дистрибутивов под платформы Unity по новой все перекомпилирует (с опциями под платформу) и сразу все это дело запакует в дистр (т.е. перехватить промежуточный вариант для замены простыми средствами не выйдет)
для PC платформы можно конечно потом в дистибутиве обфусцировать найденную Dll, для APK можно то при большом желании проделать, но вот для iOS и тому подобных платформ это не выйдет (поэтому и нужна обфускация на лету)
к тому если обфускация идет только после формирования дистра, вы замучаетесь отлаживать код под особенности процесса обфускации (если конечно у вас нет за плечами огромного опыта в таких вещах), а так делая проект вы уже видите все подводные камни, срезу пишете так чтобы код был более защищен и при этом оставался работоспособным.
Таким образом получаем обфускацию с поддержкой всех платформ..
Плюс помогают повысить уровень защиты встроенные в обфускатор:
- механизмы шифрования (строки, картинки, бинарные данные),
- полностью автоматизированная локализация под разные языки
- авто перевод на выбранные - для пред-просмотра (сразу видно как будет выглядеть на китайском:)
- проверка арфографии
- шифрование строк
- запутывание самого кода функций (не путать с переименованием) когда код становится очень трудно анализируемым (когда нужно скрыть алгоритмы) из за перемешивания логики выполнения кода.
и тп.