Лучший подход для изменения значений переменных в скомпилированном SWF-файле - PullRequest
4 голосов
/ 03 июня 2009

Можно ли изменить значение переменной в скомпилированном SWF-файле (используя as3) через сервлет (скажем, для каждого сеанса), прежде чем вернуть измененный SWF-файл обратно клиенту. Я заметил, что есть несколько утилит командной строки как Open Source, но они, похоже, сосредоточены на AS2. Это возможно с кодом AS3? Какие библиотеки доступны сделать это из Java? (т. е. в основном редактирование результирующего p-кода в разделенном SWF-файле, а затем его повторная упаковка).

В идеале хотелось бы встраивать в основной SWF-токен для каждого сеанса (без использования флэш-переменных), который затем можно использовать для аутентификации запроса. Цель состоит в том, чтобы использовать это слово как еще один шаг в поддержке XSS (в сочетании с файлами разрешений между доменами). Flash vars все еще находится в DOM, но это позволило бы только загрузчику узнать значение ключа (очень сложно для java-скрипта), и мы можем довольно неплохо заблокировать flash, чтобы не подвергать значение каким-либо загруженным SWF-файлам и междоменному домену. Файлы могут ограничивать любое чтение XML-файлов обратно на исходный сервер только исходным SWF (только один из этого домена).

Ответы [ 2 ]

2 голосов
/ 04 июня 2009

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

Нетрудно настроить и автоматизировать Flex SDK с помощью инструментов командной строки (mxmlc или Ant - мы используем оба в наших проектах), но если вы действительно настаиваете на том, что вы хотите изменить двоичные файлы без перекомпиляции * * * * * * * * * * * * * * * * * * Он включает в себя утилиту для распаковки внутреннего потока в исходные данные и повторного сжатия с другим алгоритмом сжатия. В середине этого скрипта (пока данные распакованы), вы можете искать в двоичном файле искомое значение (либо по известному смещению, найденному экспериментально, либо по общедоступной метке члена), изменять данные , перепакуйте поток, и вуаля - у вас есть собственный .swf. Если вы измените значение во встроенном ресурсе (например, текстовом XML-файле), вам может быть проще найти данные для изменения в двоичном файле.

swf_recompress.zip

0 голосов
/ 03 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...