Обфускация Flex / Air

Я написал (большую часть) приложение на Flex, и меня беспокоит защита исходного кода. Я запустил демонстрацию декомпилятора Trillix swf и открыл файл swf, который был установлен в мою директорию Program Files. Я увидел, что все написанные мной пакеты ActionScript были там. Я не слишком беспокоюсь о пакетах, даже несмотря на то, что существует значительный объем кода, потому что он все еще кажется довольно непригодным для использования без файлов mxml. Я думаю, что они преобразованы в ActionScript, или, по крайней мере, я надеюсь. Однако я все же хотел бы изучить обфускацию.

Есть ли у кого-нибудь опыт работы с обфускаторами Flash / Actionscript 3 / Flex? Вы можете порекомендовать хороший продукт?

Ответов (4)

Решение

Вот что бы я сделал.

  • Скомпилируйте приложение в файл SWF. Затем зашифруйте SWF с помощью AES.

  • Создайте приложение-оболочку, которое загружает зашифрованный SWF в ByteArray с помощью URLLoader.

  • Используйте библиотеку as3crypto для расшифровки SWF во время выполнения.

  • После расшифровки используйте Loader.loadBytes, чтобы загрузить расшифрованный swf в приложение-оболочку.

Это значительно затруднит получение вашего кода. Не невозможно, но сложнее.

Для приложений AIR вы можете оставить SWF зашифрованным при доставке приложения конечному пользователю. Затем вы можете предоставить регистрационный ключ, который содержит ключ, используемый для расшифровки SWF.

Также вот ссылка на обфускатор AS3. Я не уверен, насколько хорошо это работает. http://www.ambiera.com/irrfuscator/index.html

Недавно я выпустил игру для iOS и Android с использованием Flash. Я поискал в Интернете хорошую бесплатную программу для защиты исходного кода в моем SWF-файле и ничего не нашел, поэтому написал ее. Он все еще находится в разработке и «используйте на свой страх и риск», но у меня это сработало.

Он выпущен на гитхабе. Проверьте это и дайте мне знать, что вы думаете.

https://github.com/Teesquared/flasturbate

Я загрузил двоичный файл Windows, но я рекомендую вам создать его самостоятельно, следуя инструкциям, если вы хотите попробовать.

Этот обфускатор работает непосредственно с файлом SWF. В настоящее время он только переименовывает символы, но построен на платформе, которая может поддерживать изменение байт-кодов в будущем.

Процедура, предложенная маклемой, на самом деле не помешает злоумышленнику получить исходный код - «приложение-оболочка» должно быть незашифрованным, чтобы злоумышленник мог узнать, что вы используете AES (или любой другой алгоритм), и он получит ключ дешифрования аналогичным образом (потому что он должен быть где-то в виде открытого текста). Как только он получит это, он сможет легко расшифровать ваш SWF-файл.

Единственное надежное решение (ну ...) - это своего рода обфускатор - мы используем Amayeta, которая работает с Flex в последней версии - см. http://www.amayeta.com/software/swfencrypt/ .

Что ж, на мой взгляд, самое простое и безопасное решение - это смесь маклема и ответа Борека:

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

Итак: если вы используете решение Maclema в своем большом приложении и используете обфускацию в своей оболочке (это небольшое приложение, которое, вероятно, будет очень легко запутать), ваш код будет самым безопасным и наименее надежным. Только очень сердитый пират потратит время на перепроектирование обфускации, чтобы затем расшифровать пакет ... Что ж, если кому-то так нужен код вашего приложения, это либо связано с ЦРУ, либо вы уже очень богаты (или и то, и другое)

спасибо всем за ваши ответы