Что такое код swf_oncondition

swf в исходный код для редактирования и обратно в swf

Я уже давно не прикасался к коду, и, насколько мне известно, я имею дело со вспышкой и haxe, я полагаю. Можно ли перейти от SWF к исходному коду, отредактировать этот код, а затем вернуться в swf с помощью переработанного кода? Я хотел взять простую флеш-игру и отредактировать, как выглядит персонаж. Также я хотел удалить различные способы из игры, чтобы упростить ее. Насколько мне известно, игра была первоначально написана в haxe. Если кто-то может предоставить некоторую информацию об этом, мы будем очень благодарны. заранее спасибо!

Существуют инструменты, с помощью которых вы можете декомпилировать SWF файл, чтобы получить базовый исходный код ActionScript 3.

Обратите внимание, однако, что ни в коем случае вы не будете иметь дело с исходным кодом Haxe. Код AS3, полученный посредством декомпиляции, будет кодом, сгенерированным компилятором Haxe. Иногда этот код включает в себя «прокладки» для Haxe-специфичных функций, которые не являются родными для целевого языка, но их следует легко идентифицировать и игнорировать.

Компиляция AS3 обратно в SWF также не связана с Haxe. Вам нужно будет найти другой инструмент для этого, например Flex SDK.

Прячем JavaScript-код на фронтенде от посторонних

Рассказывает веб-разработчик Денис Лисогорский

Давайте представим ситуацию, когда вы и ваша команда пишете интересный и сложный код на JavaScript. Причём этот код в кратчайшие сроки нужно использовать в проекте. Если его функциональность действительно уникальна, то в процессе разработки и у вас, и у членов команды вполне резонно возникнет вопрос: «Как защитить код от копирования?».

Как защитить код: веб-сокеты, крипторы и обфускация

Разумеется, все мы прекрасно понимаем, что JavaScript выполняется на стороне браузера. И любой зашифрованный код всегда можно расшифровать, если знать принципы работы браузера. Поэтому можно попробовать лишь затруднить понимание данного кода, а это, в свою очередь, очень сильно помешает злоумышленнику модифицировать его под свои нужды.

Итак, есть несколько вариантов защиты кода:

  1. Использовать веб-сокеты.
  2. Использовать крипторы.
  3. Сделать обфускацию кода.

Крипторы приводят код в нечитаемый вид, используя, как правило, base64 (что неизбежно приводит к увеличению объёма кода примерно на 30%). Затем к полученному результату прибавляется так называемая «соль» — набор символов, который при разборе кода функцией-дешифровщиком используется в качестве ключа. Ну а потом вся строка кода обычно выполняется через eval(). Проблема крипторов в том, что если понять принцип их работы, отсечь «соль» и декодировать, то сразу становится доступен весь код в его исходном виде.

Обфускаторы же изменяют сам код, вставляя между операторами нечитаемые символы, меняя имена переменных и функций на набор визуально непонятных символов. При этом объём кода также сильно увеличивается из-за вставки дополнительного псевдокода, а также замены символов на hex, когда любые символы переводятся в их hex-значения (например, латинская буква ‘e’ может быть записана как ‘\x65’, причём это прекрасно интерпретируется любым браузером). Можете посмотреть, как работает перевод в hex через любой сервис Text To Hex, например на Crypt Online.

Применение обфускаторов сильно усложняет дальнейшую отладку кода, поскольку это необратимый процесс. К тому же в некоторых случаях они могут повлиять на функциональность кода. Попробовать обфускаторы можно на любом сервисе обфускации, к примеру этом или этом. Также в Сети можно найти платные крипторы-обфускаторы, в настройках которых вы сможете указывать степень защиты, время жизни скрипта и прочее, при этом скрипт будет намертво привязан к вашему домену, т.е. для дешифровки будет использоваться уникальное для вашего хоста значение. Стоимость таких крипторов начинается от 45 $. Кроме этого, перед обфускацией вы можете предварительно минимизировать код, заменив все имена переменных и функций на их односимвольные синонимы. Отличный и очень популярный инструмент на Node.js — UglifyJS, который работает как в автоматическом режиме (скажем, через Gulp), так и в режиме командной строки.

Nice, Санкт-Петербург, от 150 000 ₽

Также есть всем известный Closure Compiler от Google, который кроме минимизации анализирует JavaScript-код, удаляет мёртвый код, переписывает и сводит к минимуму то, что осталось. Он также проверяет синтаксис, ссылки на переменные и типы и предупреждает об общих ошибках JavaScript. Имеет хорошо документированный API.

Кроме предложенных методов можно сделать следующее:

  • использовать WebStorage и скрывать там JavaScript код;
  • прятать часть кода в отдельном файле на сервере и вызывать его через XMLHttpRequest ;
  • использовать побитовые операторы для замены чисел на наборы скобок и знака

;

  • делать субституцию стандартных функций и методов JavaScript.
  • Всё это, разумеется, не станет стопроцентной защитой. Тем не менее чем сложнее процесс дешифровки, тем больше шансов, что после множества неудачных попыток любители копировать чужой код оставят ваш сайт в покое.

    Зашифровка кода на примере JavaScript-калькулятора

    Не так давно я разработал JavaScript-калькулятор для расчёта стоимости услуг, с большим количеством взаимосвязанных параметров. Руководство поставило задачу защитить данный скрипт от копирования, чтобы конкуренты не смогли использовать его на своих сайтах. Искал различные решения, ничего подходящего не нашёл, поэтому начал писать собственное. Представляю его ниже.

    Обращаю ваше внимание на то, что любой код можно расшифровать, просто для этого нужно время. Поэтому данное решение, разумеется, не идеально. Тем не менее, чтобы его раскрыть, требуется время, внимательность и усидчивость. И это может оттолкнуть ваших конкурентов от идеи скопировать ваш скрипт. Большинство из них после нескольких неудачных попыток просто будут искать аналог похожего скрипта на других ресурсах.

    По итогам работ в браузере вы увидите нечто такое:

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

    При этом никто ведь не знает, что здесь зашифрован именно скрипт. Это может оказаться какой-то параметр, текст или изображение. Через base64 можно зашифровать всё что угодно.

    Поищем в коде функцию glob() , которой передаётся шифрованная строка. Вот она: glob=function(s)

    Видим ещё несколько функций sfd() и rty() . Ищем эти функции. Вот они:

    На этом месте многие закончат попытки расшифровки и оставят ваш сайт в покое.

    Рассмотрим алгоритм подробнее.

    Как защитить JavaScript от копирования на своём сайте

    Первым делом указываем в футере сайта путь на скрипт и тут же кодируем его:

    В строке выше мы говорим интерпретатору PHP взять файл script.js, далее закодировать его через base64, прибавить строку ‘K’ и всё это записать в переменную $filebase64 .

    Добавление строки ‘K’ (это может быть любая латинская буква или комбинация букв или цифр) защищает нас от того, что желающий скопировать ваш скрипт расшифрует его с помощью alert() или онлайн-дешифратора. Ведь с дополнительными символами скрипт не будет работоспособен.

    Затем где-то дальше в коде вызываем скрипт:

    Пусть этот скрипт вызывается отдельно, подальше от других скриптов и ссылок на скрипты.

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

    Разбираем подробно что здесь происходит.

    Наша основная функция glob() принимает один параметр s . Он сразу передаётся функции substring() с параметром —

    [] (это равно 1 в зашифрованном виде), которая извлекает из s строку начиная с первого символа и до конца. Следовательно, если мы в PHP-коде в качестве строки прибавляли более одного символа, скажем три, то нам нужно будет в функции substring() указать 2+(-

    []) . Либо путём шифрования цифр через побитовые операторы мы можем создать запутанную формулу, часть переменных которой мы можем прятать в cookies или sessionStorage, что сделает крайне затруднительным понимание того, какое количество символов необходимо отбросить для дешифровки кода.

    Пример замены цифр через побитовый оператор

      -1 можно заменить на

    []
    1 можно заменить на —

    []
    0 можно заменить на

    Далее полученный результат принимает функция rty() . Эта функция представляет собой набор символов, в частности: this[«\x61\x74\x6F\x62»] ;

    Попробуйте ввести это в консоли браузера и вы увидите, что на самом деле делает эта функция. Например, вы увидите:

    Т.е. набор символов — это зашифрованная функция atob() , которая, согласно описанию на MDN, декодирует строку, закодированную с использованием base64.

    Результат декодирования получает функция sfd() . Она также представляет собой набор символов: this[«\x65\x76\x61\x6C»]; .

    Вы уже догадались, что нужно сделать? �� Выполните в консоли браузера и вы увидите:

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

    Наверное, вы задались вопросом, а каким же образом функции зашифрованы в наборе символов? Очень просто: набор символов — это текст, преобразованный в шестнадцатеричную систему счисления. Т.е. это текст в формате hex (hexadecimal), в котором можно зашифровать любые символы.

    Таким образом, наша расшифрованная функция выглядит так (специально разбил по строчкам, чтобы было наглядно):

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

    Вы можете пойти и дальше. Если каким-то образом кто-то всё же расшифрует ваш скрипт, немного усложните его, чтобы людям было сложнее модифицировать его. Например, можно поговорить о побитовом операторе ^ , c помощью которого можно творить чудеса. Например, a^b^b будет равно a . В качестве b может быть использован ключ, который мы зашифруем где-то выше…

    Всё будет работать как и раньше, но собьёт с толку нехороших копипастеров.

    За материал благодарим нашего подписчика Дениса Лисогорского

    CODE STAGE

    DEVELOPMENT & RESEARCH

    Упакованный SWF. Как распаковать?

    Привет, друзья!
    В этом посте я хотел бы рассказать о том, что из себя представляет упакованный SWF и как его можно распаковать динамически и статически.

    Итак, что же такое упакованный SWF?

    Если Вы никогда ранее его не видели, не поленитесь скачать простой классический пример упакованного SWF:
    http://codestage.ru/files/flood/security/packed.swf
    Запустив SWF, вы увидите немного текста в левом верхнем углу. Однако, если вы попробуете декомпилировать этот файл, то вы не увидите кода, который этот текст показывает.
    Стоит отметить, что если бы в упакованном SWF были ещё какие-нибудь ресурсы (изображения, звуки, шрифты и т.д.), то их вы бы тоже не увидели. Это из-за того, что оригинальный SWF находится внутри того SWF что вы скачали и декомпилировали, и часто в зашифрованном виде.
    Обычно все, что вы можете получить из таких SWF с помощью декомпиляторов — это код распаковщика\расшифратора и, возможно, сам зашифрованный SWF в виде набора байт (зависит от того, умеет ли используемый вами декомпилятор отображать тэг DefineBinaryData).
    Такая «упаковка» на самом деле достигается с помощью простого Flex тэга [Embed].

    Динамическая распаковка (dumping)

    Динамическая — значит для распаковки потребуется исполнение SWF во Flash Player’е (далее — FP).
    Т.к. FP не умеет проигрывать зашифрованную неведомо как SWF, то логично что перед проигрыванием, SWF должна расшифровываться и загружаться уже в чистом виде (например, с помощью Loader.loadBytes() ).
    Что более важно, распакованный и расшифрованный SWF будет в памяти все время, пока он исполняется FP’ром.

    И это наш шанс достать его!
    Существует два основных способа сделать это.

    1) Динамическая распаковка с помощью утилит
    Используя сторонние или даже самописные утилиты для поиска SWF в памяти процесса FP. Это самый быстрый, самый простой и обычно самый эффективный способ. Но он не вызывает ощущения что вы — тру крякер ��
    Существуют различные платные и бесплатные утилиты для этих целей.
    Одна из наиболее продвинутых — это SWF Revealer, бесплатная утилита для владельцев лицензий на ASV. В некоторых случаях, она может обходить проверки на домен (которые не дают распаковаться и расшифроваться SWFке) и заставлять SWF запускаться в вашей среде.
    Также достаточно легко гуглятся разные бесплатные дамперы.

    2) Ручная динамическая распаковка
    Поиск SWFки вручную, с помощью нахождения CWS (сжатый SWF) или FWS (несжатый SWF) заголовков, которые являются началом любого SWF. Если вы никогда не пробовали такой способ, я очень рекомендую попробовать! Он не только позволит немного подтянуть ваши скиллы в hex, но и подарит вам ощущение, что вы тру-крякер!)
    Для поиска заголовков можно использовать любой HEX редактор, который умеет читать память процессов и имеет функцию поиска.
    Если вы хотите искать упакованный SWF в памяти FP в котором проигрывается файл-пример по ссылке выше, то стоит начать с поиска FWS подписи (несжатый SWF) — просто ищите строку ‘FWS’, т.к. перед исполнением FP разжимает SWF, если он был сжат.
    Если вы будете запускать и искать SWF в браузере, то закройте все лишние вкладки, чтобы снизить количество лишних SWF в памяти.

    Обычно при таком поиске вы найдете несколько заголовков в памяти, т.к. сам FP держит там разные служебные SWF, например ту, что показывается после входа в полноэкранный режим.
    Так что если вы сомневаетесь, то лучше проверить все найденные заголовки.
    Итак, что же делать с найденным заголовками, спросите вы? Как их проверить, как узнать, где заканчивается SWF?
    Пожалуйста, взгляните на этот скриншот:

    Это заголовок одной из SWF в памяти FP при проигрывании файла-примера, найденный поиском по строке ‘FWS’ (совершенно случайно это оказался заголовок искомого упакованного файла, который мы и хотим найти ;))
    Что же дальше? А дальше необходимо посмотреть какой длины получается найденный SWF. Длина расположена в 4 байтах начиная с 4го:

    Как я узнал? Я просто прочитал спецификацию формата SWF: «SWF File Format Specification» http://www.adobe.com/content/dam/Adobe/en/devnet/swf/pdf/swf_file_format_spec_v10.pdf (раздел «The SWF header»)
    Т.к. это шестнадцатеричное число, записанное в память, вам стоит знать, что порядок записи его байт — справа налево. Поэтому в результате число такое:
    00 00 04 DB в hex и 1243 десятичном представлении.
    Теперь отмеряем эти 1243 байт начиная с FWS подписи.
    Т.к. подпись начинается на 053DD020, окончание SWF файла должно находиться по адресу 053DD4FB (053DD020 + 4DB):

    Пожалуйста, имейте ввиду, что адрес расположения SWF в памяти будет отличаться на разных ОС и на разном железе.

    Итак, мы видим, что найденный SWF действительно заканчивается на 053DD4FB, так что мы можем смело выделить все байты начиная с 053DD020, заканчивая 053DD4FB и скопировать их в новый SWF файл.
    После проделывания этой операции со всеми вхождениями FWS, которые вам покажутся подходящими, среди сохраненных SWF файлов будет один искомый, распакованный SWF!
    Теперь у вас не должно возникнуть проблем с его декомпиляцией.

    Некоторые виды пакеров усложняют поиск искомого SWF с помощью размещения множества фальшивых FWS заголовков в памяти. Так что вам следует более тщательно подбирать FWS — проверять его длину, и то как он в целом выглядит. Опытные в реверсинге люди (вроде меня :p) могут на глаз отличить фальшивый заголовок от настоящего, глянув на сам заголовок и на несколько десятков байт после него.

    Иногда, упакованный SWF может не распаковываться в память до проверки каких-нибудь условий. Например, загрузчик может проверять текущий домен или наличие какого-нибудь файла с лицензией. В таком случае вам придётся пропатчить эти проверки (например, с помощью дизассемблеров байткода, таких как Yogda или RABCDasm) или предоставить необходимые файлы (в которых может находиться ключ для расшифровки), чтобы заставить SWF запуститься и распаковаться.

    Статическая распаковка

    Статическая — значит без запуска SWF во FP.
    В целом, к этому типу распаковки прибегают когда не вышло распаковать SWF динамически (кто его знает, почему у вас не получилось запустить SWF?)
    Статическая распаковка может быть очень сложной задачей, т.к. есть не один способ её усложнить и сделать мучительно долгой.

    Итак, с чего начать при статической распаковке? Для начала, вам следует получить доступ как минимум к двум вещам в SWF:
    1 — DefineBinaryData тэг(и).
    2 — Декомпилированный AS или abc байткод распаковщика\загрузчика.
    Также, в некоторых случаях понадобится
    3 — SymbolClass тэг
    Для этого используйте доступные утилиты (ASV, Adobe SWF Investigator, SWiX, и т.д.).

    Как найти тэг DefineBinaryData в SWF?
    Сначала отмечу, что некоторые утилиты, например, ASV, могут вам явно указать на наличие этого тэга, сразу после открытия SWF. В них же можно этот тэг сохранить в виде двоичного файла.
    Также можно найти его вручную, с помощью различных инспекторов тэгов, вроде упомянутого выше Adobe SWF Investigator.
    Для получения содержимого тэга DefineBinaryData из файла-примера с помощью Adobe SWF Investigator, просто откройте файл, перейдите на вкладку Tag Viewer, выберите тэг DefineBinaryData и нажмите на кнопку Dump To File.

    Иногда в этом списке тэгов может быть множество фальшивых, чтобы сбить с толку незадачливого крякера. Для поиска необходимого тэга придётся немного изучить код загрузчика\распаковщика и отследить там обращение к упакованным данным.
    Обычно оно выглядит так:

    Где SomeClass имеет тип Class и наследуется от класса ByteArrayAsset.

    Давайте посмотрим в код загрузчика и поищем что-то похожее.
    Ага, вот и оно!

    Теперь нам следует поискать класс с именем оканчивающимся на «_content» и наследующийся от ByteArrayAsset.
    А вот и он:

    Чтобы выяснить, какой тэг DefineBinaryData связан с этим классом, нам следует заглянуть в тэг SymbolClass и поискать там запись с названием найденного класса «MainTimeline_focus_loader_content».
    В нашем случае эта запись выглядит так (в Adobe SWF Investigator):

    Запомните значение поля idref. Это id нужного тэга DefineBinaryData!
    Теперь ищите тэг с таким id среди всех тэгов DefineBinaryData.
    После того, как вы его найдёте, его можно сохранить в файл и продолжать распаковку.
    Почему я попросил запомнить idref, а не название класса? Потому что в том случае, если AS распаковщика обфусцирован, работать с именами классов может быть очень затруднительно.

    Теперь успех вашего мероприятия зависит от количества времени, которое вы готовы потратить, сложности упаковщика и удачи)
    Если повезёт, то полученные из DefineBinaryData данные окажутся чистым SWF без какого-либо шифрования и распаковку можно считать оконченной.
    Но чаще всего, на этом этапе все самое интересное только начинается и впереди реверсинг загрузчика — разбор алгоритмов шифрования и написания собственного дешифровщика.

    В нашем случае, код загрузчика намеренно сделан максимально простым и не обфусцированным, так что на этот раз нам повезло — мы легко находим функцию расшифровки:

    И узнаем, что для получения оригинального SWF достаточно каждый его байт поксорить на 55.
    Теперь вы можете написать свой декриптор, или скрипт, который сделает все операции для расшифровки SWF. Вот и все, распаковка закончена. После расшифровки вы получите оригинальный SWF, код и ресурсы которого видны в декомпиляторе.
    Остаётся надеяться, что это так и распакованный SWF не окажется точно так же расшифровщиком SWF, который вы только что ковыряли, хахаха!)
    Иногда при упаковке используют принцип матрёшки — запихивают один расшифровщик в другой — и так десятки раз, да ещё и алгоритмы расшифровки везде разные.
    В любом случае, динамическая распаковка все это обходит.
    Запомните — в мире Flash, ничего, кроме названий, нельзя скрыть от глаз профессионала высокого класса с достаточным уровнем мотивации ��

    Есть вопросы, идеи, комментарии? Оставляйте всё в виде комментариев к посту, пишите!

    HelperLife

    Формат файла SWF: что это такое, с помощью каких программ можно открыть и конвертировать. Расскажем о широких возможностях формата.

    Рядовые пользователи компьютера и сети Интернет редко сталкиваются с форматом SWF, разве что в виде рекламных флеш-баннеров на сайтах. Этот стандарт имеет большие возможности и множество способов использования. Самое стандартное представление – анимация различного вида, для открытия которой браузер требует установку флэш-плеера. В современных версиях популярных браузеров такой плагин есть по умолчанию и пользователю остается только включить его в момент необходимости.

    SWF – что это за формат

    В 1995 году компанией FutureWave Software был разработан стандарт SWF – что это за формат и какие возможности он предлагает, компьютерные специалисты узнали позже.
    SWF – это патентованный формат корпорации Adobe Systems, предназначенный для отображения на веб-страницах флеш-анимаций, видео и аудио контента, а также других графических файлов. Сфера применения очень разнообразна: от простых презентаций до полноценных сайтов с внедрением технологий XML и PHP. Положительные отличия: видеофайлы грузятся и воспроизводятся быстрее, картинки при масштабировании не имеют значительных искажений.
    Первоначально, владельцем спецификации (на тот период он имел название SPL) была не компания Adobe Systems. После разработки стандарта, в 1996 году, компания Macromedia купила FutureWave Software. В 2005 году Macromedia была приобретена Adobe Systems.

    Чем можно открыть SWF-файл: перечень программ

    Как открыть файл формата SWF

    Важно. Практически для всех веб-браузеров требуется установка Adobe Flash Player. У Google Chrome инсталляция и обновление происходят автоматически.

    Как открыть SWF-файл на компьютере

    Совет. Если у вашего компьютера операционная система Mac OS, то следует выбрать аналогичную программу для просмотра SWF из списка пункта 2.

    Как открыть файл SWF в онлайне – без сторонних программ

    Как открыть SWF-файл на андроиде

    Файлы на Андроид можно открыть только для просмотра, а для создания и редактирования требуются ресурсы компьютера. В Google Play Market есть отличное приложение для просмотра флеш-файлов под названием SWF Player. Приложение отличается минимальными требованиями памяти и удобством эксплуатации.

    Онлайн-сервисы для конвертирования SWF-файлов

    Не открываются swf файлы: видео

    Часто приходится сталкиваться с ситуацией, когда файлы не открываются. Возможно, это связано с проигрывателем или браузером – тогда необходимо их переустановить. Если причина кроется не в этом, тогда предлагаю посмотреть видео о возможной другом факторе неисправности:

    swf_oncondition

    swf_oncondition — Describe a transition used to trigger an action list

    Описание

    The swf_oncondition() function describes a transition that will trigger an action list.

    Список параметров

    There are several types of possible transitions, the following are for buttons defined as TYPE_MENUBUTTON:

    • IdletoOverUp
    • OverUptoIdle
    • OverUptoOverDown
    • OverDowntoOverUp
    • IdletoOverDown
    • OutDowntoIdle
    • MenuEnter (IdletoOverUp|IdletoOverDown)
    • MenuExit (OverUptoIdle|OverDowntoIdle)

    For TYPE_PUSHBUTTON there are the following options:

    • IdletoOverUp
    • OverUptoIdle
    • OverUptoOverDown
    • OverDowntoOverUp
    • OverDowntoOutDown
    • OutDowntoOverDown
    • OutDowntoIdle
    • ButtonEnter (IdletoOverUp|OutDowntoOverDown)
    • ButtonExit (OverUptoIdle|OverDowntoOutDown)

    Возвращаемые значения

    Эта функция не возвращает значения после выполнения.

    Новые книги

    swf_oncondition — описывает переход/transition, используемый для переключения списка акций.

    Описание

    void swf_oncondition (int transition)

    swf_onCondition() описывает переход, который переключит список акций. Есть несколько типов перехода, следующие предназначены для кнопок, определённых как TYPE_MENUBUTTON:


    swf_oncondition

    swf_oncondition — Describe a transition used to trigger an action list

    Description

    The swf_oncondition() function describes a transition that will trigger an action list.

    Parameters

    There are several types of possible transitions, the following are for buttons defined as TYPE_MENUBUTTON:

    • IdletoOverUp
    • OverUptoIdle
    • OverUptoOverDown
    • OverDowntoOverUp
    • IdletoOverDown
    • OutDowntoIdle
    • MenuEnter (IdletoOverUp|IdletoOverDown)
    • MenuExit (OverUptoIdle|OverDowntoIdle)

    For TYPE_PUSHBUTTON there are the following options:

    • IdletoOverUp
    • OverUptoIdle
    • OverUptoOverDown
    • OverDowntoOverUp
    • OverDowntoOutDown
    • OutDowntoOverDown
    • OutDowntoIdle
    • ButtonEnter (IdletoOverUp|OutDowntoOverDown)
    • ButtonExit (OverUptoIdle|OverDowntoOutDown)

    swf_oncondition

    swf_oncondition — Describe a transition used to trigger an action list

    Description

    The swf_oncondition() function describes a transition that will trigger an action list.

    Parameters

    There are several types of possible transitions, the following are for buttons defined as TYPE_MENUBUTTON:

    • IdletoOverUp
    • OverUptoIdle
    • OverUptoOverDown
    • OverDowntoOverUp
    • IdletoOverDown
    • OutDowntoIdle
    • MenuEnter (IdletoOverUp|IdletoOverDown)
    • MenuExit (OverUptoIdle|OverDowntoIdle)

    For TYPE_PUSHBUTTON there are the following options:

    • IdletoOverUp
    • OverUptoIdle
    • OverUptoOverDown
    • OverDowntoOverUp
    • OverDowntoOutDown
    • OutDowntoOverDown
    • OutDowntoIdle
    • ButtonEnter (IdletoOverUp|OutDowntoOverDown)
    • ButtonExit (OverUptoIdle|OverDowntoOutDown)

    swf_oncondition

    swf_oncondition — Describe a transition used to trigger an action list

    Description

    The swf_oncondition() function describes a transition that will trigger an action list.

    Parameters

    There are several types of possible transitions, the following are for buttons defined as TYPE_MENUBUTTON:

    • IdletoOverUp
    • OverUptoIdle
    • OverUptoOverDown
    • OverDowntoOverUp
    • IdletoOverDown
    • OutDowntoIdle
    • MenuEnter (IdletoOverUp|IdletoOverDown)
    • MenuExit (OverUptoIdle|OverDowntoIdle)

    For TYPE_PUSHBUTTON there are the following options:

    • IdletoOverUp
    • OverUptoIdle
    • OverUptoOverDown
    • OverDowntoOverUp
    • OverDowntoOutDown
    • OutDowntoOverDown
    • OutDowntoIdle
    • ButtonEnter (IdletoOverUp|OutDowntoOverDown)
    • ButtonExit (OverUptoIdle|OverDowntoOutDown)

    Как отредактировать SWF-файл?

    Порой, при работе с SWF-файлами часто возникает ситуация, когда необходимо внести правки в готовое «творение», не имея при этой исходного FLA- файла. Это может быть всё, что угодно: изменение текста, картинок, звуков и т.д., при этом в отдельных случаях вовсе не обязательно прибегать именно к тем инструментам, с помощью которых был создан файл. Основная сложность заключается в том, что SWF-файл — это уже скомпилированный FLA-файл. При наличии последнего, пользователь имеет возможность видеть всю структуру файла, SWF же содержит минимум информации. После компиляции SWF-файл можно импортировать во Flash, однако без дополнительного ПО восстановить его структуру вряд ли удастся. Соответственно, для внесения правок необходимо декомпилировать SWF-файл.

    Такая ситуация породила массу программ, таких как: Sothink SWF Decompiler, Eltima Flash Decompiler Trillix , Power Flash Decompiler и ещё великое множество различных утилит. В этой статье мы приведем примеры и параметры некоторых декомпиляторов, а так же рассмотрим сам процесс декомпиляции на примере программы Sothink SWF Decompiler.

    Sothink SWF Decompiler — это программа для захвата, и декомпиляции файла SWF в FLA, а также для извлечения из него различных ресурсов. Программа позволяет извлекать изображения, шрифты, звуки и т.д. из готовых SWF-файлов и считается одной из лучших программ для декомпиляции.

    Для человека, знакомого с такой системой, не составит труда с помощью программы «разобрать», а потом заново «собрать» SWF-файл. Для любителей же это может оказаться весьма сложной задачей. Итак, как выглядит процесс декомпиляции в Sothink SWF Decompiler?

    Начнём с интерфейса. Собственно, главное окно программы выглядит так:

    Слева располагается проводник по каталогам компьютера (Multifile Export), в центре — экран, где можно просмотреть флеш-ролик, справа же можно видеть окно (Resources), в котором отображаются составные части ролика (они появляются после «разборки» файла программой с помощью команд Exports FLA File и Exported FLA File Version).

    Команда Exports FLA File более проста, команда Exported FLA File Version позволяет выбрать версию файла для FLA, который вы собираетесь экспортировать (программа поддерживает форматы Flash 6, Flash MX 2004 (7.0), Flash 8, Flash CS3 (9.0) и Flash CS4 (10.0).

    Для примера, воспользуемся командой Exports FLA File.

    Добавляем файл в список для декомпиляции, а потом сохраняем его. Для этого в открывшемся окошке кликаем на Add file, выбираем нужный файл. Затем кликаем на пиктограмму возле строки Export Path.

    После этого можно увидеть, что файл добавился в список слева, в окне предпросмотра проигрывается ролик, а в панели справа появились составляющие файла. Далее обратить внимание следует именно на них.

    Как с ними работать? Чтобы просмотреть компоненты файла и найти искомые, необходимо просто выбрать их из списка (выбранный компонент отобразится в центральном окне предпросмотра).

    Далее требуется декомпилировать и соханить каждый из компонентов. Для этого в окне Resources выбираем команду Export FLA и кликаем на Export, после чего получаем самостоятельный компонент (.fla-файл), с которым можно спокойно работать во флеш-редакторе.

    Немного нюансов: в зависимости от необходимости, можно сохранить все компоненты файла отдельно (установив галочку напротив графы Export Resources) или же сохранить только некоторые необходимые компоненты. В последнем случае нужно будет произвести дополнительные настройки. Для этого нужно выбрать режим декомпиляции Export Resources. Затем выбрать меню Option, и во всплывшем окне, выделить форматы файлов, которые вам нужно сохранить.

    Далее всё стандартно, нужно кликнуть на кнопку OK, а затем на Export. Таким образом, сохранятся только файлы выбранных вами форматов.

    Как уже говорилось, Sothink SWF Decompiler является одной из самых распространённых программ для декомпиляции SWF-файлов, а также считается одной из самых стабильных.

    Помимо всего прочего, программа также включает в себя интересный инструмент SWF Catcher, который позволяет захватить flash-анимацию, которая просматривалась с помощью браузеров Internet Explorer или Firefox.

    В общем-то, процесс декомпиляции SWF-файлов похож в различных программах-декомпиляторах. Поэтому мы не будем рассматривать декомпиляцию на примере других программ, которых довольно много, однако приведём некоторые характеристики наиболее популярных из них.

    Учебник РНР
    НазадВперёд

    Sothink SWF Decompiler
    • Поддерживает Action Script v. 2.0 и v.3.0
    • Возможность поиска в исходном коде Action Script — Конвертирование SWF в FLA и во FLEX
    • Извлечение SWF из EXE
    • Предпросмотр и экспорт ресурсов файла
    • Экспорт ActionScript файла в AS и HTML форматы
    • Имеется плеер для проигрывания флэш-файлов
    • Детальный просмотр свойств элементов во Flash-ролике
    • Поддержка сканирования кэша IE и вывод списка всех просмотренных вами Flash-файлов


    Flash Decompiler Trillix

    • Поддерживает Action Script v. 2.0 и v.3.0
    • Возможность экспорта флеш-роликов в такие форматы как AVI, MPEG и т.д.
    • Возможность детальной настройки конвертации SWF в FLA
    • Возможность декомпилировать и конвертировать одновременно несколько флэш-роликов
    • Возможность редактирования объектов файла без конвертации в FLA
    • Извлечение ресурсов файла в различные форматы
    • Имеется встроенный проигрыватель Flash-файлов
    • Возможность сохранения Flash-роликов онлайн
    • Удобный интерфейс: масштабируемый, лента панели инструментов


    SWF Decompiler Magic

    • Конвертирование SWF в FLV и EXE
    • Возможность экспорта данных из флэш-файла в FLA-файл:
      • Экспорт звуков и видео из флэш-файла
      • Экспорт текста, форм, кнопок, изображений, шрифтов и фреймов из флэш-файла
      • Экспорт скриптов из флэш-файла
    • Обзор и предпросмотр ресурсов перед экспортом
    • Поддержка редактирования динамического текста во флэш-файле
    • Поддержка перемещения изображений во флэш-файле
    • Просмотр детальной информации о каждом объекте из флэш-ролика

    Что хочется ещё добавить о флеш-декомпиляторах? На первый взгляд, работать с ними достаточно просто, и в определённой степени так оно и есть. Однако, при декомпиляции SWF-файлов могут возникнуть сложности, так как при использовании подобных программ могут возникать ошибки в коде, которые придётся исправлять «вручную». А для пользователя, незнакомого с языком Action Script это может оказаться очень сложной задачей.

    Илон Маск рекомендует:  Что такое код setcookie
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL