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 随便写点.