swf嵌入时会发生什么?

pal*_*ogt 5 apache-flex flash

我有一些嵌入SWF的AS3代码(它本身包含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);
...
Run Code Online (Sandbox Code Playgroud)

在查看Flash反编译器(Trillix,So-Think等)如何看待这一点时,他们只是展示:

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

    public class MyClass_MyAs3LibSwfClass extends mx.core.ByteArrayAsset
    {
        public function MyClass_MyAs3LibSwfClass()
        {
            super();
            return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

他们似乎也没有提供任何方法来提取ByteArray.

当然,混淆AS3代码并不容易.但SWF去了哪里?使用十六进制编辑器查看它,我甚至找不到嵌入式SWF的起始标题("CWS").

我的问题是:当SWF作为ByteArray嵌入时,会发生什么?并且任何反编译器都支持提取嵌入的ByteArray吗?

注意:我没有嵌入此SWF以进行混淆(还有其他原因).我只对嵌入的反编译分支感兴趣.

Mic*_*vis 2

嵌入数据存储在DefineBinaryDataSWF 文件的标签中。然后,标签SymbolClass将数据与其定义联系起来。(SWF文件格式规范

如果您要适当解压缩 SWF 正文(压缩的 SWF 以 CWS 开头,并在前 8 个字节后使用 zlib 压缩),您将在原始数据中看到 CWS 或 FWS 标头。

这些都没有说明反编译器如何处理数据。