tamarin获取swf文档类

[思路]根据swf_file_format_spec_v10里的说明知道 SymbolClass tag(标签)是swf符号与ActionScript 3.0类相关联的tag。而角色ID(character ID)为0的类为swf文件的主类或称文档类。而我们需要做便是分析SymbolClass tag从中读取出 ID为0的类即可。文档说明中的SymbolClass tag格式:参照http://www.adobe.com/devnet/swf/pdf/swf_file_format_spec_v10.pdf SymbolClass的介绍

NumSymbols   类的个数

Tag2     占2个字节      即character tag ID  

String   存放着我们要找的类名  

获取String的长度:

int GetStringLen()
        {   
            int i=0;
            while (readU8() != 0)
            {
                i++;
            }
            return i;
        }

获取文档类

char * handleSymbolClass(SwfParser &parser, int taglen)
    {
        int        NumSymbols;
        int        *tag;
        char    *ClassName; 
        NumSymbols=parser.readU16();

        tag = new int[NumSymbols]; 
        for(int i=0;i< NumSymbols;i++)
        {
            tag[i]=parser.readU16();

            StringPos=parser.pos;
            StringLen = parser.GetStringLen();
            ClassName = new char[StringLen];
            uint8_t *buffer = parser.swf.getBuffer();
            VMPI_memcpy(ClassName,(void *)(buffer+StringPos),StringLen); 
  
            if (tag[i] == 0)
            { 
                printf("tagid=%d\t",tag[i]); 
                printf("%s \tStringLen=%d\n",ClassName[i],StringLen); 

            }
        } 
    }

Posted: 七月 29th, 2010 under 随便写点.

Write a comment