获取ActionScript 类信息的另类方法:
前一阵写了个提取 ActionScript 类中符号信息的脚本。算是可用。
用于混淆效果还行。
今天突然想到,在ActionScript中可以用
public function describeType(value:*):XML
flash.util.describeType(KlassName)
获得类的详细信息:
- 对象的类
- 类的属性
- 从类到其基类的继承树
- 类实现的接口
- 类的已声明实例属性
- 类的已声明静态属性
- 类的实例方法
- 类的静态方法
(对于类的每个方法)名称、参数的数量、返回类型和参数类型
这样,就可以写一个类,将其他类的信息都打印出来。
但是,ActionScript工程中无法操作本地文件,只能trace到调试窗口。
于是研究了一下,发现可以利用 AS的 fscommand 将信息以字符串的形式传出来。
于是用Delphi将Flash*.ocx导入成可视化空间。然后响应
OnFSCommand(Sender:Object,const command,args:WideString)
事件。此时有出问题了,Flash的ActiveX控件必须指定影片
ShockwaveFlash.Movie:="c: est.swf"
并且会将这个swf以资源的形式嵌入exe文件中。
Google了一下,终于找到了一个对 TShockwaveFlash的包装类 TShockwaveFlashEx
这个类将指定的swf文件读入内存,之后再赋给 Movie。
这样就可以写一个程序将swf中的信息保存到指定文件了:
c:> swfputs.exe c: est.swf c:a.xml
下面是a.xml的部分内容
这样用Ruby的Hpricot解析这个xml获得其中信息就很简单了