Обфускация Flex/Air [закрыто]
-
08-06-2019 - |
Вопрос
Я написал (большую часть) приложения на Flex и беспокоюсь о защите исходного кода.Я запустил демо-версию Декомпилятор Trillix SWF и открыл SWF-файл, который был установлен в каталоге Program Files.Я увидел, что все пакеты ActionScript, которые я написал, были там.Меня не слишком интересуют пакеты, несмотря на значительный объем кода, потому что без файлов mxml он по-прежнему кажется совершенно непригодным для использования.Я думаю, что они преобразованы в ActionScript, или, по крайней мере, я надеюсь.Тем не менее, я все равно хотел бы изучить обфускацию.
Есть ли у кого-нибудь опыт работы с обфускаторами Flash/Actionscript 3/Flex?Можете ли вы порекомендовать хороший продукт?
Решение
Вот что бы я сделал.
Скомпилируйте приложение в SWF-файл.Затем зашифруйте SWF с помощью AES.
Создайте приложение-оболочку, которое загружает зашифрованный SWF в ByteArray с помощью URLLoader.
Использовать as3crypto библиотека для расшифровки SWF во время выполнения.
После расшифровки используйте Loader.loadBytes для загрузки расшифрованного SWF-файла в приложение-оболочку.
Это значительно усложнит получение вашего кода.Не невозможно, но сложнее.
Для приложений AIR SWF-файл можно оставить зашифрованным при доставке приложения конечному пользователю.Затем вы можете предоставить регистрационный ключ, содержащий ключ, используемый для расшифровки SWF.
Также вот ссылка на обфускатор AS3.Хотя я не уверен, насколько хорошо это работает.http://www.ambiera.com/irrfuscator/index.html
Другие советы
Процедура, предложенная maclema, на самом деле не помешает любому злоумышленнику получить исходный код - «приложение-оболочка» должно быть незашифровано, чтобы злоумышленник мог узнать, что вы используете AES (или любой другой алгоритм), и он получит ключ дешифрования аналогичным образом (потому что он должен быть где-то в открытом тексте).Получив это, он сможет легко расшифровать ваш SWF-файл.
Единственное надежное решение (ну...) — это какой-нибудь обфускатор — мы используем Amayeta, которая работает для Flex в последней версии — см. http://www.amayeta.com/software/swfencrypt/ .
Ну, на мой взгляд, самое простое и безопасное решение — это смесь маклемы и ответа Борека:
Запутывающий код может стать большой головной болью, если вы не включили его в свой процесс с самого начала и если ваше приложение довольно велико:вполне вероятно, что обфускация приведет к повреждению вашего приложения, если вы использовали удаленные пакеты (и не объявили об этом обфускатору), если вы использовали множество нетипизированных переменных в объектах или динамических классах....
Так:Если вы используете решение maclema для своего большого приложения и используете обфускацию в своей оболочке (которая представляет собой небольшое приложение, которое, вероятно, очень легко запутать), ваш код будет самым безопасным и наименее хлопотным.Только очень злой пират сможет потратить время на перепроектирование обфускации, чтобы затем расшифровать пакет...Ну, если кому-то так сильно нужен код вашего приложения, то это либо связано с ЦРУ, либо вы уже очень богаты (или и то, и другое)
спасибо всем за ваши ответы
Недавно я выпустил игру для iOS и Android с использованием Flash.Я поискал в Интернете хорошую бесплатную программу для защиты исходного кода моего SWF, но ничего не нашел, поэтому написал ее.Он все еще находится в разработке и используется «на свой страх и риск», но у меня это сработало.
Он выпущен на github.Проверьте это и дайте мне знать, что вы думаете.
https://github.com/Teesquared/flasturbate
Я загрузил двоичный файл Windows, но рекомендую вам следовать инструкциям, чтобы собрать его самостоятельно, если вы хотите попробовать.
Этот обфускатор работает непосредственно с SWF-файлом.В настоящее время он переименовывает только символы, но построен на платформе, которая может поддерживать изменение байт-кодов в будущем.