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 随便写点 - No Comments.
windows下载编译tamarin
1、运行环境:python2.5,java1.6,VS2008
2、下载tamarin源文件
tamarin的zip压缩包。
3、将tamarin/platform/win32/armasm.rules 拷贝到 c:/Program Files/Microsoft Visual Studio 9.0/VC/VCProjectDefaults , 如果不拷贝可能出现MMgc(unavailabel)的错误。
4、之前的版本支持vs2003和vs2005,最新的版本只支持vs2008,打开tamarin\platform\win32\avmplus2008.sln,如果下载的源码包里头没有avmplus2008.sln这个文件,那就不是到目前为止最新的。
5、用vs2008打开之后可以看到avmplus,eval,MMgc,nanojit,shell,zlib共6个项目,依次build。在avmplus中可能发现ErrorConstants.cpp中有很多编译错误,主要是多语言引起的,将其它语言都用英语代替即可。注释办法:在ErrorConstants.h文件中注释
//#define AVMPLUS_ERROR_LANG_cs
//#define AVMPLUS_ERROR_LANG_de
//#define AVMPLUS_ERROR_LANG_es
//#define AVMPLUS_ERROR_LANG_fr
//#define AVMPLUS_ERROR_LANG_it
//#define AVMPLUS_ERROR_LANG_ja
//#define AVMPLUS_ERROR_LANG_ko
//#define AVMPLUS_ERROR_LANG_nl
//#define AVMPLUS_ERROR_LANG_pl
//#define AVMPLUS_ERROR_LANG_pt
//#define AVMPLUS_ERROR_LANG_ru
//#define AVMPLUS_ERROR_LANG_sv
//#define AVMPLUS_ERROR_LANG_tr
//#define AVMPLUS_ERROR_LANG_zh_CN
//#define AVMPLUS_ERROR_LANG_zh_TW
除此之外还有一个地方需要改…把警告当错误!选中项目,属性——>配置属性——>C/C++ 将警告视为错误选否。不出意外的话…应该能编译OK
6、将asc.jar拷贝到tamarin\utils\目录下,如果安装了Flex,直接到Flex的安装目录下搜索即可在lib下找到该文件,该文件可以编译as文件为abc文件。
7、新建文件hello.as,写入代码print(”hello, world”);,然后用asc.jar将其编译为abc文件,命令为:java -jar ./utils/asc.jar -import ./core/builtin.abc hello.as ,可以看到结果,并生成hello.abc。
8、使用编译出来的avmplus_sd.exe执行hello.abc,也可以看到相同的结果,执行命令:avmplus_sd.exe hello.abc。在参照编译完写总结时发现有哥们已经写好了。部份原文出处:http://www.wwswf.com/?p=831
Posted: 七月 25th, 2010 under 随便写点 - No Comments.
ubuntu编译lightspark
一、安装git
sudo apt-get install git-core
二、下载lightspark
git clone git://github.com/alexp-sssup/lightspark.git lightspark
三、安装
# cd lightspark
# mkdir build
# cd build
# cmake -DCMAKE_BUILD_TYPE=Release -DCOMPILE_PLUGIN=1 ..
# make
# make install (should be run with root privileges
需要安装以下包
cmake, nasm, llvm-dev (>= 2.7) or llvm-2.7-dev, libsdl1.2-dev, libgl1-mesa-dev, libxext-dev, libcurl4-gnutls-dev or libcurl4-openssl-dev, libxml2-dev, zlib1g-dev, libnspr4-dev, libavcodec-dev, libpcre3-dev, libftgl-dev, libglew1.5-dev, xulrunner-dev, libgtkglext1-dev, libffi-dev
安装命令:
sudo apt-get install cmake nasm llvm-dev libcurl4-openssl-dev libxml2-dev zlib1g-dev libnspr4-dev libavcodec-dev libpcre3-dev libftgl-dev libglew1.5-dev xulrunner-dev libgtkglext1-dev libffi-dev
Posted: 七月 22nd, 2010 under 随便写点 - No Comments.
VS2008控制台程序与WI32应用程序切换
使用VS2008创建WIN32项目时,可选的有Win32控制台应用程序和WIN32项目。这两者的区别是控制台程序运行就是DOS界面,而项目一般用于开发可视化界面程序。两者的主函数也不同,一个是main函数,而另一个则是WinMain函数 。有时我们因创建时的误操作原本想创建WIN32控制台程序却创建成了WIN32项目。这时我们可能需要对他们进行转换。
以VS2008为例:
项目——> 项目属性——> 配置属性——> 链接器——> 系统——> 子系统
这里选择控制台(SUBSYSTEM:CONSOLE) 则表示此项目是WIN32控制台程序
而选择Windows (/SUBSYSTEM:WINDOWS) 则表示为 WIN32项目
Posted: 七月 22nd, 2010 under 随便写点 - No Comments.
开源Flash Player
一、Gnash
http://www.gnu.org/software/gnash/
二、Flirt
三、Swfdec
http://swfdec.freedesktop.org/wiki/
四、Lightspark
http://lightspark.sourceforge.net/
Posted: 七月 20th, 2010 under 随便写点 - No Comments.