что происходит с SWF, когда он встроен? - PullRequest
5 голосов
/ 26 апреля 2011

У меня есть некоторый код AS3, который встраивает SWF (который сам содержит AS3):

[Embed(source="/assets/myas3libswf.swf", mimeType="application/octet-stream")]
protected static const MyAs3LibSwfClass : Class;  
...
var loader:Loader= new Loader();
loader.loadBytes(new MySwfClass() as ByteArray);
...

Если посмотреть, как это видят флэш-декомпиляторы (Trillix, So-Think и т. Д.), Они просто показывают:

//MyClass_MyAs3LibSwfClass
package mypackage 
{
    import mx.core.*;

    public class MyClass_MyAs3LibSwfClass extends mx.core.ByteArrayAsset
    {
        public function MyClass_MyAs3LibSwfClass()
        {
            super();
            return;
        }
    }
}

Похоже, что они также не предлагают никакого способа извлечения ByteArray.

Конечно, не так просто запутать код AS3.Но куда ушел SWF?Глядя на него с помощью шестнадцатеричного редактора, я даже не могу найти начальный заголовок («CWS») встроенного SWF-файла.

Мой вопрос: что происходит с SWF-файлом, когда он встроен в виде ByteArray?И поддерживает ли какой-либо декомпилятор извлечение внедренного массива ByteArray?

Примечание.Я просто заинтересован в последствиях декомпиляции встраивания.

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

Встроенные данные хранятся в теге DefineBinaryData SWF-файла. Тег SymbolClass затем связывает данные с его определением. ( Спецификация формата SWF-файла )

Если вы распакуете тело SWF надлежащим образом (сжатые SWF начинаются с CWS и используют сжатие zlib после первых 8 байтов), вы увидите заголовок CWS или FWS в необработанных данных.

Ничто из этого не говорит о том, как декомпиляторы обрабатывают данные.

0 голосов
/ 27 апреля 2011

Я нашел здесь статью , в которой подробно рассказывается о встроенном SWF. Кажется, я не смог найти встроенный SWF в шестнадцатеричном редакторе, потому что родительский SWF был сжат. (Заголовок CWS означает его сжатый.)

0 голосов
/ 26 апреля 2011

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

Мне придется попробовать это, когда я вернусь домой.

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