Что такое код swf_shapefillbitmapclip

Содержание

Что такое код swf_shapefillbitmapclip

swf_shapefillbitmapclip — Set current fill mode to clipped bitmap

Description void swf_shapefillbitmapclip ( int bitmapid )

Sets the fill to bitmap clipped, empty spaces will be filled by the bitmap given by the bitmapid parameter.

Пред. Начало След.
swf_shapecurveto Уровень выше swf_shapefillbitmaptile

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

Новые книги

Находясь на переднем крае программирования, книга «Программист-прагматик. Путь от подмастерья к мастеру» абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.

Прочитав эту книгу, вы научитесь:

Бороться с недостатками программного обеспечения;

Избегать ловушек, связанных с дублированием знания;

Создавать гибкие, динамичные и адаптируемые программы;

Избегать программирования в расчете на совпадение;

Защищать вашу программу при помощи контрактов, утверждений и исключений;

Собирать реальные требования;

Осуществлять безжалостное и эффективное тестирование;

Приводить в восторг ваших пользователей;

Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Внедрение Flash с помощью SWFObject 2

Вопрос о внедрении Flash с помощью разметки соответствующей стандартам возникает достаточно часто, между тем у этой проблемы есть достаточно известное решение — SWFObject. SWFObject 2 не только позволяет внедрять Flash динамически, с помощью JavaScript, но и статически, когда для внедрения используется стандартная разметка, а JavaScript только исправляет неразрешимые с помощью разметки проблемы, при этом даже если JavaScript отключен пользователи все равно увидят Flash.

Скачать библиотеку и получить дополнительную информацию можно на странице проекта SWFObject в Google Code.

Что такое SWFObject?

SWFObject 2:

  • Предоставляет два оптимизированных метода внедрения Flash, основанный на разметке и использующий JavaScript
  • Предоставляет JavaScript API со всеми возможностями необходимыми для внедрения SWF файлов и получения информации о Flash плеере. [http://code.google.com/p/swfobject/wiki/api]
  • Использует один небольшой JavaScript файл (SWFObject 2.0 size: 8.7Kb / GZIPed: 3.4Kb, SWFObject 2.1 size: 9.5Kb / GZIPed: 3.8Kb)
  • Преемник SWFObject 1.5 [http://blog.deconcept.com/swfobject/] и UFO [http://www.bobbyvandersluis.com/ufo/]
  • В конце концов должен заменить Adobe Flash Player Detection Kit [http://www.adobe.com/products/flashplayer/download/detection_kit/]
  • Объединяет все существующие методы внедрения Flash и претендует на новый стандарт внедрения Flash.
  • Проект с открытым кодом Джефа Стирнса, Михаеля Вильямса и Бобби ван дер Слуйса, ранее известный как SWFFix [http://code.google.com/p/swffix/]

Почему вы должны использовать SWFObject?

  • Он более оптимизированный и гибкий чем любой другой способ внедрения Flash плеера
  • Он является универсальным решением для всех: будь вы HTML, Flash или JavaScript разработчик, это решение подходит для всех
  • Прекращает затянувшееся использование специфичной разметки для некоторых браузеров, позволяет использовать стандартную разметку и альтернативный контент
  • Использует ненавязчивый JavaScript и лучшие практики JavaScript
  • Прост в использовании

Подробное обоснование необходимости использования SWFObject 2 вы можете найти в статье Flash Embedding Cage Match опубликованной на A List Apart [http://www.alistapart.com/articles/flashembedcagematch/].

Почему SWFObject использует JavaScript?

SWFObject 2 использует JavaScript преимущественно для преодоления проблем, непреодолимых с помощью разметки:

  • Определяет версию Flash плеера и в зависимости от результата отображает Flash или альтернативный контент, чем предотвращает искажение Flash в плеерах старых версий.
  • Позволяет вернуться к альтернативному контенту с помощью DOM манипуляций в случае, если используется Flash плагин неподходящей версии (Примечание: если Flash плагин не установлен то вместо элемента object автоматически отображается вложенный альтернативный контент).
  • Позволяет использовать Adobe Express Install для установки последней версии Flash плеера
  • Решает проблему со старыми версиями движка Webkit, игнорирующими вложенные в object элементы param, используя проприетарный элемент embed. (Это единственный случай когда используется проприетарная разметка, это будет исключено в будущих версиях)
  • Позволяет публиковать Flash контент с помощью JavaScript тем самым исключать механизмы активации
  • Предоставляет продуманный JavaScript API для выполнения распространенных действий с Flash плеером и Flash контентом.

Какой из методов публикации предпочтителен, статический или динамический?

SWFObject 2 позволяет внедрять Flash двумя различными методами:

  1. При статическом методе публикации Flash и альтернативный контент внедряются с помощью стандартной разметки, а JavaScript используется для решения проблем непреодолимых с помощью разметки.
  2. Динамический метод публикации основан на замене альтернативного контента Flash контентом в случае если есть достаточно новая версия Flash плеера и поддержка JavaScript.

Преимущества статического метода публикации:

  1. Используется стандартная разметка
  2. Механизм внедрения Flash контента не зависит от JavaScript благодаря чему Flash будет доступен значительно большей аудитории:

Преимущества динамического метода публикации:

  1. Позволяет обойти механизмы активации активного контента в Internet Explorer 6/7 и Opera 9+. Обратите внимание, что Microsoft выпустил обновления исключающие механизм активации в браузерах Internet Explorer [http://www.swffix.org/devblog/?p=19]
  2. Отлично интегрируется в JavaScript приложения

Статический метод публикации Flash с помощью SWFObject

Шаг 1: Внедрение Flash и альтернативного контента с помощью стандартной разметки

Примечание: Метод вложенных объектов требует дублирования объявления object (внешний object предназначен для Internet Explorer а внутренний object для остальных браузеров), поэтому если вам нужно определить атрибуты или param для object то их нужно продублировать для внешнего и внутреннего объектов.
Обязательные атрибуты:

  • classid (только для внешнего object, значение всегда clsid:D27CDB6E-AE6D-11cf-96B8-444553540000)
  • type (только для внутреннего object, значение всегда application/x-shockwave-flash)
  • data (только для внутреннего object, определяет URL SWF файла)
  • width (для обоих элементов object, определяет ширину SWF)
  • height (для обоих элементов object, определяет высоту SWF)

Обязательные элементы param:

  • movie (только для внешнего элемента object, определяет URL SWF файла)

Примечание: Мы рекомендует не использовать атрибут codebase для указания URL установки Flash с серверов Adobe, поскольку это противоречит спецификации которая ограничивает доступ доменом текущего документа. Вместо этого используйте альтернативный контент с сообщением, что пользователь может получить полную версию установив Flash плагин.

Как использовать HTML для конфигурирования Flash контента?

Зачем нужен альтернативный контент?

Элемент object может содержать альтернативный контент который будет отображен если Flash плеер не установлен или не поддерживается. Альтернативный контент доступен поисковикам, поэтому он может быть хорошим инструментом при оптимизации сайта для поисковиков. Альтернативный контент нужен если вы хотите сделать сайт доступным для пользователей не использующий плагины [http://www.adobe.com/devnet/flash/articles/progressive_enhancement_03.html], хорошо индексируемый поисковиками [http://www.adobe.com/devnet/flash/articles/progressive_enhancement_04.html] и ненавязчиво показывающий пользователям, что они могут увидеть его во всей красе если установят Flash плагин.

Шаг 2: Подключение библиотеки SWFObject

Шаг 3: Зарегистрируйте ваш Flash контент и задайте параметры

Советы

  • Используйте SWFObject HTML и JavaScript генератор для автоматического создания кода [http://code.google.com/p/swfobject/wiki/generator]
  • Чтобы вставить несколько SWF просто повторите шаги 1 и 3
  • Простейший способ получать активный элемент object — это использовать JavaScript API: swfobject.getObjectById(objectIdStr) [http://code.google.com/p/swfobject/wiki/api]

Динамический метод публикации с помощью SWFObject

Шаг 1: Создание альтернативного контента с помощью стандартной разметки

Шаг 2: Подключение библиотеки SWFObject

Шаг 3: Внедрение SWF с помощью JavaScript

Конфигурирование Flash контента

Как используя JavaScript объекты установить переменные, параметры и атрибуты?

Советы

  • Используйте SWFObject HTML и JavaScript генератор дляавтоматического создания кода [http://code.google.com/p/swfobject/wiki/generator]
  • Чтобы вставить несколько SWF просто повторите шаги 1 и 3

Переход от SWFObject 1.5 к SWFObject 2

  1. В SWFObject 2 НЕТ обратной совместимости с SWFObject 1.5
  2. Предпочтительно чтобы весь код JavaScript был в разделе head
  3. Имя библиотеки теперь в нижнем регистре: swfobject вместо SWFObject
  4. Методы доступны только через библиотеку (вместо экземпляра SWFObject в SWFObject 1.5)
  5. API абсолютно новое: [http://code.google.com/p/swfobject/wiki/api]
  6. SWFObject 2 заменяет указанный HTML блок с альтернативным контентом полностью, включая элемент контейнер, в случае если есть достаточная поддержка Flash и JavaScript, тогда как SWFObject 1.5 заменяет только содержимое указанoго контейнера. Если вы явно не указали атрибут id, элемент object автоматически наследует id указанного HTML контейнера с альтернативным контентом

Переход от UFO к SWFObject 2

  1. SWFObject 2 заменяет указанный HTML блок с альтернативным контентомполностью, включая элемент контейнер, в случае если есть достаточнаяподдержка Flash и JavaScript, тогда как UFO заменяет толькосодержимое указанoго контейнера. Если вы явно не указали атрибут id, элемент object автоматически наследует id указанного HTML контейнера с альтернативным контентом
  2. setcontainercss отсутствует в SWFObject 2, похожий функционал обеспечивает SWFObject JavaScript API: swfobject.createCSS(selStr, declStr) [http://code.google.com/p/swfobject/wiki/api]

Поддерживает ли SWFObject 2 MIME тип application/xhtml+xml?

SWFObject 2 НЕ поддерживает XML MIME типы, это сознательно решение.
Есть несколько причин почему мы не поддерживаем их:

  • их использует очень малая часть веб-разработчиков
  • мы не уверены, что веб пойдет этим путем. Internet Explorer его не поддерживает и все остальные основные производители браузеров больше склоняются к новому, стандартному способу парсинга HTML (в HTML 5), отходя от парсинга HTML как XML, каким его видит W3C
  • отказавшись от поддержки XML MIME типов мы уменьшили размер файла и упростили тестирование и поддержку

Дополнения предложенные в комментариях:

Средства для внедрения Flash в популярных JS фреймворках

WMODE

Параметр заслуживающий отдельного упоминания.
wmode может принимать значения: window, opaque, transparent и определяет режим отображения Flash на веб странице.
window — значение по умолчанию, в этом режиме для flash используется отдельное окно (в пределах страницы) главная проблема этого режима в том, что flash отображется поверх любых элементов страницы, вне зависимости от их z-order, что часто является причиной попадания под flash выпадающих меню и прочих неприятностией.
opaque — непрозрачный flash не перекрывающий элементы страницы которые он перекрывать не должен.
transparent — прозрачный flash, сквозь который просвечивает фон HTML страницы, как и в предыдущем случае не перекрывает то чего перекрывать не должен, но в этом режиме возможны проблемы с производительность при использовании анимации.
К сожалению, wmode не решает проблемы с перекрыванием flash роликом других элементов в Linux, по крайней мере в FF3 точно не решает.

Илон Маск рекомендует:  Ссылки внутри страницы

Знатокам C++. Объясните, пожалуйста, кое-то о структуре заголовка bmp файла BITMAPINFO.

СПЕРВА! НЕ БЗДЕТЬ, МНОГАБУКАФ — ЭТО, ЧТОБ ПОНЯТНЕЕ БЫЛО! ))) ЕСЛИ КОМУ ЛЕНЬ ЧИТАТЬ, НУ ЧТО Ж, СПАСИБО ХОТЯ БЫ ЗА ПОПЫТКУ! ))))

В общем дело такое, у меня (нужно относительно быстро разобраться в чужой программе, но тем не менее пусть будет «у меня» :) есть bmp файл, который мне нужно загрузить в память. Сейчас это осуществляется так:

myFile.Seek( BMOffset, CFile::begin ); // Устанавливается положение курсора в потоке — делается отступ от начала на BMOffset (=56)
myFile.Read((void *)BuferImage, myFileSize-BMOffset); // Из открытого файла, начиная с 57 байта, в массив-строку BuferImage загружается картинка.

Вся проблема в этих 56 байтах, столько, говорит, отступай и не мучайся, говорит мой научный «руководитель» )), чтобы пропустить полностью BITMAPINFOHEADER файла и начать загружать непосредственно массив изображения.

Открываю msdn, вижу:
typedef struct tagBITMAPINFO <
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
> BITMAPINFO;

Тут, кроме BITMAPINFOHEADER, есть еще RGBQUAD
typedef struct tagRGBQUAD <
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
> RGBQUAD;

Смотрю, на Википедии:
Структура BITMAPINFO объединяет BITMAPINFOHEADER и палитру, предоставляя полное описание размеров и цветов изображения.

ВОПРОС: Чтобы полностью пропустить заголовок файла, и начать загружать непосредственно саму bitmap, сколько байт мне нужно отступить с помощью того же BMOffset?

В BITMAPINFOHEADER есть такой параметр
typedef struct tagBITMAPINFOHEADER <
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
> BITMAPINFOHEADER, *PBITMAPINFOHEADER;

biSize, который отображает размер структуры в байтах. Его можно в принципе выудить и использовать как разя для установки указателя на нужное место в потоке файла, НО! где тогда записывается структура RGBQUAD. Сразу после BITMAPINFOHEADER. В BITMAPINFOHEADER есть такой параметр biBitCount указывает количество бит на пиксель, правильно ли я понимаю, что в этой ситуации нужно бы использовать его, чтобы рассчитать этот правильный отступ?? ?
Спасибо!

п. с. Тема явно достойна форума, ну что ж, контрл+ц, контрл+в сделать несложно. Попытаю счастье сначала здесь, тут все таки народ побыстрее реагирует. В конце концов, вопрос по существу, а не очередной «кагдила? «. Расписал вопрос как мог, чтобы было понятнее, так что не судите :)

Как получить BITMAPINFOHEADER с изображения OpenCV?

Я должен использовать сторонний API-интерфейс, который принимает указатель на структуру BITMAPINFOHEADER и указатель на растровые данные в качестве параметров.

static Image load ( IntPtr bi, IntPtr img, string name )

создает представление изображения из указанного растрового изображения в памяти. Би-указатель указывает на BITMAPINFOHEARER, за которым следует дополнительная таблица цветов. Существование colortable зависит от типа изображения. Указатель байта должен указывать на растровые данные, как описано в битовой карте.

Как получить указатель на структуру, представляющую несжатое 24-битное растровое изображение RGB с указанным размером в С#?

Я действительно работаю с классом изображений EmguCV, и я попытался получить BITMAPINFOHEARER, описывающий изображение из Image .

Хотя он компилируется и работает без исключения, он не загружает изображение правильно (я не могу обработать позже использование facetracker.When я использовал другой метод для загрузки изображения из файла, работающий facetracker)

Что я делаю не так?

Отзыв из комментариев

Большая часть информации о том, как заполнить BITMAPINFOHEADER можно найти в документации msdn.

Некоторые моменты, которые необходимо исправить:
biSize должен быть заполнен размером BITMAPINFOHEADER . Это поле здесь, потому что структура может быть более полной версией, такой как BITMAPV5HEADER , поэтому она может работать, если ее установить неправильно, но это явно не рекомендуется.
biCompression следует установить в BI_RGB . BI_BITFIELDS не документируется как действительный для 24-битного режима.
biHeight должен быть установлен как отрицательный, если изображение сверху вниз, что, скорее всего, будет иметь место для представления памяти, как в вашем случае. Если нет, изображение может быть загружено вверх дном.
biSizeImage похоже, настроен правильно, но поскольку ему разрешено заполнять его 0 в режиме BI_RGB , это может помешать ошибкам.
Кроме того, все использование закрепленного указателя (с fixed ) должно выполняться внутри fixed области. Если он используется снаружи, нет гарантии, что массив не будет перемещен в другом месте.

Что касается размеров, класс Image похоже, использует прокладку строк, то есть заполнение строк дополнительными байтами, если их ширина не кратна 4 байтам. Битовые карты, описанные BITMAPINFOHEADER также должны иметь это свойство, поэтому можно ожидать, что load будет работать для всех измерений, но если load фактически не поддерживает прокладку строки, может потребоваться скопировать изображение в массив, который имеет точные размеры. Другое решение — использовать 32-битный режим везде (и это может также увеличить производительность).

Как получить BITMAPINFOHEADER с изображения OpenCV?

Я должен использовать сторонний API-интерфейс, который принимает указатель на структуру BITMAPINFOHEADER и указатель на растровые данные в качестве параметров.

static Image load ( IntPtr bi, IntPtr img, string name )

создает представление изображения из указанного растрового изображения в памяти. Би-указатель указывает на BITMAPINFOHEARER, за которым следует дополнительная таблица цветов. Существование colortable зависит от типа изображения. Указатель байта должен указывать на растровые данные, как описано в битовой карте.

Как получить указатель на структуру, представляющую несжатое 24-битное растровое изображение RGB с указанным размером в С#?

Я действительно работаю с классом изображений EmguCV, и я попытался получить BITMAPINFOHEARER, описывающий изображение из Image .

Хотя он компилируется и работает без исключения, он не загружает изображение правильно (я не могу обработать позже использование facetracker.When я использовал другой метод для загрузки изображения из файла, работающий facetracker)

Что я делаю не так?

Отзыв из комментариев

Большая часть информации о том, как заполнить BITMAPINFOHEADER можно найти в документации msdn.

Некоторые моменты, которые необходимо исправить:
biSize должен быть заполнен размером BITMAPINFOHEADER . Это поле здесь, потому что структура может быть более полной версией, такой как BITMAPV5HEADER , поэтому она может работать, если ее установить неправильно, но это явно не рекомендуется.
biCompression следует установить в BI_RGB . BI_BITFIELDS не документируется как действительный для 24-битного режима.
biHeight должен быть установлен как отрицательный, если изображение сверху вниз, что, скорее всего, будет иметь место для представления памяти, как в вашем случае. Если нет, изображение может быть загружено вверх дном.
biSizeImage похоже, настроен правильно, но поскольку ему разрешено заполнять его 0 в режиме BI_RGB , это может помешать ошибкам.
Кроме того, все использование закрепленного указателя (с fixed ) должно выполняться внутри fixed области. Если он используется снаружи, нет гарантии, что массив не будет перемещен в другом месте.

Что касается размеров, класс Image похоже, использует прокладку строк, то есть заполнение строк дополнительными байтами, если их ширина не кратна 4 байтам. Битовые карты, описанные BITMAPINFOHEADER также должны иметь это свойство, поэтому можно ожидать, что load будет работать для всех измерений, но если load фактически не поддерживает прокладку строки, может потребоваться скопировать изображение в массив, который имеет точные размеры. Другое решение — использовать 32-битный режим везде (и это может также увеличить производительность).

Передача переменных для Flash Professional в SWF-файлы

На этой странице

Введение

При загрузке в интернет-браузере параметр FlashVars тега HTML

Пример тега Embed

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

Браузер зашифровывает строку FlashVars так же, как он кодирует остальную часть HTML-страницы. Internet Explorer в операционной системе Windows поддерживает кодировку UTF-16. Другие браузеры поддерживают кодировку UTF-8.

Доступ к переменным в коде ActionScript 3.0 в SWF-файле

После передачи переменных в SWF-файл из HTML SWF-файл требует использования этих переменных.

Для доступа к переменным FlashVars используйте объект LoaderInfo в ActionScript 3.0.

Простой пример

В представленном ниже примере кода объект LoaderInfo запрашивает доступ к переменной с именем «myVariable», которая передана в SWF-файл в рамках параметра FlashVars. Затем он задает текст текстового поля в рабочей области для строкового значения переменной.

Вы можете загрузить примеры файлов FLA, SWF и HTML, демонстрирующие использование представленного выше кода.

Сложный пример

Приведенный ниже пример кода выполняет следующее:

  • Создает экземпляр TextField в рабочей области (с именем tf ).
  • Использует объект LoaderInfo для извлечения переменных из параметра FlashVars.
  • Использует для. в цикле для итерации по каждой из переданных переменных.
  • Отображает имена и значения переменных в текстовом поле.

Доступ к переменным в SWF-файле в коде ActionScript 2.0

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

В данном примере задается свойство экземпляра динамического текста с именем text1 в качестве значения переменной под названием myVariable. myVariable заявляется в параметре FlashVars.

Вы можете загрузить примеры файлов FLA, SWF и HTML, демонстрирующие использование представленного выше кода AS2.

Дополнительные методы

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

  • Примеры использования метода строки запроса представлены в разделе Использование FlashVars с ActionScript 3.0 (блоги Adobe).
  • Для получения сведений о других атрибутах, которые могут использоваться с тегом OBJECT, см. раздел Атрибуты тегов OBJECT и EMBED для Flash.

Ключевые слова: передать; параметры; строка запроса; объект; встроить; tn_16417

На посты, размещаемые в Twitter™ и Facebook, условия Creative Commons не распространяются.

Работа с потоками в СИ. Как скопировать информацию в файл?

Есть следующий код на СИ, в котором ведется работа с «bmp» файлами.
В целом суть кода такова, что я буду копировать содержимое одного bmp файла побайтово в другой, и уже в новом файле работать со скопированными значениями.

Проблема в том, что когда я копирую данные из старого файла в новый , и обращаюсь к ним в функции printf, в новом файле выдается значение 0. Как будто бы ничего не скопировалось.
Мне кажется, что я просто не правильно понимаю принцип работы этих функций, и делаю что то неправильно. Подскажите, как корректно скопировать данные из нового файла в старый, и в дальнейшем изменять их? :(

Обзор программ для работы с Flash-технологией

ак известно, Macromedia Flash дает разработчику возможность хранить информацию в виде исходных файлов (файлы с расширением FLA), в которых видна структура разработки (информация о слоях и т.п.), и в виде компактных SWF-файлов, которые содержат минимум информации и предназначены для размещения в Сети. Во FLA-файлах содержится ноу-хау разработчика, поэтому FLA-файлы выкладываются в Сеть только в том случае, если автор хочет поделиться своими знаниями. После того как автор компилирует исходный FLA-файл в SWF-файл, вся избыточная информация, в том числе и информация о структуре документа, пропадает. SWF-файл можно импортировать во Flash, но при этом не удастся восстановить структуру документа без специального дополнительного ПО. Более того, если автор не хочет, чтобы его творение кто-то импортировал во Flash с целью извлечения доступных для редактирования ресурсов, то на стадии компиляции автор может задать пароль, который предотвратит импортирование SWF-файла во Flash.

Илон Маск рекомендует:  width в CSS

То, что одни пользователи хотят защитить свои ресурсы, а другие, наоборот, вскрыть их, привело к появлению целого ряда программ, содержащих средства снятия защиты (и установки собственной), извлечения ресурсов и декомпиляции кода Action Script.

Современный Action Script является полнофункциональным языком программирования, позволяющим описывать весьма сложные сценарии, поэтому в случае потери кода восстановление его занимает довольно много времени, а программа-декомпилятор позволяет существенно снизить временные затраты при восстановлении утраченного кода. Одни пользователи используют такие программы, чтобы восстановить собственные ресурсы, другие — чтобы усовершенствовать свои навыки программирования во Flash на чужих примерах, а третьи — чтобы присвоить чужие ресурсы. Теоретически возможна ситуация, когда автор потерял свой исходный FLA-файл и ему нужна программа-декомпилятор, однако в подавляющем большинстве случаев эти программы используются для ознакомления со структурой чужой разработки и для экспорта чужих ресурсов.

Надеемся, читатель сам определит для себя способы применения подобных программ, мы же перейдем к описанию их возможностей.

Action Script Viewer 4.06

Разработчик: Manitu Group (http://www.manitugroup.com)

Размер дистрибутива: 1286 Кбайт

Способ распространения: shareware

Цена: 59,95 долл.

Работа под управлением: Windows 95/98/Me/NT/2000/XP

По всей видимости, Action Script Viewer — наиболее мощное приложение из нашего обзора. Программа позволяет извлекать различные типы ресурсов из одного или нескольких SWF-файлов в пакетном режиме. Все символы и слои могут быть сохранены как отдельные SWF-файлы. Растры могут быть извлечены в виде JPG/PNG-файлов, а звуки — в виде WAV/MP3-файлов. Программа позволяет открывать SWF-файлы, внедренные в EXE-проекторы, менять базовые параметры кадра (такие как размер окна и скорость смены кадра) и многое другое. Поддерживаются SWF-версии 3, 4, 5, MX и MX 2004. Наглядное представление о работе программы дает вид панели Timeline View Tab, которая показывает внутреннюю структуру реконструированных слоев (рис. 1).

Рис. 1. Панель Timeline View Tab позволяет реконструировать слои

Информация об SWF-файле может быть представлена в разном виде. Например, панель Frames Pane (рис. 2) дает сведения о каждом кадре, а панель Action Script Pane (рис. 3) отображает декомпилированный Action Script для выделенного в текущий момент объекта.

Рис. 2. Панель Frames Pane

Рис. 3. Action Script Pane

Action Script Replacer 1.0

Разработчик: Manitu Group (http://www.manitugroup.com/)

Размер дистрибутива: 581 Кбайт

Способ распространения: по Сети не распространяется

Цена: бесплатно для пользователей Action Script Viewer и URL Action Editor

Работа под управлением: Windows 95/98/Me/NT/2000/XP

Action Script Replacer (рис. 4) — это инструмент, позволяющий импортировать Action Script из одного SWF-файла для замены скрипта в другом SWF-файле. При этом приложение умеет открывать SWF-файлы, внедренные в EXE-проекторы.

Рис. 4. Интерфейс программы Action Script Replacer

Программа позволяет просматривать все скрипты в SWF-файле (поддерживаются SWF-версии 6/MX и ниже). Action Script Replacer дает возможность внедрять и добавлять Action Script кадра на другой кадр любой временной шкалы (Тimeline), добавлять кадры в любые временные шкалы, просматривать и модифицировать такие базовые параметры, как частота смены кадров, цвет фона и т.п.

Flare 0.5

Разработчик: Nowrap (http://www.nowrap.de)

Размер дистрибутива: 96 Кбайт

Способ распространения: freeware

Цена: бесплатно

Работа под управлением: Windows All, Mac OS X и Linux

Flare — это бесплатный Action Script-декомпилятор, позволяющий извлекать из SWF-файла все скрипты и представлять их в одном текстовом файле. Приложение поддерживает последнюю версию Flash MX 2004.

После инсталляции Windows-версии достаточно щелкнуть правой кнопкой мыши на любой SWF-файл в Windows Explorer, выбрать Decompile из контекстного меню — и Flare обеспечит декомпиляцию SWF-файла в обычный текстовый файл. В дальнейшем текстовый файл можно открыть в любом текстовом редакторе. Если при декомпиляции возникнут какие-либо проблемы, Flare выдаст предупреждение.

MAC OS X- и Linux-версии представляют собой приложения в виде командной строки.

Следует отметить, что Flare экспортирует только Action Script, но не умеет извлекать графику, звуки и т.п. — в отличие от многих программам данного класса.

Flash Decompiler 1.3

Разработчик: Eltima Software (http://www.show-kit.com)

Размер дистрибутива: 3224 Кбайт

Способ распространения: shareware

Цена: 39,95 долл.

Работа под управлением: Windows 95/98/Me/NT/2000/XP

Flash Decompiler — одно из наиболее быстрых и надежных средств извлечения исходных ресурсов из SWF-файлов (рис. 5). Последняя версия 1.30 появилась совсем недавно — 24 мая текущего года. Программа проста в работе: одним щелчком мыши можно извлекать и сохранять звуки, изображения, кнопки, формы, шрифты, тексты, элементы Action Script из любого SWF-файла на жесткий диск. Наглядный поэлементный предпросмотр (рис. 6), дружественный интерфейс с поддержкой скинов, возможность проигрывать SWF-файлы непосредственно во Flash Decompiler, поддержка компрессии SWF-файлов и всех версий Flash — все это делает инструмент удобным и востребованным.

Рис. 5. Flash Decompiler позволяет извлечь ресурсы из SWF-файла одним щелчком мыши

Рис. 6. Программа дает возможности легко извлекать и хранить звуки, изображения, формы, шрифты, кнопки, тексты и т.п.

Gordon 1.3.1

Разработчик: FutureCandy (http://www.futurecandy.com)

Размер дистрибутива: 503 Кбайт

Способ распространения: shareware

Цена: 59 долл.

Работа под управлением: Mac OS 10.1 и выше, совместима с10.2 Jaguar

Gordon — один из немногих SWF-декомпиляторов, работающих под управлением Mac OS X. Недавно программа была обновлена до версии 1.3.1, в которой поддерживается новый стандарт Action Script 2.0.

Программа предоставляет следующие возможности:

• редактирование, экспорт и импорт ресурсов SWF-файла;

• экспорт в PDF и TIFF;

• предпросмотр извлекаемых ресурсов;

• поддержка Flash 3, 4, 5, MX и MX 2004;

• разделение мувиклипов, внедренных в один SWF-файл;

• обновление ранее опубликованных SWF-файлов в компрессированный или некомпрессированный MX-формат;

• установка и снятие защиты на SWF-файлы, изменение размеров кадра фильма, цветового фона, частоты смены кадров без доступа к FLA-файлу;

• шкала Тimeline позволяет просматривать все кадры одновременно.

INPERATOR FLA 1.6

Разработчик: Imperator GbR (www.ave-imperator.com)

Размер дистрибутива: 1071 Кбайт

Способ распространения: shareware

Цена: 79 евро

Работа под управлением: Windows 95/98/Me/NT/2000/XP

IMPERATOR FLA (рис. 7) генерирует FLA-файлы (читаемые посредством Flash MX(6) или выше) на базе SWF-файлов (скомпилированных при помощи Macromedia Flash) и таким образом позволяет изменять содержание SWF-файла даже тогда, когда соответствующий FLA-файл утерян. Программа дает возможность извлекать включенные в файл медиаресурсы (картинки, звуки, видео) и редактировать их в сторонних программах.

Рис. 7. Интерфейс программы IMPERATOR FLA

В перечень восстанавливаемых объектов входят скрипты, кнопки, параметры кадра (фон, скорость смены кадров, размеры кадра и т.п.), картинки разных типов, формы, звук, мувиклипы (MovieClips), текстовые поля и видео. Все эти ресурсы программа реорганизует во FLA-совместимом виде (FLA-compatible terms). Для того чтобы извлечь медиаресурсы, достаточно выбрать пункт Media-Extraction и определить тип извлекаемого ресурса (рис. 8).

Рис. 8. Функция Media-Extraction

Программа позволяет создавать папки внутри результирующего FLA-файла и перемещает все помеченные ресурсы (Font, Shapes, Pictures, Sounds и Videos), найденные в SWF, в соответствующие папки (рис. 9).

Рис. 9. Панель Library Folders

Функция Font To Shape Conversion обеспечивает возможность графически конвертировать весь статический текст в масштабе 1:1, даже если искомый шрифт не установлен на компьютере.

В IMPERATOR FLA также имеется функция Recovery-Protection, позволяющая добавить защитный код на выбранные SWF-файлы, запрещая конвертировать их с помощью IMPERATOR FLA.

Liatro SWF Decoder 4.5

Размер дистрибутива: 812 Кбайт (30-дневная ознакомительная версия)

Способ распространения: shareware

Цена: 39 долл.

Работа под управлением: Windows 95/98/Me/NT/2000/XP

Liatro SWF Decoder позволяет просматривать, анализировать и извлекать ресурсы из SWF-файлов, включая Action Script, кнопки, формы, изображения, спрайты, тексты, шрифты, кадры и звуки. Ресурсы можно извлекать как JPEG-, MP3-, WAV-, text- или SWF-файлы.

Программа SWF Decoder проста в работе: надо лишь щелкнуть мышью по анализируемому SWF-файлу, и во встроенной панели произойдет декодирование фильма и будет сгенерировано дерево, отображающее структуру файла. Вы можете экспортировать любой элемент из этого дерева, а также просмотреть выделенные элементы на базе встроенного Flash-плеера. SWF Decoder поддерживает Flash версии 3, 4, 5 и MX.

Программа позволяет извлекать ресурсы как из SWF-, так и из ЕХЕ-файлов.

SWF Decompiler MX 2004 Pro 40220

Разработчик: SourceTec Software (http://www.sothink.com)

Размер дистрибутива: 2192 Кбайт

Способ распространения: shareware

Цена: 40 долл.

Работа под управлением: Windows 95/98/Me/NT/2000/XP

SWF Decompiler — это инструмент для просмотра и анализа SWF-файлов, позволяющий извлекать формы, изображения, звуки, Flash Video (файлы в формате FLV), шрифты, тексты, мувиклипы и декомпилировать Action Script, переводя его в аккуратный, легко читаемый код (рис. 10). В последней версии (MX 2004 Pro 40220) SWF Decompiler поддерживает Flash MX 2004 и Action Script 2.0. Программа позволяет просматривать как SWF-, так и автономные ЕХЕ-файлы.

Рис. 10. Интерфейс программы SWF Decompiler

После инсталляции SWF Decompiler в панели Internet Explorer появляется кнопка SWF Catcher, посредством которой можно вызывать все функции программы.

SWF Decompiler позволяет отображать компоненты фильма по группам (формы, шрифты, тексты, спрайты, кнопки и т.п). Декомпилированный код выдается с подсветкой синтаксиса.

С помощью программы можно искать SWF-файлы на жестком диске, в Сети или в кэше Internet Explorer и проигрывать их во встроенном плеере.

SWF Extractor 2.2

Разработчик: GlobFX (http://www.globfx.com/)

Размер дистрибутива: 691 Кбайт

Способ распространения: shareware

Цена: 25 долл.

Работа под управлением: Windows 95/98/Me/NT/2000/XP

SWF Extractor позволяет извлекать изображения и звуки из SWF-файлов. Изображения извлекаются как JPEG- или PNG-файлы, а звуки как MP3- или WAV-файлы.

SWF Extractor поддерживает Macromedia Flash 3, 4, 5 и MX-форматы.

Программа имеет режим предпросмотра Detailed List (рис. 11).

Рис. 11. Режим просмотра Detailed List

Одним щелчком мыши можно просматривать изображения и звуки, не обращаясь к внешним средствам просмотра (рис. 12).

Рис. 12. Режим просмотра с иконками Thumbnail

SWF Scanner 2.6.3

Разработчик: Live Tronix (http://www.livetronix.com)

Размер дистрибутива: 782 Кбайт

Способ распространения: shareware

Цена: 19,99 долл.

Работа под управлением: Windows 95/98/Me/NT/2000/XP

SWF Scanner — это удачное решение на случай, если вы потеряли свои исходники. Программа позволяет редактировать некоторые элементы SWF-файла, а также извлекать Action Script (рис. 13), изображения и звуки из SWF-файла (рис. 14). Программа проста в работе и не требует обучения. SWF Scanner 2.5 поддерживает стандарт Flash 5 Action Script.

Рис. 13. Пример извлечения Action Script

Рис. 14. Пример извлечения ресурсов из SWF-файла

Программа позволяет изменять размер кадра и скорость смены кадра без FLA-файла.

Если вам нужно, например, обновить корпоративный логотип или изменить какое-то изображение в Flash-презентации, а исходника нет, то SWF Scanner предлагает простое решение: все, что нужно сделать, — это выбрать файл, который вы желаете заменить, указать новый файл на жестком диске и нажать кнопку Replace and Save (рис. 15).

Рис. 15. Функция смены изображений

При использовании незарегистрированной версии все извлеченные изображения будут иметь метку — красный крест.

Unlock SWF 3.0

Разработчик: Manitu Group http://www.manitugroup.com/

Размер дистрибутива: 322 Кбайт

Способ распространения: freeware

Цена: бесплатно

Работа под управлением: Windows 95/98/Me/NT/2000/XP

UnlockSWF — это утилита (рис. 16), позволяющая удалить/переустановить защиту от импорта (Protect from Import) на SWF-файл. С помощью Unlock SWF можно открывать компрессированные SWF-файлы и сохранять их как SWF-версии 6 (в компрессированном и некомпрессированном виде).

Илон Маск рекомендует:  Что такое код cpdf_set_subject

Рис. 16. Интерфейс утилиты Unlock SWF

При экспорте фильма с помощью Macromedia Flash предоставляется опция Protect from Import для защиты SWF- файла паролем. Flash не позволит импортировать SWF-файл, который был экспортирован с данной защитой, или потребует пароля перед импортированием. Если вы потеряли исходный FLA-файл (обычно SWF доступен всегда, так как хранится на Web), но при экспорте вы указали защиту и забыли пароль, то импортировать SWF-файл во Flash без снятия защиты вы уже не сможете. UnlockSWF позволяет снять защиту с SWF-файла или удалить возможность импорта по паролю: Flash не будет спрашивать пароль и не будет импортировать SWF. Вы также можете добавить защиту на незащищенный SWF, и тогда Flash не будет импортировать SWF.

Swifty Hercules 2.1

Разработчик: Manitu Group

Размер дистрибутива: 288 Кбайт

Способ распространения: freeware

Цена: бесплатно

Работа под управлением: Windows 95/98/Me/NT/2000/XP

Swifty Hercules — это небольшое Windows-приложение — утилита, позволяющая извлекать мувиклипы (Movie Clips) из SWF-файла как отдельные SWF-файлы.

Программа поддерживает SWF-версии до шестой включительно.

Swifty Xena Pro 1.4

Разработчик: Manitu Group

Размер дистрибутива: 156 Кбайт

Способ распространения: freeware

Цена: бесплатно

Работа под управлением: Windows 95/98/Me/NT/2000/XP

Swifty Xena извлекает ресурсы из SWF-файлов, включая Flash.exe, Aftershock.exe, projector-файлы и Director movie-файлы. Программа позволяет заменять исполняемый файл (или фильм) другим SWF-файлом.

Swifty Zeus 2.1

Разработчик: Manitu Group

Размер дистрибутива: 288 Кбайт

Способ распространения: freeware

Цена: бесплатно

Работа под управлением: Windows 95/98/Me/NT/2000/XP

Swifty Zeus позволяет извлекать слои из SWF-файла как отдельные SWF-файлы, что дает возможность изучить послойную структуру документа.

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, ничего, кроме названий, нельзя скрыть от глаз профессионала высокого класса с достаточным уровнем мотивации ��

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

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