Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Вот что я буду делать.

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

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

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

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

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

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

Кроме того, здесь приведена ссылка на обфускатор AS3. Я не уверен, насколько хорошо это работает. http://www.ambiera.com/irrfuscator/index.html

Ответ 2

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

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

Ответ 3

Хорошо, на мой взгляд, самым простым и безопасным решением является сочетание ответов maclema и Borek:

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

Итак: если вы выполняете решение maclema на своем большом приложении и используете обфускацию на своей обертке (которая представляет собой небольшое приложение, которое может быть очень легко запутаться), вы будете самым безопасным и самым слабым. Только очень разгневанный пират займет время, чтобы перепроектировать обфускацию, чтобы затем расшифровать пакет. Хорошо, если кто-то хочет, чтобы ваш код приложения был плохой, либо CIA, либо вы уже очень богаты (или оба)

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

Ответ 4

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

Он вышел на github. Проверьте это и сообщите мне, что вы думаете.

https://github.com/Teesquared/flasturbate

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

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